企画広告

動画、オークション、コマース-- Yahoo! JAPANを支えるエンジニアたちが語る今と未来

CNET Japan Ad Special2018年02月07日 12時00分

 ヤフーは1月27日、Yahoo! JAPANのさまざまなサービスを支える技術者たちが、テクノロジーの現在と未来について紹介するイベント「Yahoo! JAPAN Tech Conference 2018」を開催した。

 イベントでは、ヤフーの最高技術責任者(CTO)である藤門千明氏が基調講演を行ったほか、サーバインフラ、認証技術、クラウドプラットフォーム、ウェブ制作、ビジュアルデザイン、広告技術など幅広いテーマでセッションを展開した。本記事では、その中から3つのセッションを紹介する。

動画視聴のストレスを解消するための技術的なチャレンジ

 「Yahoo! JAPANの動画コンテンツの取り組み」と題したセッションでは、CTO室の今野聡司氏が「GYAO!」をはじめとするYahoo! JAPANの動画サービスを支える技術についてプレゼンテーションした。


ヤフーのCTO室で動画技術を担当する今野聡司氏

 今野氏はまず、Yahoo! JAPANの動画サービスについて「コンテンツをリッチメディア化することを通じて、ユーザーの日常を豊かにすることを目指している。そのひとつの注力分野が動画だ」と基本的なスタンスを説明。Yahoo! JAPANにおける動画視聴時間は前年同四半期と比べて3倍、月次再生回数は前年比10倍、月間APIリクエスト量やデータ転送量も前年比5倍に増加しているのだという。動画視聴のデイリーアクティブユーザーは4000万を超える。「ユーザーの視聴機会が増えている中で、技術的なチャレンジも増えている状況だ」(今野氏)。

 その上で、Yahoo!ニュース、Yahoo!知恵袋、Yahoo!ショッピングのライブコマースなど、さまざまなサービスにおける動画コンテンツ配信について、技術的な課題とその解決施策について紹介した。

 今野氏は、ユーザーの快適な視聴体験をマルチデバイスで実現するための要素として、「ビデオやオーディオの品質」「低レイテンシーによる視聴即時性の実現」「視聴ログ、コンテンツ解析による発見機会の提供」という3点を提示。これらの要素をデータ転送のためのネットワーク、メディアデータの圧縮や暗号化、マルチデバイスに対応した視聴アプリ、大規模な視聴ログの収集・分析という、動画視聴体験を構成するさまざまなレイヤーの技術を駆使して追求しているのだという。

動画配信における技術的なチャレンジ
動画配信における技術的なチャレンジ

 動画品質の追求について、今野氏は「価値あるコンテンツと広告でユーザーにストレスフリーの視聴体験を提供する点が課題だ。特に、広告価値を最大化するビジネスモデルを展開するためには、いかにコンテンツの中に広告を織り交ぜるかが大きなチャレンジになる」と説明する。

 たとえば、動画本編と動画広告のラウドネス(音量)の調整については、ユーザーから寄せられる「途中で挿入される広告がうるさい」という要望に対して、入稿される動画素材の音量を自動加工することで、標準値に調整して配信しているのだという。加えて、視聴したユーザーのログを解析することで、視聴完遂率の調査などを行い、ユーザーの不快感や視聴離脱要素を分析しているのだそうだ。

音量を標準化することで、視聴時のストレスを軽減する
音量を標準化することで、視聴時のストレスを軽減する

 また即時性の実現について、今野氏はスマホ向けYahoo! JAPANアプリにおけるレイテンシーの最適化を例に説明。動画そのもののデータ量と膨大な同時アクセスが再生の遅延要因になっているとした上で、「アプリ、API、動画配信など関連するシステム全体で総合的にレイテンシーを分析して対策をしている」と語り、アプリ側では動画データのプリロード(再生前に数秒分だけロードすること)や回線判定による画質の最適化などを行うことで遅延を防いでいると説明した。

動画再生の低遅延を実現するための技術的な工夫
動画再生の低遅延を実現するための技術的な工夫

 そして、コンテンツ発見機会の提供という点については、ユーザーがなかなか観たい動画を発見できないという課題を背景にユーザーの好みに合わない一律のコンテンツやトレンドだけに依存したレコメンドといった要因があるとした上で、「視聴ログの内容解析によってレコメンドやパーソナライズの精度向上に努めている」と説明した。「精度を高めるためにはコンテンツのメタデータとユーザーの視聴傾向データ両方の分析が必要だ。数値化した両者のベクトルを掛け合わせることで、次回ユーザーが動画を探す際に最適なコンテンツを提供することができる」(今野氏)。

コンテンツのメタデータとユーザーの視聴データを解析することでレコメンド精度を高める
コンテンツのメタデータとユーザーの視聴データを解析することでレコメンド精度を高める

 今野氏は今後の動画サービスについて「視聴データのさらなる細かい分析を考えている。動画視聴機会が増える中で、視聴データの蓄積は増加している。そうしたデータを一律で見るのではなく、ユーザー個々人に寄り添った分析をすることで新たな機能やコンテンツを提案していったり、ユーザーに最適なコンテンツを制作していくという循環を強化していきたい」と語った。

