用語辞典・OS・ブラウザ

ブラウザエンジン

ブラウザエンジンとは

browser engine(ブラウザ・エンジン)は、Webページの取得、表示、スクリプト実行などをまとめて担うブラウザの中核ソフトウェアです。ネットワーク、文書モデル、レンダリング、JavaScript・WebAssembly、保存領域、セキュリティ、メディア等を協調させます。

ただし「ブラウザーエンジン」は標準仕様で構成要素境界が一つに固定された名称ではありません。文脈によってレンダリングエンジンだけを指したり、Blink・WebKit・Geckoのような広いWebプラットフォームを指したりします。

用語の範囲が揺れるため、エンジン名だけで比較せず、「HTML・CSS描画」「JavaScript」「ネットワーク」「処理分離」のどこまでを含めて話しているか確認します。

ナビゲーションを起点に、通信、文書、スタイル・レイアウト・描画、スクリプト、メディア、保存領域、セキュリティを協調させるブラウザーUIの内側にある広い中核と、sandboxed処理群を俯瞰する
ブラウザーの画面を管理する中心プロセスがTLS通信、キャッシュ、DOM、スタイルとレイアウト、スクリプト、メディア、Cookieと保存領域、権限、アクセシビリティ、入力、GPUへ接続し、複数の描画プロセスをサンドボックスで分離するピクトグラム図解
図1Webページ一枚の表示にも、サーバーとの通信から入力イベントまで異なる構成要素と処理が関わります。

中核を八つの担当に分ける

Networkリソースを取得

DNS、接続、TLS、HTTP、プロキシ、キャッシュ、Cookieを扱います。

Document構造を組み立てる

HTMLを解析してDOMを作り、ストリーミング中もsubresourceを発見します。

Rendering画面を構成する

CSS連鎖、レイアウト、描画、ラスター、合成で画素へ変換します。

Executionプログラムを動かす

JavaScript・WebAssemblyエンジンとホストAPIを接続します。

Storageオリジン別データを保存

Cookie、キャッシュ、ローカル保存領域、データベース、サービスワーカー等を管理します。

Media画像・音声・映像を処理

復号、ストリーミング、caption、機器権限等を調整します。

Security信頼境界を守る

same-origin、CSP、サンドボックス、権限、証明書を強制します。

Accessibility意味構造を外部へ渡す

accessible木構造、焦点、名前、状態をassistive technologyへ提供します。

URLを開いてから画素が出るまで

ナビゲーション要求を受けるとネットワーク構成要素がDNS、接続、TLS、HTTPを進め、応答本文を描画処理へストリームします。HTML解析器は受信途中からDOMを作り、スタイルシート、スクリプト、画像、フォント等を追加要求します。

CSSが揃うと計算済みスタイルとレイアウトを計算し、描画コマンドを作り、ラスターと合成で画面へ出します。スクリプトは途中で解析器を止めることも、後からDOMを変えて再計算を起こすこともあります。

JavaScriptエンジンはブラウザーエンジンの一部として協調する

V8、JavaScriptCore、SpiderMonkey等はECMAScriptを実行しますが、DOM、タイマー、ネットワーク、保存領域は言語仕様そのものではありません。ブラウザーエンジンがホストAPIとして公開し、イベントループを通じてコールバックを実行します。

したがってJavaScriptエンジンだけを別アプリケーションへ組み込んでも、ブラウザーと同じ文書や取得が自動的に付くわけではありません。

ブラウザーUIは通常エンジン境界の外にある

タブstrip、アドレス欄、ブックマーク管理者、ダウンロードUI、プロファイルselector、設定ページ、更新サービスはブラウザー製品の外殻です。エンジンはその要求を受けてナビゲーションやコンテンツ表示を行います。

同じエンジンを使う二製品が異なる権限確認画面、プライバシー設定、履歴同期を持てるのは、製品層が別だからです。逆にUIが似ていてもエンジン系統が同じとは限りません。

処理分離と構成要素分離は別の設計図

ソースコード上のネットワーク構成要素が一つでも、実行時は専用のネットワークプロセスで動く場合があります。レンダリング構成要素も複数の描画プロセスへ分かれます。ブラウザー、描画、GPU、ネットワーク、保存領域の各プロセスがIPCで連携します。

処理境界はセキュリティとstabilityを高めますが、IPCオーバーヘッドとメモリーを使います。ブラウザーはサイト分離、機器メモリー、処理負荷に応じて処理を生成・再利用します。

レンダリングエンジンとの違い

レンダリングエンジンはHTML・CSSをレイアウト・描画して画素へ近づける部分へ焦点を当てる名称です。ブラウザーエンジンは、それにネットワーク、スクリプト、保存領域、セキュリティ等を含めた広い協調系として使われます。

ブラウザーエンジンはWebページを成立させる中核構成要素群です。曖昧な総称だからこそ、描画だけか、JavaScript・ネットワーク・処理基盤まで含むかを言葉で補います。

browser・renderer process、Blink、network、storage等を分離するChromium architecture:Chromium「Multi-process Architecture」。WebCore、JavaScriptCore、UI・WebContent・Networking processを持つ別実装の構成:WebKit Documentation「Introduction」

関連用語