YouTuber支援から動画配信まで、累計80億のデータを処理するeviryのチームワークを見た

さて、みなさんは株式会社eviryをご存知だろうか?

builderscon tokyo 2018にご協賛いただいている同社だが、もしご存じない方がいたら、このkamui trackerというサービスのプロモーション動画を見て欲しい。

(音量注意!再生すると大きな音が出ます。)

www.youtube.com

キラキラ感にあふれる作りの動画だが、後半30秒まで見るとキラキラしているだけのサービスではなく、しっかりとしたデータ分析の画面が作り込まれていることがわかる。そしてこのデータ分析は累計80億件以上、毎日約2千万件という膨大な視聴データの処理の結果である。

f:id:richard-imaoka:20180719103933p:plain f:id:richard-imaoka:20180719103946p:plain

そのデータをもとにkamui trackerは、YouTuberなどのクリエイターにはキーワード分析やファンの好みの分析を提供し、広告主には最適なクリエイターとのタイアップ支援や広告効果分析を提供している。

しかし、kamui trackerを運営する株式会社eviryは「今流行りのYouTuber向けのサービスを作ったイケイケの新興ベンチャー」というわけではなく、実は動画関連ビジネスで長く培った実績と技術力がある会社だ。そして、もう一つの主力事業であるmillviというSaas型動画配信サービスも手がけている。こちらは多種多様な企業のリクエストに応えるため、非常に機能が豊富(機能一覧)なサービスになっている。

f:id:richard-imaoka:20180710023619p:plain

同社の事業は現在この2つの動画関連サービスを中心に構成されており、

  • kamui tracker は「多角的なデータでお客様の動画マーケティングを成功に導くサービス」
  • millviは「お客様を動画制作だけに集中させる、機能豊富な動画配信サービス」

という位置づけだ。開発者10名、従業員30名(2018年5月末現在)と決して大きくはない組織ながら、「kamui trackerチーム」と「millviチーム」の2つに別れ、それぞれのサービスを支えている。

株式会社eviryの開発チームの体制を紹介し、我々エンジニアにとってどんな魅力がある職場なのかを取材するため、私リチャードが渋谷のオフィスにお邪魔した。

kamui tracker チーム

まずは「kamui trackerチーム」の開発メンバーに話を聞いた。

kamuitracker.com

kamui trackerのシステムはRuby on Railsで構築されている。データベースにはAmazon Auroraを用いてYouTubeなどの動画プラットフォームから日次でデータを収集し、独自のデータ整理を行った上で集計してデータベースを構築している。

開発チームは現在3人体制であり、開発メンバーの中でチーフエンジニアを努めているのが河重さんだ。

f:id:richard-imaoka:20180715155340j:plain

河重さん「私は2016年4月に株式会社eviryに入社してすぐ、当時ベータ版を公開したばかりであったkamui trackerチームに配属されました。そのあとすぐにチーフエンジニアを引き継ぎ、現在では開発チームのリードをするとともに、システムの新アーキテクチャの検討を行っています。仕事の比重としては今は新アーキテクチャの検討がメインですね」

kamui trackerはYouTubeを始めとするマス向けの動画データを対象としており、巨大なデータを扱うことが特徴だ。

河重さん「データ量がとても多く、クリエーター5万人のデータ、2000万件の動画をトラッキングしています。日時で視聴回数など各種指標の差分を取得しているので、毎日2000万件のデータが入ってくるわけです」

インタビュー時点でレコード数が「80億件」ということを聞いていたが、ここからさらに一日に2000万件が追加されていく。これだけ大量のデータを効率的に捌くことが、現時点で最大の技術的課題とのことだ。

もうひとりの開発チームメンバーは、2年前に新卒としてeviryに入社した橋本さん。

f:id:richard-imaoka:20180715155357j:plain

橋本さん「私は大学卒業後2016年11月にkamui trackerチームに配属されました。今は現行システムの開発をメインでやっていて、ビジネスサイドから機能追加の要求があったらその対応も行っています」

