事例紹介

Instagram と Facebook は Media3 PreloadManager を使用して即時再生を実現し、ユーザー エンゲージメントを向上

4 分で読了
Mayuri Khinvasara Khabya
デベロッパー リレーション エンジニア

ソーシャル メディアの世界は変化が激しく、ユーザーの関心はすぐに移り変わります。Meta のアプリ(Facebook と Instagram)は、世界最大級のソーシャル プラットフォームであり、世界中の数十億のユーザーにサービスを提供しています。Meta にとって、動画をシームレスに配信することは単なる機能ではなく、ユーザー エクスペリエンスの中核です。特に Facebook ニュースフィードと Instagram リールなどのショート動画は、エンゲージメントの主な要因となっています。ショート動画は、クリエイティブな表現と迅速なコンテンツ消費を可能にし、世界中の人々をつなぎ、楽しませています。

このブログ投稿では、Meta が真の即時再生を実現することで、数十億のユーザーの動画再生をどのように変革したかについて説明します。

ショート動画のレイテンシのギャップ

ショート動画では、ユーザーがフィードをすばやくスクロールするため、非常にペースの速いインタラクションが行われます。常に変化するフィードで動画をシームレスに切り替えるには、即時再生に固有の課題があります。そのため、従来のディスク キャッシュや標準のリアクティブ再生戦略を超えるソリューションが必要です。

Media3 PreloadManager による今後の展開

ショート動画コンテンツの増加による消費習慣の変化と、従来の長尺動画再生アーキテクチャの制限に対応するため、Jetpack Media3 に PreloadManager が導入されました。このコンポーネントを使用すると、デベロッパーはディスク キャッシュを超えて、ユーザーが再生する前にメディアをメモリに準備するための詳細な制御とカスタマイズを行うことができます。PreloadManager を使用したメディア再生の技術的な詳細については、この ブログシリーズをご覧ください。

Meta が真の即時再生を実現した方法

既存の複雑さ

以前、Meta は動画配信にウォームアップ(プレーヤーの準備)とプリフェッチ(ディスクへのコンテンツのキャッシュ)を組み合わせて使用していました。これらの方法はネットワーク効率の向上に役立ちましたが、重大な課題も生じました。ウォームアップでは、複数のプレーヤー インスタンスを順番にインスタンス化する必要があり、大量のメモリを消費し、プリロードできる動画はごくわずかでした。リソースの需要が高いため、よりスケーラブルで堅牢なソリューションを適用して、最新の高速スクロール ソーシャル フィードで期待される即時再生を実現することができました。

Media3 PreloadManager の統合

真の即時再生を実現するため、Meta の Media Foundation Client チームは、Jetpack Media3 PreloadManager を Facebook と Instagram に統合しました。プリロード システムと再生システムを統合するために、DefaultPreloadManager を選択しました。この統合では、PreloadManager インスタンスと ExoPlayer インスタンス間でリソースを効率的に共有できるように、Meta の既存のアーキテクチャをリファクタリングする必要がありました。この戦略的な変更により、重要なアーキテクチャ上の利点が生まれました。プリロード タスクを並列化し、1 つのプレーヤー インスタンスを使用して多数の動画を管理できるようになったのです。これにより、プリロード容量が大幅に増加し、以前のアプローチのメモリの複雑さが解消されました。

colinKho.png

最適化とパフォーマンス調整

その後、チームは広範なテストと反復処理を実施し、Meta の多様なグローバル デバイス エコシステム全体でパフォーマンスを最適化しました。初期の積極的なプリロードでは、メモリ使用量の増加やスクロール パフォーマンスの低下などの問題が発生することがありました。この問題を解決するため、メモリを慎重に測定し、デバイスの断片化を考慮し、特定の UI パターンに合わせてシステムを調整することで、実装を微調整しました。

特定の UI パターンに合わせて実装を微調整する

Meta はさまざまなプリロード戦略を適用し、各アプリの特定の UI パターンに合わせて動作を調整しました。

  • Facebook ニュースフィード: UI は現在表示されている動画を優先します。ユーザーがスクロールを一時停止した瞬間に動画が開始されるように、マネージャーは現在の動画のみをプリロードします。この「現在のみ」の焦点により、動画間に多くの静的投稿が表示される環境でのデータとメモリのフットプリントが最小限に抑えられます。現在、システムは表示中の動画のみをプリロードするように設計されていますが、今後の動画もプリロードするように調整できます。
  • Instagram リール: これは、ユーザーが縦方向にスワイプする純粋な動画環境です。この UI では、チームは「隣接プリロード」戦略を実装しました。PreloadManager は、現在のリールの直後の動画をメモリに準備します。この双方向アプローチにより、ユーザーが上または下にスワイプしても、トランジションは瞬時かつスムーズになります。その結果、ユーザーの再生開始や最初のフレームまでの時間など、QoE(Quality of Experience)が大幅に向上しました。

