事例紹介

Instagram と Facebook は Media3 PreloadManager を使用して、即時再生を実現し、ユーザー エンゲージメントを高めています

所要時間: 4 分

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

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

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

ショート動画では、ユーザーがフィードをすばやくスクロールするため、テンポの速いインタラクションにつながります。常に変化するフィードで動画間のシームレスな切り替えを実現するには、瞬時の再生という点で独自のハードルがあります。そのため、従来のディスク キャッシュ保存や標準のリアクティブ再生戦略を超えるソリューションが必要です。

Media3 PreloadManager の今後の展開

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

Meta が実現した真のインスタント再生

既存の複雑さ

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

Media3 PreloadManager の統合

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

colinKho.png

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

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

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

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

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

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

数十億台のデバイスに高性能な動画スタックをスケーリングするには、積極的なプリロードだけでなく、インテリジェンスも必要です。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 などの混合フィードには「current-only」フォーカスを使用してメモリを節約し、Instagram Reels などの縦型環境には「adjacent preload」戦略を使用します。

preloadingStrategy.png
  • Media3 を活用してコードの健全性を長期的に維持する

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

  • デバイス認識最適化を実装する

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

詳細

詳細を確認して利用を開始するには、 をご覧ください。

これで、インスタント再生の秘密がわかりました。ぜひお試しください。

作成者:

続きを読む