開局5周年を迎える「ABEMA」が抱える課題

山中勇成氏:「『新しい未来のテレビ』を目指すABEMA配信システムの再設計」というタイトルでお話しいたします。まず自己紹介ですが、山中勇成と申します。ハンドルネームで「みゆっき」という名前でも活動しています。

2017年に株式会社サイバーエージェントに新卒入社をして、今は「ABEMA」のコンテンツ配信チームで、主にバックエンドのエンジニアをしています。また、未踏スーパークリエータにも認定されています。「Twitter」と「GitHub」をよかったらフォローしてください。

スライドは、僕の機材ですが、趣味でこういう大きいカメラを担いだり、ライブイベントの配信をしています。最近買ったのはSONYのスイッチャーです。これはぜひおすすめです。

このセッションのアジェンダですが、「5周年を迎えるABEMAが抱えるもの」「ボトムアップからのプロジェクト発足」「ぼくのかんがえたさいきょうの配信システム」という3本立てです。また、まとめと今後でお送りいたします。このセッションは、どちらかというと技術要素がちょっと少なめになっています。

「5周年を迎えるABEMAが抱えるもの」です。ABEMAは、2021年4月で開局5年を迎えました。開発期間からすると、6年ぐらい動き続けているサービスです。

一応おさらいですが、ABEMAで配信しているコンテンツは、主に大きく分けて2種類です。テレビとビデオに分かれています。テレビでは、24時間365日のリニア型配信をしていて、映像ソースとして納品された動画や、スタジオからの生配信も行っています。スタジオと納品された動画が配信システムに取り込まれ、CDNなどのネットワークを通してユーザーの視聴デバイスに届く仕組みになっています。

同じくビデオも、納品動画から配信システムに取り込まれてユーザーの手元に届くようになっています。

頭を悩ませる「組織的負債」「運用的負債」「本質的負債」

ユーザー数は右肩上がりで、売り上げもあるのですが、それ以上に大きく抱えているものが負債です。

どのような負債かというと、意図的な負債です。今もチームは3人ですが、開発当初はすごく少ない人数で、短い期間で開発したことによってコード品質がすごく悪いです。見通しの悪いコードになっている部分などがあります。サイバーエージェントも、もともとは映像系の会社というよりインターネットのサービスを作る企業で、その中での精鋭を集めて作られていて、映像知識がそんなになかったので、どうしても配信技術の知識不足によるコードの負債を抱えています。

また、変化による負債はGoなどの言語やそれらが利用するライブラリ、それからミドルウェアのバージョンアップに追従できていなかったためにあります。

ほかにも、ABEMAが開発された当初はエイチレスのレイアウトシステムみたいなものが世の中にそんなになかったのですが、今ではAWSなど、いろいろなところでマネージドのプレアードソリューションも出てきていて、今であればそちらを使ったほうが便利なのではという課題もあります。新しい技術やサービスを追従したいのですが、追従できていないという負債を抱えています。

これらは一般的に技術的負債と言われていて、CA(サイバーエージェント)の森さんが書いた記事がとてもよいので、もしよかったらご覧ください。

ただ、5年間の負債はこの技術的負債だけではないと僕は思っています。その1例として、組織的負債があると思っています。これは映像ソースから、どのようにクラウド上に打ち上がるかを簡単に表した図ですが、映像ソースがあって、エンコーダーがあって、それがサーバーに取り込まれて、CDN(コンテンツ・デリバリー・ネットワーク)、配信されるという感じです。

映像ソースであれば映像の現場の技術のチーム、エンコーダーであったら私たちの配信の開発チーム、サーバーであったらAPIのチーム、CDNはSREのチームというようにそれぞれの部門、部署ごとで見ているのですが、エンコーダーに打ち上げの部分を見る人がいないという組織的負債があるかなと思います。

これをもうちょっと詳しく説明します。配信技術と配信システムの中間レイヤーの責任者がいないので、そこで起きた問題は、どちらかが解決してくれるだろうみたいになって、これは組織的にすごくよくありません。こういう問題があると思っています。

それから運用的負債は、現場の負荷を考えないということです。当初は運用でカバーできるかもしれないと思っていたのですが、実際にはけっこう負荷になっていて、その負荷がオペレーションミスにつながったり、もしくは現場でできることを何かしら制限しているかもしれないという運用的負債もあります。

ABEMAは、数年間でけっこう求めるクオリティが変化しています。ですが、根底にある技術やプロセスが変わらないことによって、そのクオリティを満たせないという本質的な負債があると思っています。僕は入社してこの現実に直面して頭を悩ませていました。

現場にプロブレムとトライのヒアリングを行った

ということで第2章、「ボトムアップからのプロジェクト発足」です。この悩みは、バカンスを楽しむCTOに僕が「今のABEMAはこういうところに課題があると思うのですが」と、先ほどの負債の例とともに伝えたところ「YOU!! やっちゃいなよ」と、すごく覚醒したCTOに圧倒されて、僕がこれをなんとかすることになりました。

