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

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

「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