PROJECT 01
Project Story
プロジェクトストーリー
視聴習慣が定着・浸透したことを受け、拡大中の国内動画配信市場。その規模は*2020年には3,710億円と推計されています。
数ある動画配信サービスの中でも、国内最大級の会員数を誇る「Hulu」。
お客様とともにサービスの成長を支えてきた、エンジニアが感じた苦労や喜びを語ります。
*一般財団法人デジタルコンテンツ協会『動画配信市場調査レポート 2021』より
PLAY CLOUD本部
OTTサービス技術部 開発第3グループ
PLAY CLOUD本部
OTTサービス技術部 開発第1グループ
プロジェクトの発端
CMSから動画独自技術までワンストップでソリューション提供できるのが強み
お二人ともHuluの追加開発を担当されているとうかがいました。
「既存システムをリニューアルしたい」というのがお客様のご要望でした。
大規模サービスの開発となると、動画のトランスコード技術はA社、動画を再生するプレイヤーの開発はB社、フロントエンド開発はC社というように分業するのが一般的です。レイヤーごとに開発会社が異なるということは、外部企業との連携にも時間を要してしまい、それだけで1日が終わってしまうこともしばしばあります。
しかし、PLAYでは全てを一括で請け負い、社内で完結できるので、開発〜リリースまでのスピードが向上することを期待され、選ばれました。
このタイミングで、運用しているサービスに影響を与えることなく、Webシステムやスマホアプリの刷新を行いました。私はTV端末向けシステムの開発を担当したのですが、せっかくリニューアルするならもっと使い勝手の良いものにしたいという想いから、可能な限り機能を追加したらちょっと重たくなってしまって(笑)
リニューアル案件だからこそ、既存サービスより良いものを作りたいという想いは常にありますね。結局、軽量化の問題はどのように解決したんですか?
古い文法にコードを書き換えました。最新のイケてる書き方は最新の高スペックデバイス向けなので、それでは必要以上にメモリやCPUを消費してしまいます。あえてトラディショナルな書き方に直すことで少しずつ軽量化をはかりました。
既存サービスへの機能追加は、土台から見直さないといけない場合もあるのが難しいところです。
スマホアプリも端末によっては動画に対して字幕がズレて表示されてしまう現象が起こりました。字幕と動画は別々のファイルを用意し、動画を流しながら秒数に合わせて字幕表示の処理を行いますが、本当に0.01秒単位の世界なんです。動画より先に字幕が出てしまったことから、過去にはエンドユーザーから問い合わせがきたことも。端末によってはわざとミリ秒単位で字幕表示を遅らせる処理をすることもありますよね。
こういうケースは、いくら事前にお客様と念入りに打ち合わせをしていたとしても予測できないので、地道に対応していくしかありませんよね。
苦労とやりがい
要望の実現に向けお客様と徹底的に議論する
最近改めて考えていることは、一度機能を実装したら、その実装方法や仕組みは変えられないということ。
お客様からご要望が出た時は安易に答えを出さず、機能リリース後にお客様が運用できるかどうかを考えて実装することが大切です。その場で要望を叶えるための機能を追加することは簡単ですが、運用は何年も行うということを念頭に入れなくてはいけないので、長期的に運用いただくための機能開発工数や費用の見積もりには注意が必要ですね。
費用感のイメージが曖昧なまま進めるのは危険ですよね。その最たる例だと、即時反映性と負荷対策のバランスと費用の折り合いは極めて難しいと痛感しています。
「今すぐに新しいコンテンツを配信したい」「配信中のコンテンツをすみやかに非公開にしたい」など、実際にコンテンツを視聴しているエンドユーザーにどのくらいのスピードで届けることができるのか。即時反映できるのがベストですが、視聴中のエンドユーザーが多ければ多い程システムに対するアクセス負荷が大きくなってしまいます。その負荷分散対策として、「オリジンサーバー」から動画コンテンツのコピーを取得した複数の「キャッシュサーバー」が代理で配信することで、オリジンサーバーの負荷を分散、軽減します。
このキャッシュサーバーをどの程度の期間保持するべきか。1時間程度保持する場合は、オリジンサーバーへの負担は大きくないけれど、反映までに時間がかかってしまいます。
一方で、キャッシュサーバーの保持を1秒にすると即時反映はできますが、サーバーへの負担がとても大きくなってしまいます。大量アクセスに耐えうるサーバー台数を確保すれば、サーバーダウンは避けられますが、その分コストが嵩んでしまう。
「実現したいこと」と「避けなくてはならない最悪の事態」のバランスをどうやって折り合いをつけていくのか、一番難しい部分ですよね。
どのように負荷対策するのかが一番難しいかもしれないですね。
たとえば、地上波の連続ドラマで「この後、オリジナルストーリーを独占配信!」と放送されると、一斉にアクセスが集中します。負荷を分散するためにサーバーを何台も用意すれば費用が嵩んでしまうので、サーバーへの負荷を考慮してどのような見せ方にするべきか、お客様に提案することもよくありますね。現実的な費用感を意識してお客様ととことん話し合うのが誠実な対応だと思います。
苦労も多いのですね。
お二人の考える、大規模動画配信サービスに携わることへのやりがいとは?
先述のようなプレッシャーもありますが、その分やりがいも大きいですよね。
そうですね。例えば、機能を改善するとTwitterでつぶやかれたり、エンドユーザーの反応をいち早くかつダイレクトに感じられる瞬間は他のサービスにはあまりないと思います。
社内でもエンドユーザーの反応にはすごく敏感になっているので、リニューアル後にはSlack上でTwitterの書き込みが共有されることも。自分たちの積み重ねた努力が、お客様はもちろんエンドユーザーにも喜んでもらえているんだと実感できるのは、この仕事の大きな醍醐味です。
組織としての成長
技術面からビジネス視点まで、
総合的な視野を持つ プロフェッショナルチームを目指して
今後の目標を教えてください。
私の場合、フロント、バックエンド開発からインフラ構築まで携わるので、その気になれば1つの動画配信サービスの開発を一人で完結することもできるでしょう。
もちろん、組織としてリスクヘッジのために分業していますが、こういった背景からも様々なプロジェクトで橋渡し的な役割を担うことが多いので、メンバーの技術的知見を広げるとともに、システム全体を俯瞰的な視点で捉えられるフルスタックエンジニアの育成が急務だと感じています。
人材育成は私も日頃から意識しています。私の場合は、お客様との折衝が業務のウエイトを大きく占めているので、お客様から要望や課題について連絡をいただいたら、実際のやりとりをメンバーに任せるように心がけています。様子を見ながら徐々に任せる範囲を広げ、経験を積んでもらうことが大切ですよね。
加えて、技術面だけでなくお客様のビジネスと課題背景をしっかり理解し、総合的な視点からサービスを提案できてこそプロフェッショナルチームだと考えています。これは自分自身の課題でもあるので、ともに体現するメンバーを増やすことで実現したいですね!
- HOME
- プロジェクトストーリー
- OTTサービス支援/既存サービス追加開発
PROJECT 02
国内有数の大規模動画配信サービスを作り上げる
OTTサービス支援/既存サービス追加開発