Firefox 54は、昨年のFirefox 48で実装されたものよりも高度なマルチプロセスアーキテクチャを採用してリリースされました。この改良されたアーキテクチャにより、デフォルトで有効化されるプロセス数が2から5に増加しました。Mozillaは、これはメモリ使用量の削減とパフォーマンスおよびセキュリティの両立という「ちょうど良い」バランスだと説明しています。
Firefoxの電気分解アーキテクチャ
Mozillaは、ブラウザにもたらすメリットを認識し、8年以上前にマルチプロセスElectrolysisアーキテクチャの開発に着手しました。Chromeは当初からマルチプロセスアーキテクチャを実装していましたが、これはGoogleのエンジニアが将来的にユーザーを保護するためにこのアーキテクチャが必要になると見抜いていた先見の明と言えるでしょう。また、これは新しいブラウザをゼロから開発することのメリットでもありました。
Mozillaのシニアプロダクトマーケティングマネージャーであるライアン・ポロック氏は、Electrolysisへの移行を積極的には検討していなかったと認めた。これは、Firefox初期の人気を支えたアドオンが機能しなくなることを懸念していたためだ。Chromeのシンプルな拡張機能モデルの人気が示すように、ブラウザのコア部分を変更できる高度なアドオンは不要だと判断したMozillaの考えが変わったのかもしれない。
Mozillaは最近、「WebExtensions」APIを採用したことを発表しました。これにより、Chromeのような拡張機能をわずかな変更でFirefoxで使用できるようになります。Mozillaはまた、これがすべてのブラウザベンダーに採用される新しい「ブラウザ拡張機能」仕様の策定につながることを期待しています。
よりシンプルな拡張機能モデルへの移行により、Firefox は複数のプロセスを有効にし、それらをサンドボックスで分離できるようになりました。Mozilla は昨年の Firefox 48 で、UI 用とコンテンツ用の 2 つのプロセスのみを有効にしていました。これにより、Web ページがブラウザインターフェースのパフォーマンスに影響を与えることによるブラウザのハングアップが軽減されました。また、コンテンツをブラウザから(可能な限り)分離することで、部分的なサンドボックス化も実現しました。
Mozillaは現在、ブラウザインターフェース用に1つのプロセス、コンテンツ用に4つのプロセスを実装することで、これをさらに進化させています。なぜ4つなのでしょうか?Mozillaは、大多数のユーザーにとって、そしてメモリ使用量の最適化の観点からも、これが「ちょうど良い」プロセス数だと考えているからです。
コンテンツがサンドボックス化されるほど、複数のタブ間での共有は少なくなります。使用されるブラウザタブの数が増えると、各プロセスとサンドボックスに「冗長」なコードが追加されるため、メモリ使用量も大幅に増加します。そのため、4つのコンテンツプロセスがブラウザタブや拡張機能でいっぱいになると、Firefoxは複数のタブを同じプロセスに含めるようになります。
Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。
Mozillaのメモリ使用量ベンチマーク
Mozilla は独自のメモリ使用量ベンチマークを実行しましたが、Chrome と比較してメモリ使用量が大幅に削減されました。
Windows 10 — Chrome は Firefox (64 ビット) の 1.77 倍、Firefox (32 ビット) の 2.44 倍のメモリを使用しました。macOS — Chrome は Firefox (64 ビット) の 1.36 倍のメモリを使用しました。Linux — Chrome は Firefox (64 ビット) の 1.42 倍のメモリを使用しました。
Firefox 54 は Chrome だけでなく、他のすべての主要ブラウザよりも効率的です。
このメモリ使用量の大幅な削減は、少なくともセキュリティの面では、重大な欠点なしには実現できない可能性があります。最終的な結果は、今後のPwn2Ownコンテストや、実際にFirefoxに対して発見されたエクスプロイトの利用可能性から明らかになるでしょう。もしFirefoxの5つのプロセスが、Chromeの「タブごとに1つのプロセス」アーキテクチャと同等の攻撃阻止効果を99%発揮できるのであれば、Mozillaはここで適切な妥協点を見出したと言えるでしょう。
幸いなことに、このアーキテクチャは5プロセスに限定されているわけではないようです。Firefoxユーザーはブラウザで使用するプロセス数をカスタマイズできるからです。アドレスバーにabout:configと入力し、 dom.ipc.processCountの値を変更してください。
通常、開いているタブの数とインストールしている拡張機能の数がわかっている場合は、その数を有効化するプロセス数として設定できます。ポロック氏によると、この機能は将来のリリースでブラウザのメイン設定で利用できるようになる予定で、すべてのユーザーがより使いやすくなるはずです。
パフォーマンスとセキュリティのためにFirefoxを刷新
ここ2、3年ほど、MozillaはFirefoxの刷新計画を加速させているようです。特にパフォーマンスとセキュリティ面での強化です。この動きはまさに時宜を得たものでした。なぜなら、Firefoxは近年、より高速で安全なブラウザとして多くの人に認識されているChromeの台頭によって、既に大きな市場シェアを失っているからです。
Firefoxの「ちょうど良い」マルチプロセスアーキテクチャが、Chromeのセキュリティとパフォーマンスに十分近づき、その差が無視できるほどになるかどうかはまだ分かりません。しかし、MozillaはFirefoxのパフォーマンスとセキュリティの改善に着手したばかりです。
「Project Quantum」はまもなくFirefoxに実装され、レンダリングエンジンの中核部分をRustで記述されたコードに置き換えます。Rustは高速でメモリセーフな言語であり、メモリ破損バグの排除を約束しています。MozillaがRustで開発した実験的なブラウザレンダリングエンジン「Servo」は、CPUのすべてのスレッドを活用してページ要素を処理できます。
Rust言語の利点と、Mozillaがブラウザに実装を計画している最新のアーキテクチャを組み合わせることで、Firefoxは近い将来、パフォーマンスとセキュリティの両面でChrome(最大のライバル)を上回る可能性があります。しかし、Googleがブラウザの一部をRustなどの高速でメモリセーフなプログラミング言語で書き換えない限り、これらの利点はChromeでは容易に追いつけないかもしれません。
ルシアン・アルマスは、Tom's Hardware USの寄稿ライターです。ソフトウェア関連のニュースやプライバシーとセキュリティに関する問題を取り上げています。