橋本さんは、新アーキテクチャ関連の仕事がメインになっている河重さんに代わって、開発やサポートをメインで支える役割を担っている。現在日々の開発・運用でビジネス側と一番やり取りしているのが橋本さんということで、開発側とビジネス側のコミュニケーションはどうなっているか聞いてみた。

橋本さん「kamui trackerチームは私達開発と営業、それからカスタマーサクセスの3チームで構成されています。営業とカスタマーサクセスがビジネス上の課題を洗い出し、私達開発側と一緒に機能開発を進めていくという形ですね」

具体的にツールの使い方や、ミーティングの頻度や進め方を教えてもらえるとよりイメージが湧くかもしれない。それについては河重さんが教えてくれた。

河重さん「開発タスクの管理はPivotal Trackerを使っています。タスクの優先度は適宜ビジネス側と話し合いつつ決めているので、定期的なミーティングやスクラムのようなことは行っていません。ビジネス側との間で、意見を言いにくい雰囲気は全然ないですし、『強制的にコレをやれ』『間に合わないのに無理やりやれ』とかいうこともありませんね」

後のmillviチームでの取材中にも思ったことだが、kamui trackerチームでもビジネスと開発のコミュニケーションがしっかり取れている雰囲気を感じた。当たり前のようなことだが、お互いが信頼している状態でないとコミュニケーションの状態を良好に保つのは難しい。案外これができてない現場は多いは世の中には多いのではないだろうか。

3人目のkamui tracker開発メンバーは2ヶ月ほど前にkamui trackerチームにジョインした春田さんだ。

f:id:richard-imaoka:20180715155425j:plain

春田さん「私はkamui trackerチームには2ヶ月ほど前にジョインしたばかりなので、まだキャッチアップしている最中ですが、eviry自体には2014年から在籍しています。過去に存在したゲーム実況事業のための録画SDK開発や、Pepper関連事業部などでUXを研究するなど色々なことをやってきました」

3人の中ではかなり異色の経歴を持つ春田さん。春田さんはPepper関連事業を行っていた頃に各種ハッカソンやイベントに登壇経験がある。その一部をいかに紹介するが、春田さんの個性がよく出ているユニークな試みばかりだ。

  • 記事中の「日本最古のPepper by チーム シンのびすけ」

mashupaward.jp

  • 記事中の「(8) DaITaI Pepper / チーム名:DaITaI家のPepper」

robotstart.info

幅広い役割を経験する中でAmazon echoAWS Lambda、その他様々なAWSサービスを使う経験があったそうで、そういったクラウド系技術が好きなのかと聞いてみると

春田さん「いえ、(クラウド的な)技術ドリブンで自分から調べるっていうタイプではないです(笑)。いろいろな職務を任されているうちにAWS関連の技術はいつの間にか詳しくなって、結果的にはプラスになりましたね」

個人的な興味は違うところにあるようで、

春田さん「個人的には一番興味があるのはUXですね。例えばPepperみたいなロボットって、ふわっとした言葉でいうと『どうユーザーが接していて気持ちいいか』を追求していく面があるので、そういうのは好きです」

今後kamui trackerシステムで強化していきたい部分

さて、株式会社eviryとして今後も伸ばしていきたい、急成長中のサービスkamui tracker。先程河重さんの紹介で少し触れたが、そんなkamui trackerチームではシステムの新アーキテクチャ導入を検討している。

河重さん「今はアプリケーションを並列化して、EC2を20並列かつプロセス内で8スレッド並列に走らせる形で対処しています。ある意味現状はそれに対処できるアプリケーションのデザインができているということですが、このままでは厳しいことはわかっています。私達が新アーキテクチャを検討しているのもスケーラビリティの確保が最大の理由です」

具体的に、今はどんなことを検討しているのだろう?