「ヤフオク!」のアプリ開発で実践する開発メソッド

 「ヤフオク!のアプリ開発手法 - エクストリーム・プログラミング」と題したセッションでは、山下真一郎氏と大西智也氏が、同アプリで実践している開発メソッド「エクストリーム・プログラミング」について実際に会場でペアプログラミングを実演しながら紹介した。

ヤフーでヤフオク!アプリの開発を手がける山下真一郎氏と大西智也氏

 山下氏によると、ヤフオク!アプリ開発チームはアジャイル開発を習得するためのサービスを提供するPivotal社において「リーンスタートアップ」と「エクストリーム・プログラミング」という2つの開発手法を組み合わせた「LEAN XP」と呼ばれる手法を学び、開発チームに持ち帰ってノウハウを広めているのだという。「リーンスタートアップは無駄なものを廃してユーザーに価値のあるものだけを開発するという考え方で、エクストリーム・プログラミングは開発チームが心得るべき習慣や実践が定義されたものだ」(山下氏)。

 エクストリーム・プログラミングは、より安いコストで、より高い生産性で、より高い投資効率で開発することを目的とした手法であり、その目的を実現するためには一人一人が明日をより良くしようとし、組織全体がよくなることが必要である。このことをソーシャルチェンジと呼び、エクストリーム・プログラミングにはそのソーシャルチェンジを引き起こすための行動指針となる5つの価値と、プラクティスが定められている。

 5つの価値とは「コミュニケーション、シンプル、フィードバック、勇気、リスペクト」のことであり、 プラクティスとは開発チームが守るべき習慣・実践のことである。価値はプラクティスをただの機械的な作業にしないために定められており、プラクティスを実践するときには5つの価値を最大化することを常に考えることが重要だと説明した。

エクストリーム・プログラミングで定義されたエンジニアの心得
エクストリーム・プログラミングで定義されたエンジニアの心得
エクストリーム・プログラミングで実践される主要プラクティス
エクストリーム・プログラミングで実践される主要プラクティス

 主要プラクティスは13項目が定義されており、山下氏はその中から「ストーリー」についてヤフオク!アプリ開発チームでの実践事例を紹介した。山下氏によると、これまでのアプリ開発では、フロントエンドとバックエンドが別々に開発を進めて最後に両者を結合するという形で開発が進められており、結合時にバグが大量に出てしまうという課題があったのだという。

 エクストリーム・プログラミング導入後は、開発タスクを受け入れテストができる最小単位で切り分けられ、ユーザーにとって価値のあるものかどうかという基準で優先順位をつけて開発が行われているのだという。「それぞれについてプロダクトマネージャーが受け入れテストを行っていくことでチェックポイントが手前になり小刻みになったことで、バグが大量に発生することはなくなり、手戻りがほとんどなくなった」(山下氏)。

 加えて、ヤフオク!アプリ開発チームではプラクティスのひとつである「ペアプログラミング」を実践しているという。具体的には、開発者は2人でペアとなり細かくタスクが割り振られ、ペアで開発・実装を進めていく。そしてこのペアの組み合わせは毎日ローテーションが行われ、これによって全ての開発者がサービス全体の開発に携わることで、属人化を防止しているのだという。

ペアプログラミングのイメージ
ペアプログラミングのイメージ

 そして、このペアプログラミングでは「テスト駆動開発」という手法が取り入れられ、まず一人が失敗するテストコードを書き、もうひとりがそのテストが通るように実装を行う。そして最後にリファクタリングを行うという循環で開発が行われているのだそうだ。

テスト駆動開発のイメージ
テスト駆動開発のイメージ

 開発タスクを細分化して実装していく「ストーリー」、2人が共同で開発を行う「ペアプログラミング」、そしてあえて最初に失敗するテストコードを書くことで確実なプログラミングを進めていく「テスト駆動開発」、この3つの手法を実践すると、どのような形で開発が進むのか。山下氏と大西氏は実際にこれらの手法を使ったライブコーディングを行った。

 開発にあたって、チームでは「PivotalTracker」というプロジェクト管理ツールを使用。エンジニアが行うべきタスクがストーリーとして細かく分かれ、優先度順に並べられている。それぞれの説明は「Gherkin(ガーキン)フォーマット」と呼ばれる文法で記載されており、そのタスクで実現すべきストーリーが書かれているという。こうしてタスクを受け取ったエンジニアは技術的な難易度や課題から、“ジャンケン見積もり”で0から3までのポイント付けを行う、ポイントはそのストーリーの工数感を表すことになる。こうして開発方針が固まったところで2人が交互にテストコードを書きながらテスト駆動開発を行い、CI・CDを通して受け入れテストに進んでいくのだ。

 こうしたエクストリーム・プログラミングの実践によって、受け入れテスト時の失敗率は以前の10%前後から0.1%にまで減少。そして、開発の生産性が高まったことで、開発者の残業時間も大きく削減したのだそうだ。「エクストリーム・プログラミングの導入によって開発者は自分のプロダクトに自信が持てるようになり、集中して開発に打ち込めるようになった。エクストリーム・プログラミングの要素を実践していくことで、生産性の高い強力な開発チームを構築することができるのではないか」(山下氏)。

CNET Japanの記事を毎朝メールでまとめ読み(無料)

-PR-企画広告

企画広告一覧

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]