用語辞典・OS・ブラウザ

Safari

Safariとは

Safari(サファリ)は、Appleが開発し、主に同社製品で提供するWebKit系のWebブラウザです。macOS、iPhone、iPad等のプラットフォーム機能と統合され、タブ、履歴、ブックマーク、パスワード・パスキー、プライバシー保護、拡張等を提供します。

Webコンテンツの中核にはオープンソースのWebKit(ウェブキット)を使います。WebKitはエンジンであり、Safariという完成ブラウザーそのものではありません。

Safariの機能をWebKitだけで説明することも、WebKitをSafari専用と考えることもできません。製品UI、OS連携、配布バージョンと、エンジンのソース・処理を分けます。

デスクトップ・tablet・スマートフォンのブラウザー製品から、分離されたコンテンツ処理とWebKit内部の処理へ降りるSafariの製品機能、WebKitのエンジン、websiteごとのサンドボックスを分ける
デスクトップ、tablet、スマートフォンに共通する一般的なブラウザー製品と、UI処理、複数のsandboxed WebContent処理、ネットワークと保存領域、DOM、レイアウト、JavaScript、グラフィックス層を示すピクトグラム図解
図1ブラウザー時間窓を管理する側と、信頼できないなページコンテンツを処理する側を分離し、必要な通信を処理間メッセージで渡します。

製品とエンジンを五つの役割へ分ける

Safari製品利用者機能をまとめる

タブ、reader、ブックマーク、プロファイル、パスワード、拡張、設定を提供します。

UI処理時間窓と権限を調整

ナビゲーション、menu、権限確認画面、処理生成等を統括します。

WebContentサイトコンテンツを分離処理

DOM、スタイル、レイアウト、スクリプト等をsandboxed処理で扱います。

Networking通信と共有状態を管理

要求、キャッシュ、Cookie、認証情報等を処理境界越しに提供します。

WebKitコアWeb標準を実装

WebCoreとJavaScriptCore、グラフィックス・プラットフォームabstractionが協調します。

WebCoreとJavaScriptCoreは別の役割

WebCore(ウェブコア)はHTML、DOM、CSS、レイアウト、レンダリング等の多くを担当します。JavaScriptCore(ジャバスクリプトコア)はJavaScriptを解析、コンパイル、executeするエンジンで、JSCとも呼ばれます。

スクリプトがページを変更するとJavaScriptCoreで動いた処理がDOM APIを通じてWebCore側の状態を変え、必要範囲のスタイル・レイアウト・描画が更新されます。一つの巨大な「表示処理」ではなく、境界のある部品が連携します。

SafariのUIはWebKitの外側にも広がる

タブグループ、共有タブ、パスワードAutoFill、パスキー、reader、プライベート閲覧、プロファイル、拡張管理、OSの共有画面やアクセシビリティ連携は、ブラウザー製品とプラットフォーム側の機能を含みます。

WebKitソースを組み込んだ別アプリケーションが同じUI・同期・プライバシー方針になるわけではありません。逆にSafariのWeb表示以外の機能をWebKitのバージョンだけで説明することもできません。

処理分離は故障と攻撃の範囲を狭める

WebKit2アーキテクチャーではUI処理とWebContent処理を分け、ネットワークやGPU等も別処理へ分離できます。サイトごとのコンテンツを隔離すれば、一つのページが異常終了してもブラウザー全体への影響を抑えられます。

処理分離は万能な安全証明ではなく、IPC検証、サンドボックスプロファイル、OS権限、更新、サイト分離が揃って働きます。メモリー使用量や処理再利用もあるため、タブと処理は一対一固定ではありません。

Safari Technology Previewは将来機能の検証版

Safari Technology Preview(サファリ・テクノロジー・プレビュー)は、開発中のWeb技術を早く試すための別配布です。通常版Safariと並行利用できますが、未完成機能や挙動変更を含みます。

Technology Previewで動くことを公開サイトの必須条件にせず、通常版と複数エンジンで確認します。WebKitのソース改訂、OSバージョン、Safariバージョンは同じ番号体系ではありません。

iPhone上のブラウザー比較では製品差とエンジン差を分ける

同じWebKit系エンジンを使うブラウザーでも、UI、同期、コンテンツblocker、既定設定、プライバシー、拡張、WebView構成が異なります。製品の使い勝手と、Webプラットフォーム実装の差を別の軸で比較します。

SafariはAppleのブラウザー製品、WebKitはそのWeb処理を支えるオープンソースエンジンです。WebCore、JavaScriptCore、複数処理、製品UIを一つの名前へ潰さずに捉えます。

WebKitがbrowserではなくengineであること、WebCore・JavaScriptCore等の構成:WebKit Project。UI・WebContent・Networking等のprocessとWebKit architecture:WebKit Documentation「Introduction」

関連用語