河重さん「現在は新アーキテクチャをスケールするためのインフラを検討しています。Hadoopが技術選択として第一候補なのですが、これからHadoopの適用可能性を一ヶ月ほどかけて検証していこうという感じですね。インフラ部分が決まれば、あとはHadoopの上に乗せるアプリケーションの部分はある程度自由に決められるので、そこは他のメンバーと一緒に設計していきたいです」

これからkamui trackerチームにジョインする人にとっては、今後アーキテクチャの転換という非常に面白い時期に経験をつめることになる。Hadoopのような大規模な分散型システムで大量のデータを捌くことに興味のある人にとっては、面白い現場になるのではないだろうか。

さて、新アーキテクチャを検討している話以外に、他に日々感じるシステムの「イケてない所、課題」はあるのだろうか?会社紹介的な記事ではいいことばかりが宣伝されがちだが、正直な所問題点がない開発チームはないだろうし、そこは気になる。

橋本さん「個人的にはデータ分析的なところをもっとやってみたいというのはあります。一応お客さんに見せられる分析というのはあるんですけど、まだまだいろんな形で、手の込んだ分析をお客さんに提供したいと思っていますが、ちょっといまは現行の開発案件とサポートでそこまでは手が回ってないですね」

橋本さん「それから、本番データを触るときにデータ量が膨大なので、例えばちょっとしたクエリがシステムに大きな負荷をかけるものになったり非常に時間がかかったりと、もうすこし気軽にデータを触れる環境であればいいなとは思います。こちらも開発にさける時間があればやっていきたい部分です」

河重さん「インフラの強化はやっていきたいですね。Infra as Codeというか、数ヶ月前からTerraformを使い始めています。あとリリースを楽に行うために今はCapistranoを使ってボタン一つでリリースできるところまでは来ていますけど、merge後、即リリースというわけでもないです」

アーキテクチャの構想や、インフラストラクチャの強化など技術的にこれから挑戦しがいのある面白い課題があるチームだと感じた。

個人的な興味の分野

さて、最後に3人に個人的に興味のある分野の話を聞いてみた。技術者の人となりを知るには重要な部分だと思う。

河重さん「最近RubyHanamiというフレームワークが気になっていて、先日のRubyKaigiに行ったときにもHanami関連のトークを聞いてきました。Ruby on Railsでシステムを作っていると、システムが大きくなってきたときにコントローラ層の肥大化など問題が出やすい箇所があって、HanamiというフレームワークだとRailsと違ってDDD的な思想に基づいているので、そのへんをきれいに設計できそうかな、と」

Hanamiは新アーキテクチャを導入する際にも選択肢になる?

河重さん「それはわかりませんね、まだ利用実績や成熟度がRailsに比べると足りないので。検討はしてみたいと思います。あと、全然違う話になりますが、最近Goを始めたり、あと会社のメンバーISUCONに出てみようかっていう話もしています(笑)」

isucon.net

ISUCON! もし株式会社eviry選抜チームが出ることになったら是非活躍して欲しい。

橋本さん「個人ではReactの勉強を始めていて、あとはSolidityというブロックチェーンの言語をやっています」

ブロックチェーンの「言語」!?

橋本さん「はい、イーサリアムとか独自のアルトコインを発行するときに使うもので、会社外の個人で活動しているんですけど、そこで必要なのでこれを使っていますね」

春田さん「私はサーバーレスアーキテクチャでものを作るのは好きですね。そこでDynamoDBを使うので、NoSQLに関して学んだりという感じですが…まあ前に行ったように技術ドリブンで自分から動くタイプではないので(笑)」

春田さんらしい答えだった(笑)。

まとめ

kamui trackerチームと話していて感じたのは、ビジネス側と開発チーム間、そして開発チーム内でも密にコミュニケーションを取り合う文化があり、情報共有が根付いているということだ。だからこそ、各メンバーがフロントからインフラ、バックエンドまで幅広く担当できる体制ができあがったのだろう。

