より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

とりあえずVS再起動で対応 The file 'LaunchScreen.storyboard' conflicts with 'LaunchScreen.storyboard' 

Xamarinを実機デバッグしようとしたところ、

The file 'LaunchScreen.storyboard' conflicts with 'LaunchScreen.storyboard'

f:id:rimever:20200214204543p:plain

たまに起きるんですよねえ。これ。まいったもんだ。

github.com

GitHubのIssueでもOpenのままです。

リビルドでは解消しませんでした。

私はVisual Studio再起動で解消されました。

バッグの肩紐について「サンワサプライ AIRセルショルダーベルト(カーブタイプ) 」

社会人として格好悪いという意見も聞いたりしますが、私はバッグは肩紐をつけて、バッグを肩にかける人間です。

バッグよりバッグの肩紐の方が交換することが多いです。

バッグの肩紐の金具が壊れることがあるので、私は、予備としていつももう一本バッグに入れていたりします。

最近、また壊れたので以下のような物を買ってみました。

一度、秋葉原ヨドバシカメラで見かけたことはあるのですが、裏面の凸凹した部分が衝撃を吸収するといっても、なんか変だなーと辟易した経緯があります。

とはいえ、パソコンなど重い物を入れた状態で肩に食い込むことを経験したので思い切って購入してみました。

カーブタイプというのも初体験でした。

使ってみた感想

やはり、重い物は重いです。

ですが、肩に食い込むのは抑えられていると思います。

この手の肩紐はデフォルトでは一番長い状態なので、使い始めは忘れずに短くすることです。

当たり前ながら、前後で紐の長さ調整を出来ますのでバランス良く短くして、肩にかかるように調整してください。

肩にあたる部分が真っ直ぐではなく、カーブというのは大丈夫かなと思ったのですが、違和感はありませんでした。

Developers Summit 2020 冬に参加。個人スポンサーについて。

event.shoeisha.jp

2/13,2/14は、時期はバレンタインデー。私は寂しくDevelopers Summit 2020で参加してきました。

とはいえ、Developers Summitは参加してみたいイベント。

自社のエンジニアも発表しているため、参加しても業務扱いになるため参加してきました。

全体的なセッションとしては技術技術したセッションより、エンジニアチームとしての観点のセッションが多かった印象です。

個人スポンサー

セッションの感想については会社にレポートとして提出しなければならないので、個人スポンサーについて。

周囲の勧めもあり、個人スポンサーとして参加しています。

本来無料のイベントですが、お金を払うことで個人スポンサーになることができます。

f:id:rimever:20200213213017p:plain

個人スポンサーのアイコンですが、指定のページにリンクされるように出来ます。残念ながら、アクセス数が急激に伸びた!ということはありませんでした。

とはいえ、結果的には個人スポンサーになって正解だったと思います。

机あり、電源あり、Wifiありは超快適でした。

また参加するセッションをいちいち予め選ぶ手間がないのも良かったです。

控室も用意されています。控室の中は入ってのお楽しみということにしておきます。

参考資料

codezine.jp

読書感想「ジョコビッチはなぜサーブに時間をかけるのか」

ジョコビッチはなぜサーブに時間をかけるのか (集英社新書)

ジョコビッチはなぜサーブに時間をかけるのか (集英社新書)

タイトルだけでは、ジョコビッチについての本かと思いきや、そうではなく、テニスの楽しみ方をプロが教えてくれる本となっています。

ここには書ききれないくらいあるので、興味があれば読んで欲しい本です。

トップ100に入るだけでも一流選手

サッカーでいうならば超一流クラブが10チームあれば、レギュラーだけで110人になる。

見てる側からすると、なんだ100位以内か、と思いがちですが、トップ100に入るのはそれだけの価値があります。

バックハンドのクロスの打ち合いがラリーの基本

ネットが真ん中の方が低いため、ネットが高い左右を通すストレートはリスクが高い。そこでクロスになる。

フォアで強打されたくない。

結果、バックハンドのクロスで打ち合うことになる。

そこからいかにタイミングを見計ってリスクを負ったショットを打つかになる。

相手のショットがあって、自分のスーパープレーが生まれる。

筆者もコート端にショットを打って取ったと思ったショットを、フェデラーにポール回しされて点を取られてしまったことがある。

バックハンドには両手持ちか片手持ちかあるが、両手の方が強く打てる。

その反面、全ては両手で打てない。ボレーやスライスといったコントロールを要する場合は片手で打つ必要がある。

両手打ちは、普段は使わない片手で打つことを必要とされるため、感覚がずれやすい。

読書感想「ゲームの企画書」

ゲームの企画書を見せてくださいというところから始まったWeb記事を書籍化した本です。

とはいえ、ゲームの企画書よりもゲームの生誕秘話が語られる本です。

ゲームによって、違う考え方で始まって企画されているんだなあというのを感じさせられます。

平均値は最強?

言わずもが知れている桃太郎電鉄さくまあきらですが、元はジャンプの読者ページ「ジャンプ放送局」を担当していました。

その読者ページで見つけたスーパーデバッガーたちにプレイさせて反応を見て、徹底的にテストして仕上げていったそうです。

スーパーデバッガーたちは、すごい頭が良いとかではなく、「平均値のプレイヤー」

日本人の平均値だからこそ、彼らが面白いと感じたら、多くのプレイヤーも面白いものであり、彼らがつまらないと感じたら、多くのプレイヤーがつまらないと感じる。

当時600万部近く売れていた「週刊少年ジャンプ」を体験した人間からこそ。

