Firefox web browser - Faster, more secure & customizable - moving to multi-processes?

従来のWebブラウザは単一プロセスで動作していた。しかしGoogle ChromeやIE8など、最近のWebブラウザは複数のプロセスで動作するように変わりつつある。Microsoftの研究者からはGazelleという、ブラウザをカーネルにみたててリソース制御をおこなうというより突っ込んだ研究案も報告されている。

ブラウザを複数のプロセスで動作させる方法には利点欠点がある。マルチプロセス化することでクラッシュやセキュリティの影響をタブ内に限定することが可能になり、マルチコア/プロセスの恩恵を受けやすくなる。逆に単一プロセスの場合よりも多くのメモリを消費し、またマルチプラットフォームの実現も難しくなる。

OSSのWebブラウザとして最大のシェアを誇るFirefoxは単一プロセスの設計だ。単一プロセスで発生する問題に対してクラッシュリカバリ機能の提供などで対応してきた。しかしFirefoxでもマルチプロセス化の議論がなかったわけではなく、長い間マルチプロセスアーキテクチャを採用するかどうかという議論は続けられてきた。マルチプラットフォームの実現という責任もあり、Google Chromeが発表された当時はまだFirefox開発者はシングルプロセスもで十分だと考える向きも多かったようだ。

しかしIE8の正式リリース、Google Chromeの急激な成長という状況で、Firefox開発者の意見も変わりつつある。Firefoxをマルチプロセス化する取り組みがContent Processes - MozillaWikiとして発表され、正式な取り組みとしての色を呈してきた。開発が順調に進んだとして、マルチプロセス版のFirefoxは2010年以降の登場となるが、具体的にどういった手順を踏んで開発を進めるかが示されたことは注目に値する。

まず現在の単一プロセスから、UIプロセス(chrome)とコンテンツプロセスへと分離を実施。コンテンツプロセスがウィジェットの描画やイベントツールの処理をおこなう。次の段階として親プロセスへ種々の処理を委譲していき、その後でタブやタブグループごとにコンテンツプロセスを生成して処理の並列化を進めると説明されている。詳細なアーキテクチャがどうなるかは今後の開発次第だが、安定性と性能の改善を目的としてマルチプロセス化の取り組みが始まっていることに注目しておきたい。