AppleのWebKit2はSafariにGoogle Chromeのような分割プロセスを追加する

AppleのWebKit2はSafariにGoogle Chromeのような分割プロセスを追加する

AppleInsiderスタッフのプロフィール写真AppleInsiderスタッフ

· 2分で読めます

オープンソースの Web ブラウザ レイアウト エンジン WebKit の新しいフレームワークが木曜日に公開されました。このフレームワークには、Apple の Safari や Mobile Safari などのブラウザで JavaScript、HTML、レイアウトなどの Web コンテンツを別のプロセスで維持する「分割プロセス モデル」が組み込まれています。

カリフォルニア州クパチーノでAppleのSafariブラウザとオープンソースのWebKitエンジンの開発に携わるアンダース・カールソン氏によると、「WebKit2」と呼ばれる新しいWebKitフレームワークのパッチがまもなくリリースされる予定だという。WebKitはSafariに加え、Google Chromeブラウザ、Androidウェブブラウザ、そしてPalmのWebOSにも採用されている。

「WebKit2は、Webコンテンツ(JavaScript、HTML、レイアウトなど)が別のプロセスで実行される分割プロセスモデルをサポートするように根本から設計されています」とカールソン氏は記している。「このモデルはGoogle Chromeが提供するものと似ていますが、大きな違いは、プロセス分割モデルをフレームワークに直接組み込んだことで、他のクライアントでも利用できるようになっている点です。」

この方法では、ブラウザ内の各タブは「サンドボックス化」され、独自の空間に存在します。つまり、各タブは独立したブラウザのようなものです。Chromeは現在、WebKitベースのブラウザで独自の方法でこれを実現していますが、WebKit2のフレームワークにこの機能を組み込むことで、AppleのSafariを含む他のWebKitベースのブラウザでも同じ手法を採用できるようになります。

WebKit2リリースに付属するドキュメントには、新しいフレームワークの目標の一つとして、安定したノンブロッキングのアプリケーションプログラミングインターフェース(API)の構築が挙げられています。これにより、無制限の数のスレッドが同時にAPIを呼び出すことが可能になり、ブラウザの柔軟性が向上します。ドキュメントによると、これは以下のいくつかの手法によって実現されるとのことです。

  • 通知スタイルのクライアント コールバック (例: didFinishLoadForFrame) これらは、何かが発生したことを埋め込み側に通知しますが、それに対して何かを行う機会は与えません。
  • ポリシー スタイルのクライアント コールバック (例: decidePolicyForNavigationAction) これにより、埋め込み側は自由にアクションを決定し、リスナー オブジェクトを通じてページに通知することができます。
  • ポリシー設定(例:WKContextSetCacheModel、WKContextSetPopupPolicy)により、埋め込み側はUIProcessへのコールバックなしで、定義済みのポリシーを適用できます。ポリシー設定は、特定のポリシーを列挙したセット、またはワイルドカードを含む文字列のリストなど、よりきめ細かな設定が可能です。
  • 挿入されたコード(例:WebBundle)他のすべてのオプションが失敗した場合に備えて、WebProcessにコードをロードできます。これは、DOMへのアクセスが必要な場合に役立ちます。[計画されていますが、現在は実装されていません]