国内最大規模の動画サービスを支えるバックエンドの魅力

秋穂 賢
R&D部 サービス基盤開発
サービス基盤開発 スクラムマスター
サーバーサイドのスクラムマスター。チームが健全に力を発揮できるよう腐心しながら、APIの設計や実装、検索エンジンや開発環境の整備などを手がける。Java8 / DBFluteでスピード感を持って日々、心地よく開発をしている。
クラウドサーバーの普及や伝送技術の進歩などにより、インターネットを通じた動画配信サービスが盛んになっています。その中でも、12万本以上という圧倒的な数の映画やドラマを配信しているのが「U-NEXT」です。ここでは、動画配信サービス「U-NEXT」を縁の下で支えるバックエンドエンジニアにお話を伺いました。(このインタビューは2016年10月に収録されました。)

取材・文 / 佐治 和弘 撮影 / 藤田 慎一郎

_mg_0198

権限委譲が大きいからこそ、スピード感ある開発ができる

秋穂さんは転職してU-NEXTに入社されましたが、実際に入られて印象は変わりましたか。
私はずっとSIerだったので、自社サービス系はもっとスマートな感じだと思っていました。U-NEXTの現場は泥臭くやっていたので、そこはイメージと違って驚きました。
SIerの経験が役立っていると感じたことはありますか。
「お客様とコミュニケーションをとってスケジュール調整する」という感覚は生きていると思います。U-NEXTでも、「いつまでにこういうサービスをリリースする」という期限があることが多いので、期限を守ってクライアントの要望を満たすという感覚と同じです。
メディアテックの領域はSIerとは違った難しさがあると思うのですが、困難はありましたか。
実は、私がこれまで業務でプログラミングしたのは半年間ほどでした。U-NEXTで使っているJavaは、新人研修以来触っていなかった。それでも人が足りず、私がやらなければならない状況になって、もう、がむしゃらにやりましたね。サーバーサイドではDBFlute、SAFluteというフレームワークを使っているのですが、そのチュートリアルを業務の空き時間に少しずつ進めて、キャッチアップしていきました。
前職があるからこそ感じる、U-NEXTならではの良さはありますか。
大きな会社は何をやるにしても、承認を取って、また承認を取って、また承認…という感じだと思いますが、U-NEXTの現場では開発方針に対する現場への権限委譲が大きいと感じています。大きい事柄でなければチーム内で決められるのでスピード感があります。一人ひとりの意見が採用される確率も高いので、エンジニアにとってやりがいのある環境だと思いますね。
_mg_0229

ユーザビリティを向上させる検索機能を2ヶ月で内製