多様なグローバル デバイス エコシステムに対応したスケーリング

数十億のデバイスで高性能な動画スタックをスケーリングするには、積極的なプリロードだけでなく、インテリジェンスも必要です。Meta は、特にミッドレンジからローエンドのハードウェアで、メモリの負荷とスクロールの遅延という初期の課題に直面しました。この問題を解決するため、Media3 実装を中心に デバイス ストレス検出システムを構築しました。アプリは I/O シグナルと CPU シグナルをリアルタイムでモニタリングするようになりました。デバイスに大きな負荷がかかっている場合は、UI の応答性を優先するため、プリロードが一時停止されます。

このデバイス対応の最適化により、即時再生のメリットがシステム安定性の低下を招くことはありません。古いハードウェアを使用しているユーザーでも、よりスムーズで中断のないフィードを利用できます。

mirabelHu.png

アーキテクチャの利点とコードの健全性

ユーザー向けの指標だけでなく、Media3 PreloadManager への移行には長期的なアーキテクチャ上のメリットがありました。統合と調整のプロセスでは、パフォーマンスのバランスを取るために複数のイテレーションが必要でしたが、結果として得られたコードベースは保守性が向上しました。チームは、PreloadManager API が既存の Media3 エコシステムとスムーズに統合され、リソースの共有が改善されることを確認しました。Meta にとって、Media3 PreloadManager の採用は、動画消費の将来に対する戦略的な投資でした。

プリロードを採用し、デバイス インテリジェント ゲートを追加することで、アプリの総再生時間を増やし、グローバル コミュニティの全体的なエンゲージメントを向上させることに成功しました。

Instagram と Facebook への影響

プロアクティブなアーキテクチャにより、両方のプラットフォームで即時かつ測定可能な改善が実現しました。

  • Facebook では、再生開始の高速化、再生停止率の低下、不良セッションの減少 (リバッファリング、開始時間の遅延、画質の低下など)が実現し、全体として総再生時間が増加しました。
  • Instagram では、再生開始の高速化と総再生時間の増加 が実現しました。参加レイテンシの解消 (ユーザーのアクションから最初のフレームが表示されるまでの間隔)により、エンゲージメント指標が直接的に向上しました。バッファリングの減少による中断の減少 により、ユーザーはより多くのコンテンツを視聴し、エンゲージメント指標に反映されました。
beforeAfterPreload.gif

大規模なエンジニアリングの主な学習内容

メディアの消費習慣が進化するにつれて、即時エクスペリエンスの需要は増え続けます。プロアクティブなメモリ管理を実装し、スケーリングとデバイスの多様性に合わせて最適化することで、アプリケーションはこれらの期待に効率的に応えることができます。

  • インテリジェントなプリロードを優先する

プリロードによって、スタッタリングや読み込み時間を最小限に抑え、信頼性の高いエクスペリエンスを提供することに重点を置きます。単純なディスク キャッシュではなく、メモリレベルのプリロードを活用することで、ユーザーが操作した瞬間にコンテンツを準備できます。

  • 実装を UI パターンに合わせる

アプリの UI に合わせてプリロードの動作をカスタマイズします。たとえば、Facebook などの混合フィードには「現在のみ」の焦点を使用してメモリを節約し、Instagram リールなどの縦向きの環境には「隣接プリロード」戦略を使用します。

preloadingStrategy.png
  • 長期的なコードの健全性のために Media3 を活用する

カスタム キャッシュ ソリューションではなく Media3 API と統合することで、プレーヤーと PreloadManager 間でリソースをより適切に共有できるため、1 つのプレーヤー インスタンスで複数の動画を管理できます。これにより、エンジニアリング チームが長期にわたって保守と最適化を行うだけでなく、最新の機能アップデートのメリットも享受できる、将来を見据えたコードベースが実現します。

  • デバイス対応の最適化を実装する

ミッドレンジからローエンドのモデルなど、さまざまなデバイスでテストして、市場でのリーチを拡大します。CPU、メモリ、I/O などのリアルタイム シグナルを使用して、機能とリソースの使用量を動的に調整します。

詳細

開始方法と詳細については、 

これで、即時再生の秘訣がわかりました。ぜひお試しください。

執筆者:

続きを読む