そして、ビジネスが急成長する中でもしっかりと技術的課題を一つ一つ乗り越えてきた経緯がある。最近Terraformを入れてインフラの整理をさらに一歩進めたことや、少ない開発メンバーの中で河重さんが新アーキテクチャの検討に専念するだけの時間を持てていることなどがそれを表している。日々の開発に追われて河重さんが新アーキテクチャに専念する時間がなければなかなか構想はすすまないだろう。

着実に開発をすすめる地力があるチームで、新アーキテクチャ開発を通して技術者として成長するにはとてもよいタイミングの環境だと思う。

millvi チーム

次にインタビューしたのはmillviチーム。

https://millvi.jp/

millviシステムは大きく分けて「ビデオ・オン・デマンド(以降VOD)システム」と「ライブ配信系システム」の2系統があり、VOD側はPHPで、ライブ配信側はScalaでバックエンドが実装されている。さらにシステム間のつなぎこみを行うツール類をPythonで実装しており、一部AWS Lambdaを使っているが、その処理もPythonで書かれているとのことだ。

話を聞いたのはバックエンド・エンジニアである藤井さんと浦川さん、それからカスタマーサクセスの鹿野さんの3人だ。

f:id:richard-imaoka:20180715155457j:plain

藤井さん「今はmillviバックエンドシステムの開発と保守を担当しています。VODとライブ配信両方ですね。それからインフラやDBも触っていますし、たまにフロントエンド側の作業も、JavaScriptで書かれているのですけど、そこもやりますね」

藤井さんに入社の経緯を聞いてみた。

藤井さん「私は以前受託開発系の会社にいて、そこから自社サービスを展開している企業を探して転職サイトに登録した所、株式会社eviry社長の中川から声をかけられました。自分でバックエンドのロジックを考えたり、インフラを触るようなことも好きだったのでいいタイミングで声をかけてもらったなと思います」

もうひとりインタビューに応じてくれたバックエンドエンジニアは浦川さんだ。

f:id:richard-imaoka:20180715155514j:plain

浦川さん「私はバックエンドエンジニアで、主に動画の変換部分や配信基盤等のVODサーバ周辺を担当しています。最近だとAdobe Media ServerからWOWZAに乗り換える改修をおこないました。もちろんインフラにも携わっています」

株式会社eviryではインフラ専任のエンジニアというのは一人だけいるのみで、バックエンドエンジニアがインフラも触ることで運用を行う体制になっているのはmillviチームもkamui trackerチームも共通だ。今風の言葉でいうとDevOpsという形になるだろうが、自然な形でアプリ開発AWSを利用したインフラ管理も経験できる環境がある。

さて、浦川さんの入社経緯はどういったものだったのだろう?

浦川さん「前職では沖縄のベンチャー企業ASP型の自社サービスの開発や運用をやっていました。それがシンプルな構成のサービスだったのでもっと技術要素の多いサービスの開発をしたいなと考えて転職サイトに登録したところ…」

やはり、社長の中川さんから…?

浦川さん「はい、中川から声をかけられまして(笑)。それがきっかけで面接をうけて入社することになりました」

どうやら社長との話が対話が鍵となって入社するメンバーが多いようだ。エンジニアから見ても魅力的な方なのだろう。

次に話を聞いたのはカスタマーサクセス部門の鹿野さん。開発者ではないが、開発者と顧客の間を取り持ち、顧客がmillviサービスから最大限の価値を得られるよう、またmillviの開発の方向性を顧客にとって最大限の価値を生むものにするよう手助けする役割だ。

f:id:richard-imaoka:20180715155614j:plain