なんとかしなくてはいけないのですが、僕がなにかを決めるうえでブレても仕方ないので、ブレない軸、=(イコール)ミッションを決めました。AbemaTVをインターネットのマスメディアとして完成させるというミッションを掲げました。

このミッションを叶えるために、インターネットのマスメディアにはどういうことが必要なのかを洗い出しました。それがスライドの右側にあるものです。

これらをもとに、僕の知識だけではなく現場の意見を取り入れたいので、有識者を集めていろいろなヒアリングをしました。例えば配信現場の運用チーム、実際に配信に携わっている技術チーム、私たちエンジニアを集めて実際にワークを実施しました。

先ほどあったミッションのインターネットのマスメディアとして必要なことだったり、KPTのプロブレムとトライ、つまり今どんな現場に問題があって、どんなことをやってみたいのかをいろいろな方からヒアリングしました。詳細はお見せできないのですが、ざっくりホワイトボードにこのような感じで貼っています。

これをもとに、僕がミッションを達成するための改善案をまとめました。ここには16個あるのですが、主に3つのテーマに分けて提案しました。先ほどの組織的な改善だったり、ABEMAはこうあるべきだという本質的な改善だったり、あとは現場で運用の負荷になっている部分の改善だったりをテーマごとに分けました。

次世代のインジェストアーキテクチャ「SUPERBIRD」

サイバーエージェント用語で「当てる」という言葉があるのですが、社長に「当てる」、つまり提案しました。

先ほどの提案とともに、今のABEMAにはこういうところに問題があり、こういう改善を用意したのですがというところで、いろいろとアドバイスを貰って、晴れてプロジェクト発足になりました。

プロジェクト発足といっても書類を書いたり申請をしたりするわけではなく、実際に改善に向けて動き始めたという感じです。これがおよそ2年前です。

このほかにも、ちょうど同じタイミングでいろいろなプロジェクトが発足しました。例えばスタジオの機材更新や、配信システムの更新です。サーバー側の更新プロジェクトや、ニュースの低遅延化や、ABEMAの開発と現場の技術者の横軸のつながりを意識したミーティングの体裁等も立て付けました。

ということで、ここから第3章の本題です。「ぼくがかんがえたさいきょうの配信システム」を紹介いたします。その名も「SUPERBIRD」で、僕が勝手に付けたのですが、先ほど社長に提案した改善案の1つです。

SUPERBIRDと言われてもなんのこっちゃって感じだと思うのですが、これは社内のコードネームで、次世代のインジェストアーキテクチャを構築するプロジェクトです。インジェストとは何ぞやとなると思うのですが、簡単に言うと現場からサーバーまでのアップロードのことを指しています。

下の図を見ていただくと、映像ソースがあって、エンコーダーがあって、サーバーがあって、CDNがあるのですが、この映像ソースからサーバーまでの打ち上げ部分をインジェストといいます。

SUPERBIRDは、ABEMAにおける課題解決と将来の投資が目的です。いろいろな課題があると先ほども言ったのですが、配信段でも配信トラブルや、画質がちょっと汚いという問題などの課題解決と、4Kを見越した将来の投資をターゲットにしています。SUPERBIRDとして、これらを実現するための次世代のインジェスターアーキテクチャを設計するのが目的です。

よりよいインジェストアーキテクチャとは何かと考えると、1つは品質が高いことです。これは映像、音がよいということですが、4Kとか、例えば音であればビットレート上げるのもそうなのですが、制作者の意図をそのまま反映できます。

いくら4Kであっても、ブロックノイズがあると、制作者の意図をそのまま表現できているとは言えません。制作者の意図を、できる限り近いかたちで反映できることにこだわります。

あとは遅延が短いというのも重要なポイントかなと思います。安定しているのがもちろん重要で、1つ目は途切れない。もし途切れたとしても冗長構成に切り替えが可能であること。あとは第三者要因に影響されないのも大きなポイントかなと思います。

それから運用しやすいという点では、オペレーションが単純であること。先ほど現場での負荷の話をしましたが、やはりオペレーションが複雑だとどうしてもミスが発生してしまうので、なるべく単純なオペレーションであることが大事です。

また、システムが集中管理されている状態とトラブルがあったら即座に対応できるのが運用しやすい点になります。

ほかにも柔軟であることも重要かなと思っています。ABEMAだとけっこういろいろな場所で配信するので、スタジオの増減に柔軟に対応が可能であること。スタジオの増減や位置が1つ重要かなと思っています。

あとは、入出力フォーマットの変化に短期間で移行可能であること。ITの伝送技術は年々新しい技術が出ているので、今ターゲットとしているフォーマットから、新しいフォーマットに移行するとなった時に、短期間で移行可能であることは重要かなと思っています。

また、ABEMA以外のCA(サイバーエージェント)のサービスでも利用可能だと、よりよいと思ったので、よりよいインジェストアーキテクチャに向かって新たなものを作っていきました。

(次回へつづく)