YouTubeにおけるタイムラグ撲滅大作戦

YouTubeにおけるタイムラグ撲滅大作戦 1

着々と進んでます!

YouTubeに限ったことじゃありませんが、動画をクリックしてから再生が始まるまでの間、数秒ですが時間がかかります。でもこの数秒が、すごく苦しくないでしょうか。待つのってわりと苦痛です。YouTubeではそれを理解してます。米Gizmodo編集部ではカリフォルニア州サンブルーノのYouTube本社を訪問、彼らがそんな苦しい時間をほとんどゼロに近づけるべく開発中の技術について取材してきました。

YouTubeのエンジニアリングチームのリーダー、ジョン・ハーディング氏によれば、ユーザーが動画をクリックしてから200ミリ秒以内に再生が始まれば、ユーザーはそれを「一瞬」と感じるそうです。そしてそれが、彼らのゴールでもあります。Netflixなどの他のサービスの場合、再生時間が長いので、ユーザーは1分くらい待たされたって気にしません。でもYouTubeの平均的な動画はもっと短くて、ユーザーはそんなに待ってくれません。なのでYouTubeは、タイムラグを徹底的に撲滅しようとしています。

パンみたいに動画をスライス

YouTubeにおけるタイムラグ撲滅大作戦 2

最近改善したのは、気づいた人もいるかもしれませんが、動画ファイルの分割方法です。かつてYouTubeでは、アップロードされた動画は複数の解像度、たとえば360pとか480p、720p、1080pといった具合にコピーされていました。それら全体がひとつの大きなファイルだったんです。動画をクリックすると、コンピューターはその大きなファイルをダウンロードし始め、インターネット接続がある程度速ければストリーミングがダウンロードに追い着くことはなく無事最後まで見られる、というわけです。でもそうじゃない場合、あの再バッファのための一時停止の時間がやってきます。再生中に解像度を変えることはできましたが、いずれにしても大きなファイルをダウンロードする必要があったんです。

でも2012年4月、YouTubeでは「Sliced Bread(スライスしたパン)」と称する技術を導入しました。動画がアップロードされたら複数の解像度にコピーするのは同じですが、各コピー版がそれぞれスライスされたパンのような状態になるんです。360pが1斤、480pが1斤...という状態です。そしてYouTubeでは、それらを1度に1枚ずつユーザーに見せていきます。そしてネット接続の状況に応じて、動画のクオリティを動的に変えるんです。

なのでたとえば、ユーザーが動画を最初にクリックしたときには、再生開始を早めるためにあえて最高クオリティでない480pのパンから2、3枚出してきたりします。YouTube側でネット接続が安定して高速だと検知できたら、次のスライスパンは1080pのかたまりから出すようにして、質の高い動画に切り替えます。でも途中で別の巨大ファイルをダウンロードし始めて接続スピードが落ちたりしたら、次のスライスは720pになるかもしれません。理想的には、この移行はシームレスに行われます。解像度の変化には気づくかもしれませんが、きちんと動いている場合、途中で止まったりはしません。

この薄切りパン作戦は今のところ成功していて、YouTubeによれば動画が再バッファされるケースを40%削減しています。でもこれは、まだまだ序の口なんです。

3段階の高速化

ハーディング氏が上の動画でホワイトボードを使って説明してくれている内容を以下にまとめます。現在、YouTubeの動画をクリックすると、最初に再生用ページ(動画のあるWebページ)が読み込まれます。次にページをコントロールするJavascriptがダウンロードされ、次に動画プレイヤー、次に動画本体、という順にダウンロードされます。それが全部できてストリーミングが始まります。なのでこれらの処理の高速化も、各段階に対して処理を早めたり減らしたりといった方法で進められています。

・並行処理

再生高速化の最初のステップは、上に書いた段階的な処理を一部並行にすることです。具体的には、Javascriptをダウンロードする段階でCSSと動画プレイヤーも同時にダウンロードするんです。それが終わると動画がリクエストされて再生が始まりますが、これだけではまだ短縮できる時間は少ないです。

