用語辞典・OS・ブラウザ

Firefox

Firefoxとは

Mozilla Firefox(モジラ・ファイアフォックス)は、Mozillaが開発するGecko系のオープンソースWebブラウザです。ChromiumやWebKitとは別系統のエンジン実装を持ち、Windows、macOS、Linux、Android等で提供されます。

Firefoxという製品の中で、Gecko(ゲッコー)はHTML・CSS・DOM、ネットワーク、JavaScript、グラフィックス、IPC等を含む広いプラットフォームとして説明されます。JavaScriptエンジンはSpiderMonkey(スパイダーモンキー)、ネットワーク層はNecko(ネッコー)です。

Geckoを「画面を描くだけの部品」と考えると範囲を狭く見積もります。Firefoxの内部資料ではWebプラットフォーム全体を支える多数の構成要素を含みます。

オープンソースの変更をレビューしてGecko各構成要素へ取り込み、複数の分離されたコンテンツ処理でサイトを動かすFirefox製品、Geckoプラットフォーム、SpiderMonkey、Necko、サイト分離を分ける
複数の開発者からレビュー済みパッケージがGeckoへ入り、DOM・レンダリング、JavaScript、ネットワーク、メディア、アクセシビリティ、保存領域、IPCを経て、複数サイトの分離されたコンテンツ処理へつながるピクトグラム図解
図1親処理が権限と時間窓を調整し、ページコンテンツは分離された処理で処理します。Geckoはその両側にまたがる構成要素群です。

内部を六つの担当へ分ける

Firefox製品利用者機能を提供

タブ、アドレス欄、ブックマーク、プロファイル、プライバシー、add-on、更新をまとめます。

GeckoWebプラットフォームを構成

DOM、スタイル、レイアウト、グラフィックス、セキュリティ、IPC等の広い基盤です。

SpiderMonkeyJavaScriptを実行

ソースを解析・コンパイルし、不要データ収集と実行時を管理します。

Neckoネットワーク通信を扱う

HTTP、キャッシュ、DNS、プロキシ、ソケット等を抽象化して提供します。

Processesコンテンツを隔離

親、コンテンツ、GPU、ソケット等へ役割を分け、IPCで連携します。

Openソース変更をレビューして統合

公開ソース、不具合tracker、試験、レビューを通じて構成要素を改善します。

Geckoはレンダリングエンジンより広い呼び方

HTML解析器がDOMを作り、CSS連鎖とレイアウトがフレーム・表示一覧を作り、グラフィックス層が描画します。これだけならレンダリング処理経路ですが、Geckoのアーキテクチャー説明にはNecko、SpiderMonkey、IPC、DOM API等も含まれます。

そのため「FirefoxのレンダリングエンジンはGecko」という日常表現は通じても、内部構成要素を学ぶ場面ではGecko=レイアウトだけと置き換えません。

SpiderMonkeyとイベントループの境界

SpiderMonkeyはECMAScript言語を実装し、JITコンパイル、オブジェクト、不要データ収集等を担います。一方、DOMイベント、タイマー、ネットワークコールバック、処理待ち行列はブラウザーホストであるGecko側と連携します。

JavaScriptが一時停止して見えるときも、スクリプト計算、main-threadレイアウト、ネットワーク待ち、拡張、不要データ収集で原因は異なります。性能ツールの主要スレッド、ネットワーク、メモリーを分けて読みます。

マルチプロセスとFissionでサイト境界を強める

FirefoxはUIや強い権限を持つ親処理と、Webコンテンツを扱うコンテンツ処理等を分けます。Fission(フィッション)はサイト分離を進め、サイト横断iframeを含む異なるサイトを処理境界で隔離します。

処理分離により、異常終了と侵害の範囲を狭められますが、IPC、共有メモリー、GPU、拡張等の境界検証も必要です。処理数が多いことだけを安全性の点数にしません。

プライバシー機能とエンジン系統は別の軸

追跡保護、コンテナー、プライベート閲覧、Cookie 分割、DNS設定等は製品方針とWebプラットフォーム実装が組み合わさります。Gecko系だから自動的に匿名になるわけではありません。

厳格な保護はサイト横断追跡を減らす一方、サインインや組み込みコンテンツを壊す場合があります。サイト単位の例外、保護報告、Cookie・保存領域状態を確認します。

独立系エンジンで検証する意味

Web 開発者がChromium系だけで検証すると、非標準動作や一実装の不具合へ依存する危険があります。Firefoxでも試すことで、Web標準に基づく実装か、特定エンジンだけの挙動かを切り分けやすくなります。

FirefoxはMozillaのブラウザー製品、Geckoは広いWebプラットフォーム、SpiderMonkeyとNeckoはその重要構成要素です。製品名とエンジン名を一語にまとめません。

GeckoがHTML rendering、Necko、SpiderMonkey、IPC、DOM等を含むMozilla platformであること:Firefox Source Docs「Gecko」。process modelとsite isolationの構造:Firefox Source Docs「Process Model」

関連用語