サイバーエージェント執行役員 長瀬慶重氏インタビュー
AbemaTVはどのように立ち上げられたか?
2016年11月07日 09時00分更新
GoogleのクラウドでマイクロサービスをGo言語で開発した
―― システム的にはどんな構成になっているんですか?
長瀬 全体的には、Googleのクラウドプラットフォームを活用しておりまして、その上で昨今言われているマイクロサービスというアーキテクチャのもと、クラウド上でサービスを組んでいます。広告の配信のシステムも、基本的にはすべて自前で作っていて外部のソリューションを使っていないってところは結構驚かれますね。もちろん映像のトランスコードをやるとことなどは外部の技術を使っていますけども。
―― なるほど全部クラウドにのっている。御社にマシンはないんですね。
長瀬 ないですね。
―― それいつぐらいからそうなったんですか?
長瀬 たとえば、ツイキャスとか生放送を気軽にスマートフォンからできるような時代になってからは、あとはストリーミングを受けるのをクラウド上に置いちゃえば基本的にはできるようになったんですね。ここ数年でしょうかね?
―― 今回の場合は、テレビ朝日の人たちが自分たちのテレビ番組をエンコードして、それをクラウド上の御社の管理領域に送るわけですね。
長瀬 そうです。映像を受けて、そこから映像を最適にトランスコードしていきます。僕ら画質を5つ作っているんですよ。ユーザーの回線スピードに合わせて、画質を落としたりあげたりしているんですね。それと、通常のNetflixさんとかYoutubeさんは、1個の動画に対して1つのURLが対応していますが、大きな違いは、1チャンネルが1つのURLなんです。たとえば、12~13時はこの映像のストリーミングを流してここには広告を流してというふうなことをやるわけです。このストリームを作る作業をやったら、あとはAkamaiさんのCDN(コンテンツデリバリーネットワーク)を介して映像をユーザーに届けているわけです※1。
―― やっぱり、Akamaiなんですね。
長瀬 ええ。Akamaiを介さないと、全部のアクセスをGoogleのクラウドで受けてしまってレスポンスが悪くなるので、CDNを使ってキャッシュをインターネット上にばら撒くと言った感じですね。
―― テレビ朝日さんから番組ごとに送られてきたものを、Googleのクラウド上でベルトコンベアのように流れていくチャンネルの上に順番にのっけていって、その出ていく先がAkamaiであると。
長瀬 そんな感じですね。
―― 5つの画質はどこで選択されるんですか?
長瀬 クライアント側で「ネットワークに余力があるなぁ」と思ったら画質を上げていきます。「AbemaTV」見ていただくと最初画質の荒いところから始まって、キュッと綺麗になるんですけども、それはUX的に早く画像を表示したいという狙いもありますし、ユーザーのネットワークの環境に応じて画質を最適化したという側面もあるんですね。
―― 30秒〜1分ぐらいの遅延といわれましたが、5つの画質を同時にやっていて、高画質のエンコードやるための負担が大きいのですかね?
長瀬 回線スピードの速いところはどんどん先読みして行ったり、逆に悪いところではパケットが溜まってしまって、うまく映像がコントロールできなくなる可能性があるんです。なので、僕らの中で映像を溜め込んでそれを流すっていうことで安定的にユーザーが映像が途切れずにどんな環境でも見れるようになっています。そこのためてる時間が30秒とかなんですね。
―― なるほど。マイクロサービスは、どれくらい数としてはあるんですか。
長瀬 基本的には、機能ごとにシステムを作っているので、200いくつのポッドを立ててると聞いています。
―― アーキテクチャ的には、マイクロサービスを採用することで開発がシンプルでいいという側面もある一方で、それだけ増えるとあっちを変えるとこっちも五月雨式に変えなきゃいけないというようなことが起きるのではないかと思うのですが。マイクロサービスを最初に方針として選ばれたポイントっていうのは?
長瀬 200と言ったのはサーバー単位だったりするので大きくは数個の機能が立ち上がっている形になると思います。
―― とはいえそれだけあると、たとえば、一回テストコードをバーっとユニット回すなど、結構時間かかったりとかするものではないですか?
長瀬 テストに関して言うと、今は自動化をどれだけやっていくかっていうのが開発において重要ですよね。あとはテスト自体のカバレッジ的なものも、基本的には開発の中で自動的に見れるような状態にして、品質を高めていくってことだったりしますので、開発の流れの中でキチッと対応していると言った感じですね。テストコードキチッと書いて、開発の延長の中でそれも回すと言った感じですね。「テストコードかけないやつはダメだ」っていう雰囲気が最近ありますよね。
―― そうですね。テストコードを書くことが仕様を書くことなので、コードを書くのとテストコード書くのは当たり前だよって最近なってきましたね。ちなみに、マイクロサービスのバックエンドは、言語って何がメインになるんですか?
長瀬 いまGo言語でやってます。
―― それは、選定をする上で何かポイントがあったんですか?
長瀬 技術者に基本的に言語とかは全部任せてるんですよ、アーキテクチャとか使うライブラリもですが。彼らの中でGo言語がいいという声があって採用しました。
―― 最近、よく聞くのはGo言語の採用事例が増えてきてライブラリとかも充実してるとかもあると思うんですけど、ここであの面白そうな言語で1回でっかいサービスを作ってみたい、今までやってた言語と違うやつにチャレンジしたいっていうモチベーションもあるんじゃないですか?
長瀬 そうですね。GCP(Google Cloud Platform)もうちは、AWS(Amazon Web Services)を使ってきたところがあって、最初に「GCP使おうと思ってるんですよ」って言われた時は、結構「え、大丈夫?」っていうのは正直思っていたんですけどね。価格面も事業的なメリットはありましたし、マイクロサービスなどそういうようなGoogleのクラウドならではの特徴や相性みたいなものも含めて結構良かったというのもありました。
―― 大変だったことや課題などもお聞きできるとうれしいのですが。
長瀬 年末年始は元旦しか休めませんでしたし、特に3月は休まず働いてたような状況でしたが、いちばん難しかったのは、やっぱり広告の配信のシステムや映像自体を時間通りに番組表に沿ってユーザーに届けていく裏側の配信の仕組みですね。
―― テレビ対応というのは?
長瀬 本当は、開局時にテレビデバイス全部に対応したかったのと、いろんな機能を全部入れたかったんですけど、結局、機能を落とさざるを得ませんでした。現在、テレビデバイス対応を順次やっていますが、思ったよりも開発自体難易度が高かったですね。
―― ただ、こうしてお聞きしていると、現場的には大変だったんだろうなと思いつつ全体的には、サラリとできたみたいな印象になってしまいます。
長瀬 僕らプロジェクトが集まった時には動画のことなんて知らなかったんですよ。
―― じゃ、勉強から始まってるってことですか?
長瀬 はいそうです。なので、僕はこの10年間サイバーエージェントでいろんなプロジェクトを見てきて有能だった人間を引っ張ってきたんですね。こうみんな信頼できる仲間なので、みんなで動画のことを勉強して、ゼロから技術検証して、それで開発してきたという感じなので、サラっといっているようで本当に大変でしたね(笑)
―― なるほど、失礼しました。課題としてはどうでしょうか?
長瀬 目に触れない部分ではあるんですけど、さきほどのSLAというか、ネットではサービスが落ちたりするんですよね。先日もGoogleさんのクラウドの障害があって、それによって視聴障害が起きたりとかっていうのはやっぱり良くないことです。
注釈
キラキラ女子だけが、サイバーエージェントじゃない!
長瀬 さきほども言いましたが、うちの会社は、本当にこの10年でエンジニアの会社になったと思うんですね。それは、とにかく大量のサービスを作ってきて、沢山のサービスを潰してきたのが、経験として技術者や組織に根付いているというのがあると思います。1つのサービスでやっている会社とは、そこがちょっと違っていると思います。それによって、新しいサービスを作る時に、Node.jsが出てきたなら使ってみようとか、今であればGo言語使ってみようとか、MongoDBで新しいデータベースのアーキテクチャ出てきたらそれ使ってみようとかやってきた。そういう社風ができてるって感じですね。
―― エンジニア主導でモチベーションを持って、いろいろチャレンジしていくっていうのは当初からあったんですか?
長瀬 そうですね。2006年から藤田が「技術者の採用を真剣にやって、外注じゃなくて内製化しよう」という方針を打ち出しまして、すごいペースで技術者を中途採用したんですね。その中で、技術に挑戦することが技術者として正しいだとか、裁量を与えるけど責任もキチンと持ってくれというような方針を固めました。
―― なるほど。
長瀬 面白いのは技術的な取り組みももちろんそうなんですけど、例えば技術者が働く環境とか制度とかもある程度、裁量を持って決めているというのがあります。世の中最近ではリモート開発とか当たり前という風潮あるじゃないですか。サイバーエージェントグループの中でも「AbemaTV」は、とくにリモート開発を積極的にやっているんですよ。
―― リモート開発というのは、要するに会社にこないで仕事している。
長瀬 そうです。僕は2010年くらいからグローバルでは優秀な人が世界各地にいて、その人たちが時差も関係なく1個のプロダクトを作るのが理想ではないかと思っていたんですね。「AbemaTV」でチームを作るときに、それに近い環境を作りたいと。ちょうどGitHubも当たり前になって、Slackも出てきて、電話会議もどこでも簡単にできますからね。そこが回り始めてくると、もう組織でマネジメントすることはなくて、基本的には技術者に自己管理してくれと、生善説の元でどんどんやってもらっている感じですね。
―― 「AbemaTV」で、はじめてそういう感じになったんですか?
長瀬 そうですね。うちのグループだと多分そうだと思います。
―― その「AbemaTV」の30人ってあんまり会社に来ていない感じですか(笑)。
長瀬 だいたい、週1、2回はリモート開発をしています。
―― 「今日あいついないけど」っていうのも病欠とかではなくて、今日は家でやったほうがいいかなって……。
長瀬 一応、報告するんですよ。「今日リモります」って(笑)。
―― リモります(笑)。動詞化してるんですね。
長瀬 あとはその流れとして、「精神とテクの部屋」っていう、技術者向けの図書館があります。
―― 「精神とテクの部屋」!!
長瀬 隣のビル(渋谷区道玄坂沿い)に、エンジニアしか入れない100人ちょっとくらいの本当に静かな落ち着いた空間があるんです。みんなそこに行っていた。そこで、プチリモートをしていたのが、リモート開発の前段階としてあったんですね。
―― 自分の席じゃなくて、社内の別のところでモクモクとやる。
長瀬 そうです。それだったら自宅やカフェでやるのも同じようなものですよね。
―― 「精神とテクの部屋」はどうやってできたんですか?
長瀬 藤田は、積極的に技術者に「何が欲しいのか?」っていうのを直接提案させるんですよ。そういう中で、「精神とテクの部屋」を作って欲しいというのが出たんですね。『ドラゴンボール』で、「精神と時の部屋」っていうのがありまして、そこに入るとめちゃくちゃ訓練するんですよ、悟空が。
―― なるほど、そういうことなんだ(笑)。
長瀬 はい。なので、集中して「ガーーーッ!」とプログラミングする空間です。
―― そこでは、会話やミーティングはやらないんですね。外資系であるリラックスとか気晴らし系とは違うんですね。
長瀬 はい。最近は、技術者で優秀な人にはコンシェルジェがつく制度がスタートしたりですとか、どんどんエンジニアの待遇がよくなっていますね。
―― 本当ですか? コンシェルジェは、コンビニ行ってジュース買って来たりとかそういう感じですか(笑)?
長瀬 経費精算が面倒臭いとか、そういう細々とした開発外の業務を振り分けられる人がいるっていう。
―― 1人に1人ついてるんですか?
長瀬 さすがに10人に1人って感じですね。
―― IBMのチーフプログラマーチームとか昔から数人に1人秘書がついててみたいなのありましたよね。
長瀬 そうですよね。そういう環境だけのサポートエンジニアっていう役職もあったりしますからね。
―― できるだけ開発に集中するのがいいですからね。
長瀬 あと「フリーエージェント権」を行使できたりとかします。一定期間一個のプロジェクトで働くと、FA権を行使できるんですよ。「異動したい」ということですね。それで、「こっち来いよ」とかなるわけなので(笑)、どんどんいい待遇になってきてますね。
―― なるほど。
長瀬 なので、真面目な技術者がうちにはたくさんいるんですよ。キラキラ女子と言われがちですが(笑)。
―― そっちは、あんまり言われてなくないですか?
長瀬 手前味噌ですが、うちのビジネス職の人材も優秀ですし、すごく真面目で一生懸命仕事してますね。彼らと技術力の高い技術者が同じチームになると、ものすごくワークしますね。一生懸命仕事してるプロデューサーとかがいるチームの技術者は、「もっとこういうことやろうよ」ってうまく補いながらやってくんですね。
―― これからどうしたいとかお聞きできますか?
長瀬 アスキーさんも、子供とか若い人のプログラミングに取り組んでいるということですけど、日本は、技術職は30~40歳になったら管理職になってずっとコードが書けないんですね。それに対して、40~50になっても素晴らしいプログラマーが高い報酬を得て現役で活躍しているというような状況を僕らは作りたいと思っています。エンジニアそのものがとても魅力のある職業だということをきちっと世の中には届けていきたいと思っていますね。それには、それでサービスを作って事業化していかないといけないわけですが。
―― ちゃんと稼げないとお金を払えないですからね。御社は、エンジニアの給料は高いんですか?
長瀬 比較的高いと思いますね。
―― エンジニアの職業的ポジションとかそういったことが上がるべきだ、ということですかね?
長瀬 いまって若い人がスタートアップで何かサービス作って一発当てるということができる世の中じゃないですか? そういうような時代にどんどんなっていくと思うんで、エンジニアはとても夢のある職業だと思うんですよ。そのための待遇だったり環境だったり整備みたいなことは必然だと思いますよ。
この連載の記事
-
第30回
トピックス
『第九回技術書同人誌博覧会』が11月25日に開催 -
第29回
トピックス
「ChatGPTはどう変わろうとしているのか」を学ぶ講座、11月24日に開催 -
第28回
プログラミング+
U-22で経済産業大臣賞など4冠の中学生上原直人(15歳)さんに聞いた -
第27回
プログラミング+
教育研究家とケンカして作った子どもプログラマー向けキーボードとは? -
第26回
プログラミング+
まだ間に合う! SDLアプリコンテスト応募へ、サンプルコードを一挙公開!! -
第25回
プログラミング+
アプリ開発者のみなさま! SLDアプリコンテスト〆切迫る -
第24回
プログラミング+
クルマは巨大なIoTだ! SDLハッカソンレポート -
第23回
プログラミング+
PyCon JP 2018レポート~参加者1000名超!過去最大の規模で開催~ -
第22回
プログラミング+
『みんパイ』著者が、Pythonはなぜ流行ったのかを考える -
第21回
プログラミング+
イノベーションが強く求められている時代だからこそ「非エンジニアがプログラミングを学ぶべき」な理由 -
第20回
プログラミング+
プログラミング言語「Kotlin」でAndroidアプリ開発を始めよう! - この連載の一覧へ