- 株式会社AbemaTV
- エンジニア
- 降矢 大地
「AbemaTV」アプリ開発の裏側。技術的チャレンジを絶やさない、組織文化とは
〜開局5ヶ月で800万DLを突破した「AbemaTV(アベマティーヴィー)」。その開発の裏側と、それを支える「技術でチャレンジし続ける」文化を公開〜
2016年4月に本開局し、開局5ヶ月で800万DLを突破した、インターネットテレビ局「AbemaTV(アベマティーヴィー)」。株式会社サイバーエージェントと株式会社テレビ朝日の出資により設立された同社は、「インターネット発のマスメディア」を目指し、そのサービスは最新の技術によって支えられている。
同サービスを運営する株式会社AbemaTVでは、「技術選定の裁量を、すべて現場のエンジニアに与える」方針を掲げている。その結果、「AbemaTV」では、「Protocol Buffer(プロトコルバッファー)」「リアクティブプログラミング」などの、新たな技術を随所に取り入れている。
今回は、同社でiOSアプリを担当する伊藤 恭平さんと、Androidアプリを担当する降矢 大地さんに、その開発の裏側と、「新しい技術にチャレンジし続ける」仕組みについて、お話を伺った。
10人の小さな開発チームから、AbemaTVは始まった
伊藤 私は前職の頃から、ネイティブアプリのエンジニアをしています。サイバーエージェントに入社してからは、「Ameba」アプリやニュースメディアアプリ、ウェブサイト作成サービス「Ameba Ownd」などの開発に関わりました。現在は「AbemaTV(アベマティーヴィー)」で、iOSの開発を担当しています。
降矢 私は2012年に株式会社サイバーエージェントに入社し、AndroidアプリやWebのフロントエンドのエンジニアをしています。伊藤とはニュースメディアアプリ、「Ameba Ownd」含めて、3年弱ほど一緒のプロジェクトで開発をしています。
今はAbemaTVのAndroid開発を担当していますが、それまで動画サービスのプロジェクトを経験したことはありませんでした。おそらく、いまAbemaTVにいるエンジニアの大多数も、動画領域の開発は未経験だと思います。
伊藤 私たちがプロジェクトに入った2015年の7月ごろは、まだ全体でも20人、開発メンバーは10人くらいの規模でしたね。開発が進むにつれて、人が増えていきました。今ではエンジニアが所属する開発局だけでも30人ほどが在籍しています。
技術検証を重ねながら、無茶な要望にも答える
降矢 「AbemaTV」の開発は、まず1、2ヶ月ほどかけて、動画再生に関する技術検証から始めました。Googleが公開しているOSSの「ExoPlayer」などを試して検証を進めていましたね。
その頃は、要件も「AbemaTVで放送するコンテンツは、オリジナル制作もしくは調達で多数揃えるので、たくさんの番組をとにかくスムーズに再生できるものを作ってくれ」というものでした。「本開局時に数百チャンネル提供することになったとしても、それを全部スムーズに再生できるようにしてくれ」と言われて、「マジか」と(笑)。
伊藤 そこからデザイナーも入って、全員でモックを作り始めました。プロトタイプだと、インタラクションもよく分からないので、技術検証も兼ねてしっかりと動くモックから作り始めました。
いわゆる「サクサク動く」ための検証期間が、とにかく長かったですね。サーバーと連携する前の段階で、5ヶ月ほどかけてモックを作っていました。
降矢 まだモックの段階なのに、運用の要望をもらったこともありました(笑)。番組表の機能があるのですが、そこに実データに近いものを流し込んだらどう見えるのかを検証したい、という話がビジネスサイドの方からあって。モックでありながら、正式版のように「それっぽく」動画を再生できるものを作るために、ちょっと苦労しましたね。
最初から、サイバーエージェント社内でも稀に見るほど、非常に大きなプロジェクトとして予算を投入していたので、プレッシャーはありました。「なんとしても成功させないと」という気持ちから、みんなで頑張っていたという記憶があります。
動画再生だけでなく、実は「番組表」が高難易度
伊藤 動画をスムーズに再生させるというのは、もちろん大変なのですが、実は番組表の実装も技術的に難しかったですね。
▼AbemaTVの番組表
「AbemaTV」は現在約30チャンネルを提供しているのですが、開発段階では「例えば数百チャンネルあったとしても、2週間分のすべての番組情報を、ユーザーが縦横にスクロールして、自由に閲覧できるようにしてほしい」と要望を受けまして…。これは難易度の高いものでした。
▼AbemaTVのチャンネルリスト
まず、テキストデータだけでも20MBくらいのデータ量になるんですよ。iOSやAndroidのアプリって、1つのアプリに割り当てられるメモリ量が限られているので、その懸念をクリアしたうえで、サクサク動かす必要があると。
縦方向のリストだと、OSが最適化してくれたりするのですが、番組表は横にも斜めにもスクロールできるようになっているので…。単純に300個リストを並べてしまうと、メモリの上限を超えてアプリが落ちてしまうので、見えていない部分はメモリを解放するような仕組みを、自前で実装しました。
降矢 私は番組表の担当ではなかったですが、Android版も、番組表を担当するメンバーは苦労していましたね(笑)。私の担当部分では、通信量の制御が大変でした。
動画配信サービスは、すぐに通信料が増えて、モバイル回線だと通信制限がかかってしまいます。Wi-Fiのときは、一番きれいな解像度で動画を提供すれば良いのですが、モバイルなら多少画質を落として、通信量を節約する必要があるんです。
特にAndroidは、端末によって解像度がバラバラです。解像度の低い端末にきれいな動画を見せても意味がないので、通信環境、端末の解像度に応じて動画の解像度を調整するのが大変でした。
「Protocol Buffers」「Rx」など、新しい技術への取り組みも
伊藤 弊社では、現場のエンジニア主導で、新しい技術にどんどんチャレンジをしています。例えば、「JSONはもう古い」ということで、アプリの通信には「Protocol Buffers(プロトコルバッファー)」を使っています。
新規サービスをゼロから開発するので、新しい技術に挑戦しやすいというのは利点ですね。試した結果、結局手戻りになってしまうこともありますけど(笑)。それでも、やってみないことには何も分からないので。
降矢 あと、最近流行っているもので言うと、「リアクティブプログラミング」ですね。「RxJava」や「Flux」をネイティブアプリに取り入れています。WebのフロントエンドやiOSも同じ思想で設計しているので、例えばAndroid担当の私が、仮にiOSを担当することになっても、アーキテクチャが統一されていて理解はしやすいですね。
伊藤 次に同じアーキテクチャで開発するかと言われると、まだ分からないですね(笑)。どんな技術も一長一短なので。ただ、Rxの採用については現時点では成功だとは思っています。「次も使いたくなるかどうか」が、新しい技術を取り入れて、成功なのか失敗なのかの分かれ目ではないでしょうか。
こういった、採用する技術の裁量は、すべてプロジェクトに属するエンジニアに任せられています。承認のプロセスなどは無く、説明責任さえ果たせば、技術的なチャレンジをしていける環境ですね。
「インターネット発のマスメディア」に向けて、技術を高めていく
伊藤 弊社では、研修制度の一環として海外のカンファレンスに参加できます。Googleが開催する「Google I/O」や、Appleの「WWDC」などにも積極的に参加しています。会社としても、若いメンバーも一緒に連れていって、一緒に学んできてほしいという方針ですね。
カンファレンスに参加すると、講演を聞くだけでなく、現地の技術者との交流もできます。私も、Appleの社員とランチをして情報収集をしたり、現地で働いている日本人エンジニアにいろいろと相談しました。
このような制度は、エンジニアの技術力を高める上で、重要ですね。
降矢 他にも、サイバーエージェントグループでは、各プロジェクトのメンバーが集まり、新たに取り入れた技術の成功例・失敗例を共有する会を実施しています。さまざまなサービスを提供しているので、他のプロジェクトの知見を取り入れやすいんです。
社内外の勉強会も頻繁に行われていて、AbemaTVの技術カンファレンスも10月に開催する予定です。
動画関連の技術は、年々進化していて、エンジニアにとってはまたとない挑戦ができる魅力的なドメインだと思っています。今後も、AbemaTVを成長させるため、常に新しい技術にチャレンジし続けていきたいですね。(了)