データを見ただけでどんなゲームになるか、わかる

ローグをやり込んで、不思議のダンジョンシリーズを手掛ける長畑氏は、アイテムやモンスターのデータを管理しているエクセルを見れば、どういうゲームになるか、ある程度まで判断がつく。

それはチュンソフトでも長畑氏しか出来ない。

また、ある境目の確率というのがあって、そこを1%ずれるだけで「当たりやすい」「外れやすい」の評価が切り替わる。

例えば、アイテムを投げて当たる確率と剣が命中する確率は実は数%しか違わない。

MarkdownからGoogleスライドを生成するmd2gslides

社内で勉強会をしているのですが、発表は出来るが、資料を作る時間はないという話は聞きます。

業務中の資料は、スライド形式ではないため、勉強会には不向きですし、エンジニアからするとスライドを作るのはやや手間です。

markdownからスライドに出来ると良いのではないかということで、md2googleを試してみることにしました。

github.com

上記のリポジトリのREAD.mdにも書いてありますが、インストールはnpm経由でインストールするのでnode.jsが必要です。

npm install -g md2gslides

変換は以下のようなコマンド。

md2gslides slides.md

こんなMarkdownを書いてみます。

# タイトル
## rim

---

# 概要

Google Slidesに変換

---

# Section title & body slide

## This is a subtitle

This is the body

---

# 100%中の100%! {.big}

f:id:rimever:20200204181157p:plain

課題はWindows...

WindowsでのインストールはPythonが見つからない、npm set python {python.exeのパス} を指定したのですが、今度は別の箇所で例外が発生してうまく行きませんでした。

ぐぬぬ

「Cookpad Tech Kitchen #23 Live・動画配信の開発最新事情」に行ってきました。

cookpad.connpass.com

エンジニアとしては一度は行ってみたい会社が、Cookpad

誰もがですが、繰り上がりでなんとか参加することができました。

当日で繰り上がって、参加になってもなんか微妙な気分なんですよね。

まずはノベルティーとミニハンバーガー。飲み物ももらえます。

会場はおしゃれだけど、後ろの方じゃ、画面上半分しか見えなかったです。抽選で選ばれてからが始まりです。

また、やや早口なのでついていけないところもありました。

資料は公開されているので読み返すと、本当にいい発表だったんだなあと後になって気づかされます。

次、機会があれば早めに来て前の席に座ろうと思います。

早めについたから恵比寿駅でビールを飲んで時間を潰してしまったことを後悔しています。

プロの出張料理人に作ってもらった料理なのですが、懇親会の料理がうまいです。これには驚きました。

Slidoを用いて匿名の質問が出来るのですが、こちらについても積極的に答えてくれます。もっと質問すればよかったなあ。と。

CookpadTV株式会社

動画配信をスピーディーに進めるべく子会社化。

iOS/Android/FireTVにも対応。

Android Cookpad Liveの開発改善

当初はiOSAndroidの各端末の設計を揃えるつもりでVIPERを使っていたがMVVMを導入。

MVVMの良いところとして、Jetpackが活用しやすい。

FireTV/Andoroidが一つのプロジェクトの中で動いている。

コメント表示改善

  • コメントはバッファリングしてまとめて表示
  • アニメーションは無効

やりたいこと

  • Coroutineの導入
  • テストコードが書けていない

アーカイブ配信でもライブ感を味わいたい

  • アーカイブ配信では動画しか見れない。
  • もっとライブ感を増して、ライブで見たいと思わせたい。
  • アーカイブ配信でもコメントを流そう。
  • 配信時だけではなく、24時間、コメント配信に耐えられること。
  • アーカイブコメントが、Live配信に影響を及ぼさないこと。

採用技術

DBは、DynamoDBを採用。

これからの成長目標などを考えて、Fluentdを採用。

cookpadLiveのライブ配信基盤

MediaConvert

アーカイブのトランスコーダとして利用。

柔軟なトランスコードの機能があるので、オンデマンドの配信が増えたときに使えそうなので採用した。

動画の本数に応じてジョブを積んでくれる。なので、便利。

Media Liveの配信リソースのコストがかかる

  • 有名人が参加すると数万人の閲覧者
  • 1,2分起動するのに時間がかかる
  • クラウドでもリソースは無限ではない。アカウントによって使えるリソースが異なる。

storeLive におけるスーパーでアプリを動かし続けるためにやったこと

StoreLiveについて

  • スーパーに配置する。
  • ライブ配信にも対応している。
  • AndroidTVで動いている。

再生する動画

月~水 木~金

の二種類の動画しか流さない。

金~日に強制動画が再生され、月~金に差し込み動画が再生される。

ユーザーの操作なしにデータを更新して再生する。

自動更新が必要になってくる。

ポーリング

10分に1回。 取得したデータはDBに保存。

オフライン対応

  • 理由はネットワークが不安定。
  • ネットワーク起因がほとんど。
  • 裏側で通信しているので、いつの間にか止まっていたということがあり得る。
  • 一度取得したら、ある程度動くという対応が必要。

Room+LiveDataを使う

  • 取得したデータをDB保存するのに便利。
  • Observerパターン。

MDM

問合せの都度、ログを見て調査をしていたが、メッセージ通信で操作や情報取得が出来るようにした。

Amazon IoTを使っている。

MQTTメッセージを使った端末操作

kinesisとlamdaを利用してDynamoDBに格納している。

https://www.ibm.com/developerworks/jp/iot/library/iot-mqtt-why-good-for-iot/index.html