エンジニアとしては一度は行ってみたい会社が、Cookpad。
誰もがですが、繰り上がりでなんとか参加することができました。
当日で繰り上がって、参加になってもなんか微妙な気分なんですよね。
会場はおしゃれだけど、後ろの方じゃ、画面上半分しか見えなかったです。抽選で選ばれてからが始まりです。
また、やや早口なのでついていけないところもありました。
資料は公開されているので読み返すと、本当にいい発表だったんだなあと後になって気づかされます。
次、機会があれば早めに来て前の席に座ろうと思います。
早めについたから恵比寿駅でビールを飲んで時間を潰してしまったことを後悔しています。
プロの出張料理人に作ってもらった料理なのですが、懇親会の料理がうまいです。これには驚きました。
Slidoを用いて匿名の質問が出来るのですが、こちらについても積極的に答えてくれます。もっと質問すればよかったなあ。と。
CookpadTV株式会社
動画配信をスピーディーに進めるべく子会社化。
Android Cookpad Liveの開発改善
当初はiOSとAndroidの各端末の設計を揃えるつもりで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