2017年10月21日、東京都渋谷区のTECH PLAY SHIBUYAにて、株式会社AbemaTVによる主催で「AbemaTV Developer Conference 2017」が開催されました。その模様をレポートします。なお、発表資料はイベントのWebサイト 、動画はFRESH! で公開されているので、詳細はそちらを参照してください。
AbemaTV将棋チャンネルの配信技術 ~全国完全生中継への挑戦~
配信技術を担当する藤崎 智氏の本講演では、「 AbemaTV」で将棋チャンネルを配信する際に利用している技術について解説されました。配信のために光工事をするなどして安定した配信を行えるようにしているそうです。中には会場が国宝であるため工事が行えず大変だったなどの苦労話も聞くことができました。
藤崎 智氏
AbemaTVの画質定義~ラウドネスマネージメント
トランスコードエンジニアの御池 崇史氏による本講演では、「 AbemaTV」の録画放送で利用する配信用動画ファイルについて取り上げられました。フォーマットがまちまちな素材をどのように配信可能な形式に変換しているのか解説されました。画質はSSIM、PSNRという数値で表現することにより、品質を担保しているそうです。
中でも映像中の音声の大きさを調整するラウドネスマネージメントについては詳細に解説され、制作年代や家庭版、劇場版などによっても異なる特性を持つ音をどのように調整しているのかの解説が興味深かったです。
御池 崇史氏
AbemaTVモバイルアプリの開発体制と開発プロセスの話
iOSエンジニアの波戸 勇二氏による本講演では、特にiOSアプリの開発体制と開発プロセスについて解説されました。
スクラムを採用しているとのことですが、開発とQAが重複する期間が進めにくいので、重複しないようにするなど工夫しているそうです。GitHub Flowをベースにした開発で、ブランチ戦略についても詳細に解説がありました。その他、Slackにさまざまな情報を通知していること、QAを効率化するたためにデバッグメニューを設け、CPUやメモリの使用率はもちろん、リモート/ローカル通知をシミュレートできるようにしていることなど、非常に実践的な内容でした。
波戸 勇二氏
デザインのBefore & After
デザイナーの松本 俊介氏と清水 康秀氏による本講演は、今回唯一のデザインに関するものでした。スマートフォンで上部に表示していた通知が指が届かなくてタップしづらいため下部への表示に修正するなどさまざまな改善をしているそうです。ビデオページではサムネイルを大きくしたり、文字を多くしたりなどの改善をしており、Before、Afterのスクリーンショットを出してわかりやすく解説していました。
また、再生中の番組のTwitterからの流入が少ないのを調査したところ、ツイートからジャンプしたときにその放送が終了していると現在放送中の番組の情報が表示されていたそうです。こちらを該当番組の情報ページにジャンプするようにするなどを行ったそうです。
松本 俊介氏
清水 康秀氏
AbemaTVにおけるモニタリング
サーバサイドエンジニアのLe Van Nghia氏による本講演は、各種情報のモニタリングに関するものでした。Prometheus という監視ツールを利用しているとのことで、その理由としてKubernetesと親和性が高い点、性能が良い点、PromQLというPrometheusに用意されたデータベースを操作する言語が使いやすい点などが挙げられるそうです。
そのほか、監視項目が増えて1つのPrometheusでは厳しくなったときの対処や、Configファイルを自動生成してくれるPrometheus Operatorについてなどさまざまな解説がありました。また、トラフィックをリアルタイムに可視化するためにPromviz というOSSを開発し利用しているそうです。
Le Van Nghia氏
Microservices下におけるWebの負荷対策 -SSR×SPA×PWAへ向けて
Webエンジニアの大泉 明日香氏による本講演は、今回唯一フロントエンドを扱うものでした。人気番組のいくつかでは想定以上の負荷がかかってしまった結果障害が発生したのですが、その解消に時間がかかってしまったそうです。その原因を調査した結果複数の原因が見つかり、それぞれ行った対策を紹介していました。中には来週くらいに行われる改善もあるそうで、今後もWeb版の「AbemaTV」のパフォーマンスを上げていきたいとのことでした。
大泉 明日香氏
AbemaTVを支えるアプリの優しさ
Androidエンジニアの小形 昌樹氏による本講演は、アプリ側にもユーザー側にもする優しさである、ネットワーク通信量をいかに抑えるかについてのものでした。プレイリストを余分に取得してしまう問題を発見して解消した模様や、さまざまな条件を考慮してビットレートを動的に変更していることなど、通信量を抑えるさまざまな工夫が紹介されました。
小形 昌樹氏
MPEG-DASHによるリニア型配信
サーバサイドエンジニアである山中 勇成氏による本講演では、HTTPでストリーミングを行う統一的な規格MPEG-DASHについて取り上げていました。このMPEG-DASHでメディアの情報を記述するファイルであるMPDについて、AbemaTVで利用しているものを参考に要素別に解説されました。あらかじめ編成された番組表に従って行う配信であるリニア配信をMPEG-DASHに対応したことについてさまざまな解説がありました。
山中 勇成氏
AbemaTVの裏側 - 大規模トラフィックを支える技術と負荷対策の話
インフラエンジニアである岡田 翔乃介氏による本講演では、まず負荷試験についての話がありました。
Locust というPython 製の負荷テストツールを利用しているとのことで、採用の理由としてスケールに強いこと、Google Kubernetes Engine と相性が良いことを挙げていました。将来的にはChatOps化を進めていくなどしていきたいとのことです。気軽に限界性能試験をしたいときは、wrk というLua でシナリオを記述できるHTTPベンチマークツールも利用しているそうです。
そのあと自分たちが遭遇したトラブルについての紹介があり、MongoDB Cloud Manager やCloud Bigtable を利用していて遭遇したトラブルや、使いやすくするための工夫などについて解説されました。
岡田 翔乃介氏