現バージョンのデスクトップ版 Firefox は、オペレーティングシステムにおけるプロセス 1 つでブラウザ全体を実行しています。特に、ブラウザ UI (別名 "chrome code") の JavaScript を実行するプロセスと Web ページ (別名 "content" または "web content") のコードを実行するプロセスが同じです。
将来のバージョンの Firefox は、ブラウザ UI のプロセスと web content のプロセスを分離します。このアーキテクチャの第 1 段階では、すべてのブラウザタブを同一のプロセスで実行して、ブラウザ UI を別のプロセスで実行する予定です。また将来の段階で、複数の content プロセスを持つようにする予定です。マルチプロセス Firefox を提供するプロジェクトは Electrolysis と呼ばれ、e10s と略されることがあります。
一般的な Web ページは、マルチプロセス Firefox の影響を受けません。Firefox そのものや Firefox アドオンの開発に携わる人々は、web content に直接アクセスできる機能に依存するコードを使用している場合に影響を受けます。
content へ直接アクセスせずに、chrome JavaScript では メッセージマネージャ を使用して content にアクセスしなければなりません。容易に移行できるようにするため、クロスプロセスオブジェクトラッパーやアドオン開発者向けの互換性 shim を実装しました。あなたがアドオン開発者で影響を受けるかがわからない場合は、マルチプロセス Firefox を扱うためのガイドをご覧ください。
現在マルチプロセス Firefox は Firefox Developer Edition で、既定で有効です。
- 技術概要
- マルチプロセス Firefox がどのように実装されているかを、高レベルから概観します。
- 用語
- マルチプロセス Firefox で使用する用語のリファレンスです。
- メッセージマネージャ
- chrome と content の間の通信に使用するオブジェクトのガイドです。
- SDK ベースのアドオン
- Add-on SDK を使用して開発したアドオンのマイグレーション方法です。
- URI ごとの読み込み先
- どの URI (chrome:、about:、file:、resource:) がどのプロセスに読み込まれるかのクイックガイドです。
- マルチプロセス化を行う理由
- なぜマルチプロセス Firefox を実装するか? その答えはパフォーマンス、セキュリティ、安定性です。
- アドオンのマイグレーションガイド
- あなたがアドオン開発者でしたら、アドオンが影響を受けるかを突き止めてコードの更新方法を確認してください。
- クロスプロセスオブジェクトラッパー
- クロスプロセスオブジェクトラッパーは、chrome code が同期的に content にアクセスする機能を提供する、マイグレーション支援措置です。
- content プロセスのデバッグ
- frame やプロセスのスクリプトを含む、content プロセスで実行しているコードをデバッグする方法です。
- マルチプロセス化された Firefox におけるタブの選択方法
- マルチプロセス化された Firefox ではタブの選択方法が異なります。
- chrome スクリプトの制限
- chrome code で実施できなくなることと、その修正方法の実例です。
- frame スクリプトの制限
- frame スクリプトで実施できなくなることと、その代替手段の実例です。
問い合わせ先
プロジェクトについて詳しく知り、参加するか疑問点を尋ねてください。
- Electrolysis プロジェクトのページ: https://wiki.mozilla.org/Electrolysis
- IRC: irc.mozilla.org の #e10s
- メーリングリスト: dev.tech.electrolysis