鹿野さん「私はこの中では一番在籍期間が長く、eviryに入ってから5年ほど経ちます。まだ会社がマンションの一室で営業していた頃から働いていて、いろんな役割をこなしてきましたね。営業的なことをしたり、テクニカルサポート的なことを行ったり、展示会があれば前に立つこともありましたし、それで今になって一番しっくりくる役割としてカスタマーサクセスという部門に入りました。弊社ではプロダクトマネジメント的な役割と、カスタマーサポート的な役割の両方を持っています」

多機能なmillviシステムを支える開発者間の知識共有と教育の取り組み

さて、ここからmillviシステムについてより詳しく聞いていこう。浦川さんは「要素の多いサービス」といっていたが、実際millviのサービスは非常に多機能だ

f:id:richard-imaoka:20180707073223p:plain

その上でVOD系システムとライブ配信系システムはmillviの裏側では完全に別系統のシステムになっている。「開発者6人+インフラ専任1人」という7人のチームでこれだけ多機能なサービスを支えるには秘訣があるのだろうか?その辺の事情はカスタマーサクセスの鹿野さんが教えてくれた。

鹿野さん「確かに機能が多くて、それがサポートが大変になる原因の一端になっている面はあります。しかし、millviのエンジニア陣というのは、懐が深いといいますか、深く・広くサービスの実装を理解しているので手を変え品を変え課題や要求に対応してくれています」

各エンジニアが実装をしっかり理解しているのには理由がある。まず約2年半ほど開発チームから退職者が出たことはなく人の定着が良い。しかし、単に経験年数の長い人がいるから実装に関する知識が深まっていったというわけではなく、それを広くメンバー間で共有するには工夫があるようだ。

浦川さん「私が入社した頃からコードレビューをしっかりやっていこうというのはありましたね。レビューの際に、ちゃんと課題の背景からしっかり説明して、レビューを行う側に対して知識の伝達がなされるようにしています」

藤井さん「それに、今はesaを使っているのですがドキュメント化をしっかりしていこうという文化は昔からありました」

esa.io

なるほど、開発陣にシステム実装に関する深い知識あるのは藤井さん、浦川さんが入社したおよそ2年ほど前から特に知識共有のプロセスはしっかりするように意識してきた結果らしい。その前後の変化を鹿野さんが話してくれた。

鹿野さん「実は2年ちょっと前は、システム実装の中にその場しのぎのロジックといいますか、条件分岐のようなものが多数ありました。しかし、私を含むサポートチームが開発チームと協力して、ひとつひとつ過去の経緯と照らし合わせながら『この処理はもう必要ないですね』ということを地道に繰り返していったことで、今はだいぶ技術的負債が減りましたね」

普通は一度システムに「その場しのぎのロジック」という形で埋め込まれてしまった技術的負債は、その背景に関する知識が失われると、取り除いたときの影響を測ることが困難なので、いつまでも残り続けてしまいがちだ。こういった技術的負債の返済に代表されるような、millviチーム内の地道な知識共有の積み重ねが、鹿野さんが『懐が深い』と表現する開発チームを作り上げたのだろう。

さらに、知識共有の積み重ねの効果が表れたエピソードがもう一つある。実は今年の4月にmillviチームとしては初めての新卒学生を受け入れたのだ。

鹿野さん「まず、メンター制度というものを設けました。しかしメンターが新入社員につきっきりという形でなく、あくまでメンターは困ったときの相談役と行った感じで、うまく業務の中で多数のエンジニアに関わってみんなから学ぶような形にしていったんです」

なるほど、たしかに一人のメンターからいつも指導を受けるより、多数の人と関わる方が不足なくスキルをみにつけられそうだ。それをしっかり業務の中に組み込んで教育体制を整えられたのは興味深い。

鹿野さん「私達カスタマーサクセスからみても、なんでこんなに開発チーム仲いいんだろうっていうくらいうまくいってましたね(笑)。メンターが休みをとったときも『ああ、じゃあ今日はメンター役私がやります』っていう人が自然と出てきて、みんなでカバーしあって回していました」