バックエンド側の魅力は、どのようなものですか。
私が主に携わっているのはAPIの開発なので、画面に華々しく表示されることはありません。ですが、自分が関与した新しい機能や改修は直にサービスに反映されるので、パフォーマンスが上がると「貢献できている」と感じます。大きな魅力のひとつですね。
最初にそれを実感したのは、いつですか。
入社してすぐ手掛けた仕事になるのですが、U-NEXTの検索機能は設計から実装まで、ほとんど全ての領域に携わることができました。JavaとSolr(オープンソース全文検索エンジン:ローカルにある文書ファイルの中からキーワードを含む文書を検索できる)を一緒に使い、1、2ヶ月で開発しました。外部のSolrのコミッターの方にも協力を仰いで、アドバイスをいただきながら自分たちで作っていきました。(参考資料:Solr勉強会 U-NEXTにおけるSolr活用事例
リリースされた後、社内外の反応はいかがでしたか。
検索の精度が改善したことでお褒めの言葉をいただける機会が増えましたね。分析に十分なエネルギーを割けてなくて、まだ課題はありますが、利用頻度・回数ともに増加したので、良かったと思っています。
_mg_0269

俯瞰の視点を持つエンジニアを目指して

秋穂さんは、どのようなエンジニアを目指していますか?
専門性を持ちつつも、俯瞰して全体を視ることができるT字型を目指しています。U-NEXTのエンジニアは、コンテンツを配信し、利用者が再生して視聴が終わるところまでの一連の流れと全体像が解るように、スクラムで作業しています。私の場合、決済や仮想通貨まわりに関しては全く知識がなかったのですが、スクラムを通して一気通貫で携わるようになると、その辺りの知識も増えてきました。利用者がサービスを使って何か支障が出たときに、どこを直せばいいのか頭の中で何となくイメージ出来るようになった。エンジニア全員がそうなればいいと思っています。全員のスキルが上がって個人に対する依存度が下がれば、チームとして安定してアウトプットを出すことができるようになります。
専門性を深めたいという気持ちと、俯瞰的に全体を見られるようにという配慮のバランスはどのように取っていますか。
隔週のミーティングでビジネス的な観点でやるべきことを確認し、大まかにスケジュールを引いた上で、3割は開発目線のリファクタリングや細かい改善を入れる、という進め方が定着しています。7割がビジネス主導、3割が開発主導です。ビジネス主導のタスクは専門性が高まるような性質のものが多く、開発主導のものは全体を俯瞰する能力が伸びるような感覚があって、結果的にバランスが取れている気がします。
近年、U-NEXTをはじめとした動画配信市場は激化しています。当然、ビジネス側の要求が高くなると思いますが、その中でリファクタリングに3割かけられるというのはすごいですよね。
仕組みとして回せるようになっています。スプリント計画ミーティングの際にリファクタリングもタスクに放り込んでしまっています。
その仕組みは、会社として合意して出来ているということですよね。
はい。事業責任者が柔軟な考えを持っている方なので。例えば、直近の数か月で最高の利益を出すことを目指す場合は、ビジネス10割で動くコードを作ればとりあえず動きます。でも、数年後を見据えた時に、そういうコードだけだといずれメンテナンスできなくなって、結局、全面的に書き直すことになりリスクは大きくコストも膨大になる。この辺りの感覚を共有できているので、現場の人間としてはやりやすいです。幸せな環境だと思います。
_mg_0101

バックエンドは1-msecを追求するという世界

バックエンド側を開発する上では、何を重視していますか。
バックエンドシステムの重要な指標に応答性能があるので、API全体の平均応答時間を1-msecでも下げるのがミッションの一つです。アプリケーションパフォーマンス監視ソフトを入れて視覚化していて、エンジニアの席から見えるところにダッシュボードの画面が常に映されています。
具体的にどのように改善していくのですか。
遅いトランザクションを検知したらコードの改善すべき箇所を教えてくれます。そこで指摘された部分を修正してリリースしてみると、実際に2-msecくらい下がります。全体のコール数が多いので、数msecを下げるだけでもかなり大変なのですが、あくまで追求しています。
これからこんなことをしていきたいとか、未来の話を伺えますでしょうか。
最初にお話しした検索機能は、開発後のチューニングにあまり力を割けていないので、「検索したときに利用者が求めている検索結果になっているか」という詳細な分析と、仕組みの改善に着手したいと思っています。検索技術も日進月歩なので、キャッチアップしていきたいですね。
_mg_0211

最新技術をキャッチアップする勉強会を頻繁に開催

ES6(JavaScriptの次世代仕様であるECMAScript 2015〔ECMAScript 6〕のこと)の社内勉強会を開催したと伺いましたが、他にはどのような勉強会がありますか?
サーバーサイドで言うと、データベースがすごく大きくて、テーブル数が3桁を軽く突破するくらいなので、「データベースの意味をみんなでちゃんと理解しましょう」という勉強会を10回ほど開催しました。
データベース全般の勉強会?
一般的なデータベース勉強会ではなく、U-NEXTのデータベースを実際に見て「ここはこうした方がいいよね」と話し合うものです。技術者だけでなくビジネス側の人も参加します。ビジネス側の人は開発者とは違った視点で要望を出してきますが、「データ構造からしたらこんな風にした方が結果良くなる」と議論を交わし、開発側の意見が採用されることもあります。新しく入ってきたエンジニアのために始めた勉強会だったのですが、「せっかくならビジネス側も」と思い呼んでみたら、想像以上に良い時間となりました。
エンジニアもビジネス側も、勉強熱心な人が多いですね。
他には、レコメンドロジックや最近流行りだした言語の勉強会も開きました。ソースコード管理システムの本質的な使い方やリファクタリングの方法についての勉強会を開催したいという話もあります。開催頻度は特に決まっていないので、「やりたい」と話に挙がったタイミングで開催しています。
U-NEXTのエンジニアは、新しい技術に対して感度が高いという印象です。もともと感度が高い人が多いのか、それとも入社後に鍛えられるのでしょうか?
それは人によりますね。ビジネスとしてU-NEXTのサービスをより良くすることを主眼に置いている人は、「サービスを良くしたい」という気持ちが先にあって、新しい技術や自分の不具合を減らす方法を学んでいきます。純粋に技術が好きな人は、はじめから積極的に新しい言語やフレームワークを触っています。
新しい技術の導入スピードも速い印象があります。
エンジニアチームだけで決められることも多いからでしょうね。何でも無条件に導入できるというわけではありませんが、検証してチームで話し合って「じゃあ使おう」とすぐ導入することも多いので。
_mg_0229

技術力とビジネス感覚のバランスが取れたチームを目指す

秋穂さんは採用の面接官もされているそうですが、先ほどのお話にあったような1-msecにこだわりきれる人に来てほしい?
それも良いですが、色々な人に入ってもらってバラエティ豊かな人でチームを構成したいと思っています。技術好きばかりが集まると、空中戦になってしまうことがありますよね。宗教戦争のように、「こっちの方がいい」「いや、こっちの方がいいんだ」みたいな。それも重要かもしれませんが、技術の知識だけでは不十分で、チームとして技術者の感覚とビジネス的な思考のバランスが取れていることが大事だと思っています。
ビジネス感覚が強いエンジニアは、どのように活躍していますか。
ビジネスだとスピードが大事な場合もあるので、細かい部分のこだわりやアーキテクチャの美しさを一時的に犠牲にしてでも、なるべく早く機能を公開したいみたいなことがありますよね。その時の状況に応じて優先順位をつけて、柔軟に対応できるのは、やはりビジネス感覚に優れたエンジニアです。
さまざまな技術領域があって、キャッチアップに時間がかかりそうですが、サポートする仕組みはありますか?
サーバーサイドエンジニア必修のチュートリアルがあって、それをやっておけばU-NEXTの基本的な部分は一通り俯瞰的に学べるようになっています。基礎がある人であれば、それほどつまずかずに入っていけるのではないでしょうか。
ありがとうございました。
_mg_0328