Amazon Prime Videoが動画再生にWebAssemblyを採用。再生デバイス上にWasm VMをデプロイ、高フレームレートなど実現

今回は「Amazon Prime Videoが動画再生にWebAssemblyを採用。再生デバイス上にWasm VMをデプロイ、高フレームレートなど実現」についてご紹介します。

関連ワード (管理、節約、規模等) についても参考にしながら、ぜひ本記事について議論していってくださいね。

本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。


Amazon.comは動画サービスのAmazon Prime Videoにおいて、テレビやFire TV、スマートフォンなどの再生デバイス上にWebAssemblyのランタイムをデプロイし、アプリケーションの一部にWebAssemblyを採用したことで、動画のフレームレート向上などを実現したと明らかにしました。

Updates to the @PrimeVideo app need to work on 8,000+ different devices. Alexandru Ene explains how the team managed the trade-off between performance and ease of update and, with the move to WebAssembly, increased speed & stability. #PrimeVideo https://t.co/8ikb9Pii8f

— Amazon Science (@AmazonScience) January 27, 2022

Amazon Prime Videoはグローバルに展開されている世界最大級の動画配信サービスです(きっとあなたの手元にも対応デバイスがあるはず)。

これだけの規模の本番環境にWebAssemblyが投入されている事例は他にないはずで、WebAssemblyの実用度と成熟度を知る上で非常に重要な事例といえます。

同社が明らかにした内容をまとめてみました。

JavaScriptで作られているAmazon Prime Videoアプリ

Amazon Prime Videoは、テレビやセットトップボックス、Fire TVのようなスマートデバイス、スマートフォンやタブレットなど、さまざまなデバイスで映画やテレビ番組などを見ることができる動画配信サービスです。

同社によると8000種類以上のデバイスでAmazon Prime Videoが利用可能です。

figレンダラで描画され、デバッグ中のAmazon Prime Videoの画面。「How Prime Video updates its app for more than 8,000 device types – Amazon Science」から引用。以下の図も同じ

これだけ多種多様なデバイスに対して、ログイン画面やパーソナライズされたポータル画面、動画の再生などの機能を実現するために、Amazon Prime VideoのアプリケーションはC++で開発されたJavaScript VMと、その上で動くJavaScriptアプリケーションの2つから構成されています。

そしてそれぞれが必要に応じてデバイスにダウンロードされ、実行されます。

fig

特にJavaScriptのアプリケーション部分は実行時にダウンロードされ実行されることで、機能追加などの変更やバグフィクスが容易になっていると説明されています。

プロトタイプのWebAssembly化で10倍から25倍高速に

Amazon.comがこのAmazon Prime VideoのアプリケーションにWebAssemblyの採用を検討し始めたのは2020年8月とのことです。

同社はプロトタイプとして低レイヤのJavaScriptのコンポーネントのいくつかをRustのコードで書いてコンパイルし、WebAssemblyのバイナリにしたところ、JavaScriptのコードと比較して10倍から25倍も高速になったことを発見します。

これによりAmazon Prime VideoのアプリケーションにWebAssemblyを取り入れることを決定。

JavaScript VMの部分にWebAssembly VM(Wasm VM)をランタイムとして追加し、ユーザーのデバイス上へデプロイした上で、これまでJavaScriptで実現していたレンダラ、アニメーション、シーンとリソース管理の部分をRustコードから生成したWebAssemblyで置き換えました。

fig

これにより中価格帯のテレビでフレームタイム(動画の1コマを表示するのにかかる時間)が平均で28ミリ秒から18ミリ秒に、最悪のケースでも40ミリ秒から25ミリ秒に改善し、現在進行形でさらに改善が進んでいるとしています。

また、追加されたWasm VMの総メモリ消費量は、最大でも7.5メガバイト。WebAssemblyへの移行によってJavaScriptヒープメモリを30メガバイトも節約することができたとのこと。

Amazon Prime Videoで利用されているデバイスのほとんどが豊富なメモリを持たないデバイスであるため、これは歓迎すべきことだと同社は指摘しています。

最後に、結論となっている部分をブログ「How Prime Video updates its app for more than 8,000 device types」からそのまま引用しましょう。

As I mentioned, the switch to Rust and Wasm has improved the applications’ frame rate stability and speed. To reach our goal of reliable 60-frame-per-second frame generation and improve input latency, we will move more systems to Wasm, such as focus management and layout.

前述の通り、RustとWebAssemblyに切り替えたことでアプリケーションのフレームレートの安定性とスピードが向上しました。今後、信頼性の高い毎秒60フレームのフレーム生成という目標を達成し、入力レイテンシーを改善するために、フォーカス管理やレイアウトなど、さらに多くのシステムをWebAssemblyに移行する予定です。

動画配信にとどまらず、優れたランタイムとしてのWasmへ

同社が明らかにした内容からは、WebAssemblyの特徴である高速なアプリケーションの実行とコンパクトなランタイム、そしてさまざまなデバイスに対応する移植性の高さといったものが浮き彫りになったように思います。

その特徴は動画配信だけにとどまらず、あらゆるデバイスにおけるさまざまなアプリケーションのランタイムとしてのWebAssemblyの可能性の大きさをも示すものになっているのではないでしょうか。

COMMENTS


Recommended

TITLE
CATEGORY
DATE
マイクロソフト、「Exchange Server」の累積更新プログラム–4つのゼロデイ脆弱性の修正も
IT関連
2021-03-19 03:40
舞鶴市、ローカルブレイクアウトを実現するための統合型セキュリティ基盤を導入
IT関連
2023-09-07 14:57
シスコ、日本のデジタル化施策を「CDAで推進」と表明
IT関連
2021-02-12 08:54
処方箋なしでも病院の薬が買える「零売薬局」を展開するGOOD AIDが総額2億円のシリーズB調達
ヘルステック
2021-08-13 09:31
VMware、ゲルシンガーCEOの後任にCOOのラグー・ラグラム氏を指名
企業・業界動向
2021-05-14 09:51
Google、Dart 3.3正式リリース。Flutter WebのWebAssemblyへのコンパイルも準備開始
Dart
2024-02-22 22:26
整理不要の情報共有ツール・社内Wiki「Nerve」を手がけるビヘイビアが3500万円を調達
ネットサービス
2021-03-26 08:13
ゼンリンCVC子会社出資第1号の「レイ・フロンティア」とゼンリンが移動最適化や位置情報ビジネスで提携
モビリティ
2021-06-08 22:12
[速報]「AWS大阪リージョン」正式オープン。大阪ローカルリージョンを拡張し3つのアベイラビリティゾーンから構成、事前申し込みなど不要に
AWS
2021-03-03 23:54
青森県立中央病院、院内Wi-Fiで病室でのオンライン面会を実現
IT関連
2022-04-14 14:47
日新火災とNSSOL、新たなオープン系基幹システム構築に向けたモダナイゼーションプロジェクトを開始
IT関連
2023-12-06 17:56
「Windows 11」プレビュー版、タブレットに最適化されたタスクバーが復活
IT関連
2022-09-14 04:31
「Chromebook」、自動ソフトウェア更新の提供期間を10年に延長–2024年から
IT関連
2023-09-16 18:48
AIは安全なコードの記述に有効、ただし2FAなどの基本対策が大前提–GitHubに聞く
IT関連
2024-02-27 15:35