・ステップ削減

これによって、動画を複数見る場合かなりの時間短縮が感じられそうです。1度動画を見たらそのときにプレイヤーもダウンロードされるので、次の動画を見るときに再度プレイヤーをダウンロードする必要はありません。なのでYouTubeでは、すでに別の動画を見たユーザーの場合、プレイヤーのダウンロードを飛ばしてすぐに動画をリクエストする流れにしようとしています。

・コンテンツのプリロード

YouTubeによれば、ユーザーはひとつ動画を見たら、別の関連動画やおすすめ動画も見ていく傾向があるそうです。なのでYouTubeでは、それら別の動画の最初のスライス(動画ファイルの先頭部分)もプリロード(事前読み込み)しておこうとしています。それによって、ある動画を見終わって関連動画をクリックした場合、すでに最初の部分はキャッシュされているので、ほとんど一瞬で再生が始まります。

上の動画ではその技術を使った新YouTubeのプロトタイプが見られます。従来は再生までに約1.25秒かかった動画が、プロトタイプでは0.5秒以下で再生開始しています。これは彼らのオフィスの超高速なネットワーク上でしたが、家庭用の接続スピードなら、むしろもっと劇的な改善になると思われます。

ただ、このプリロードの前提になるのは、「YouTubeがユーザーの次のクリックを正確に予測できる」という考え方です。個人的には、自分が関連動画をクリックするのは4%...くらいじゃないかと思うのですが、たしかにたまにクリックしますし、もっとたくさんクリックする人はいると思います。幸い、関連動画の精度は、特定のチャンネル内なら同じコンテンツ作者の動画に興味があるはずなので、より高くなるはずです。

念のため申し添えますと、再生ボタンを押してから再生が始まるまでの間の最大のハードル、すなわち広告が、近い将来なくなることはなさそうです。まあそれでも、早いに越したことはありません。

モバイルでも高速化

こうした改善は、接続スピードが遅かったり不安定だったりするモバイル端末ではよりうれしいことです。そしてYouTubeでも、モバイルでの高速化に取り組んでいます。YouTubeのAndroidアプリを使っている人はもう気づいたかもしれませんが、設定の中に「プリロード」のページがあります。そこのボックスにチェックを入れておくと、登録したチャンネルや「後で見る」に入れた動画は、バックグラウンドで事前にキャッシュされるようになります。なのでその動画を見ようとして再生ボタンをクリックすると、ほとんど一瞬で再生が始まります。しかも接続スピードに関係なく、フルHDです。動画の中で移動しても、再読み込みしたりしません。

ただ唯一の問題は、プリロードしていても動画を見るときは何らかのインターネット接続が必要だってことです。夜のうちに家で動画を読み込んでおいて、日中地下鉄で移動中に見る...ってことができるとさらに良いと思います。でもYouTube側では、そのコンテンツがその時点でも提供中かどうかとか、アクセスできるものかといったことを確認しなきゃいけないので、ちょっとしたチェックインは最低限必要なんです。それに広告も出さなきゃいけません。この点についてはどうにかしてくれることを期待します。

いつから使える?

モバイルに関しては、今のところAndroidでしかプリロードはできませんが、近々iOSでも可能になります。さらにPC版はもっと早くて、早ければ今週木曜日(米国時間6月27日)、なるべく7月4日(米国独立記念日)に近いどこかで公開したいと言われました。

これらみんな、正しい方向性だと思います。もちろん家の接続スピードによってかなり違いはありますが、動画における待ち時間問題はユーザー的に最重要課題のひとつです。我々が知らないうちにYouTubeがこんな良いことを進めてたなんて、うれしいですね。取材にお応えいただいたYouTube(グーグル)のジョン・ハーディングさん、マット・マクラーノンさん、ありがとうございました!

Brent Rose(原文/miho)