藤井さん「気づいたら、馴染みすぎて『ナチュラルに、開発メンバーが一人増えたな』って思うくらい(笑)。新卒と思えないくらいスムーズに行きましたね」

millviシステムの技術的課題

ここからはmillviシステムのより技術的な話と、今後どういった分野に力を入れていきたいのか聞いてみた。

藤井さん「VODのシステムはPHPで書かれていて、ここを最新のバージョンに保って行きたいと思います。ただ、millviのビジネスとしてライブ配信に対する需要は非常に高まっているので、このScalaで書かれているライブ配信システムは機能強化してきたいところです」

鹿野さん「お客さんのサイト内で会員様向けにライブ動画を配信したり、キャンペーンようにライブ動画を利用したりと、ビジネスとしてライブ配信に対する需要は高まっています」

millviというサービス自体は十分な実績があり、安定した成長軌道に乗ったサービスだ。しかしことライブ配信に限ってはシステム的にもビジネス的にも直近、そして今後の伸びを大きく期待できる分野らしい。ではライブ配信システム以外には、どんな点に力を入れていきたいのだろう?

浦川さん「VODサーバの話をすると、今スケーラビリティがよくないのでそこは改善していきたいです。あとリクエストが大量に来たときに動画の変換が詰まりがちなのでそこの高速化にも対処したいと思っています」

藤井さん「それからインフラ周りを強化していきたいです。現在millviではインフラ専任は一人いるだけなので、どうしてもインフラは後手に回りがちです。私達バックエンドの開発者もインフラを触っているのですが、インフラに興味を持ってどんどん拡張してくれる人はぜひ是非来てもらいたいと思っています」

メンバーの個人的な興味

最後にmillviチームのメンバーが技術的に興味のある分野、あるいは個人的にどんな勉強会に行っているか・行ってみたいかを聞いてみた。

藤井さん機械学習系の勉強会によく行っています。自分から発表するわけではないのですけど、各社の応用事例を聞いて『あーどこも同じように苦しい部分を抱えているんだなあ』ということを学んでいますね(笑)」

浦川さん「コンテナやサーバレスを絡めたレガシーアーキテクチャの改善や拡張といった分野に興味があります」

藤井さんと浦川さんはエンジニアらしく最新の技術に対してアンテナを張って情報を得ているようだ。

鹿野さん「私はエンジニアではないから、エンジニアとカスタマーサクセスの間のコミュニケーションに興味があります。アジャイル的な話というか、エンジニアコミュニティ内ではコミュニケーションの方法論ってあるようですが、ビジネス側から開発者と良好なコミュニケーションを推し進めていく方法を聞ける勉強会があれば是非参加したいです」

確かに、非エンジニア側からみたコミュニケーション論はエンジニア同士での勉強会ではあまり聞かない内容なのでぜひ聞きたいところだ。ビジネス側の立場にある鹿野さんもエンジニアたちに負けず劣らず情報収集に意欲的なところも、チームの良い雰囲気を支えているのだろう。

まとめ

f:id:richard-imaoka:20180715155629j:plain

millviチームもkamui trackerチームと同様にビジネス側との関係性がよく、開発チーム内での教育や知識共有の文化がしっかりできているチームだった。kamui trackerに比べると運用歴が長く安定したサービスでありつつ、ライブ配信という今後大きく伸びる面も持ち合わせたmillvi。

幅広い動画配信関連技術を学びつつ、ライブ配信の可能性と課題にチャレンジしたい人にはおすすめできるチームだ。

採用についてのお知らせ

株式会社eviryでは現在kamui trackerチーム、millviチームともに技術者採用を行っている。もしeviryに興味を持ってくれたら、こちらの採用ページを見て欲しい。

https://recruit.eviry.com/jobs/engineer

またeviryの採用に関する姿勢は、以下のeviryブログの記事が参考になると思う。どちらも「面接官と被面接者の非対称をなくす」という点について触れられており、興味を持った人にはこちらも読んでもらいたい。