4月9日、Analytics India Magazineが「How Prime Video Cut UI Latency 7.6x by Switching to Rust」と題した記事を公開した。この記事では、Prime VideoがUI遅延を7.6倍削減した具体的な取り組みについて詳しく紹介されている。以下に、その内容を紹介する。
オンラインフォーラムでは、Rustを称賛するプログラマーの声を簡単に見つけることができる。ここ数年、RustはStack Overflowの調査で常に高い評価を受けており、Rustを取り入れた企業はその利点を享受している。現在ではAtlassian、Discord、Figma、Meta、Mozillaといった世界的企業をはじめ、90社以上がRustを実運用で活用している。
昨年11月のQCon San Franciscoにて、Amazon Prime VideoのプリンシパルエンジニアであるAlexandru Ene氏は、リビングルーム向けデバイスのユーザーインターフェースをRustベースのアーキテクチャへと移行し、WebAssemblyへコンパイルする手法を導入したと明かした。従来はReactとJavaScriptでビジネスロジックを構築し、RustとWebAssemblyで低レベルのエンジン部分を管理する二重の技術スタックを採用していたが、新アーキテクチャではすべてをRustで統一している。
Rust導入による最大の恩恵の一つは、アプリの遅延を大幅に低減できた点だという。たとえば、メインページからコレクションページへ移行する際の遅延が約250ミリ秒から33ミリ秒へ削減された。これは7倍以上の改善となる。さらに、Rustを活用することで多彩なアニメーションやスムーズな画面遷移も実現されている。
Ene氏によれば、Reactで試作した際はUIが「非常に快適で反応が良い」と感じられ、チームはRustとWebAssemblyでUIを構築する価値があると即座に納得したという。ただし、RustはUI開発のためのライブラリがまだ十分に成熟しておらず、フロントエンドをRustで構築する手法は一般的とはいえない。そこでPrime Videoは、ReactやSolidJS、Leptosから着想を得たRust製のUI SDKを独自に作り上げた。
このUI SDKはエンティティ・コンポーネント・システム(ECS)に基づくアーキテクチャを採用しており、UIのデータと挙動を切り離している。必要なウィジェットやイベント処理なども用意され、WebAssemblyへコンパイルしてリビングルームデバイス全体で動作させているという。

Ene氏は「すべてRustに統一したことで、生産性の低下を招くこともなかった」とし、JavaScriptを排除したことが大きな突破口になったと語っている。また、RustのUI関連フレームワークや抽象化レイヤーは今後さらに発展が見込まれており、Are We GUI Yet?のようにRustネイティブかつクロスプラットフォームなGUIソリューションの開発状況を追跡するプロジェクトがあることも紹介されている。
RustとWebAssemblyの組み合わせは、JavaScriptを大幅に上回るパフォーマンスを得られる可能性がある。たとえばNearMeのエンジニアリング副社長であるYuji Isobe氏がJavaScriptで書かれたULID生成ライブラリをRustへ書き換え、WebAssembly化したところ、約40倍もの高速化が達成できたという。これはWebAssemblyが低レベルなバイナリフォーマットやシンプルなメモリモデル、Ahead-of-Timeコンパイルなどを採用し、ネイティブコードに近いパフォーマンスを引き出せるためだとされる。
さらにChris Biscardi氏は、Leptosフレームワークを用いて自身のウェブサイトのUIや管理用UIをRustで構築した事例を紹介している。Biscardi氏はAxumをサーバーフレームワークとして活用し、「JavaScriptで構築したサイトと同等の快適さを得られた」と述べている。
詳細は[How Prime Video Cut UI Latency 7.6x by Switching to Rust」を参照していただきたい。