このページの本文へ

前へ 1 2 次へ

Apple Geeks ― 第20回

Lionに間に合う? プロセス分離の「WebKit2」開発版を試す

2010年12月14日 12時00分更新

文● 海上忍

  • この記事をはてなブックマークに追加
  • 本文印刷

 本連載「Apple Geeks」は、Apple製ハードウェア/ソフトウェア、またこれらの中核をなすOS X/iOSに関する解説をあますことなくお贈りする連載です(連載目次はこちら)。

 UNIX使い向けをはじめ、Apple関連テクノロジー情報を知りつくしたいユーザーに役立つ情報を提供します。

 今回は「WebKit2」について。ご存じ、SafariやGoogle Chromeなどのウェブブラウザーに採用されているHTMLレンダリングエンジン「WebKit」の次期バージョンであり、着々と開発が進められている。Safariに搭載される具体的な時期は明らかにされていないが、アナウンスからすでに半年が経過していることもあるので、最新の状況をまとめてみよう。

What's 「WebKit2」?

 WebKitはまず、HTMLパーサーとレンダラーを兼ねる「WebCore」と、JavaScriptエンジン「JavaScriptCore」を包括するフレームワーク。このフレームワークを利用したウェブブラウザーがSafariであり、改変版WebCoreに独自のJavaScriptエンジン(V8)を搭載したものが、GoogleのChromium WebKitだ。

 WebKit2は、「WebCore+JavaScriptCore」というWebKitの二層構造にメスを入れた。Chromium WebKitでは、レンダリングエンジンとJavaScriptエンジンのプロセスを分離し、プロセス単位でリソースへのアクセスを制限するというアーキテクチャ(サンドボックス)を採用しているが、本家WebKitプロジェクトでも同じ方向にデザインを変更したと考えていい。

WebKitの概念図(現在)。「The WebKit Open Source Project」内WebKit WikiのWebKit2関連ドキュメントよりWebKit2の概念図。WebKitのプロセスは、ユーザーインタフェース部分とWebレンダリング部分で分離される。「The WebKit Open Source Project」内WebKit WikiのWebKit2関連ドキュメントより

 サンドボックス構造の採用には、セキュリティ上のメリットがある。明確にプロセス単位で分離されているため、あるプロセスにクラッシュやメモリーリークが発生しても、問題は他のタブに及ぶことはない。タブごとに独立したプロセスを割り当てれば、あるタブで異常が発生しても他のタブには問題なし、というブラウザーを開発することが可能になる。

 ただし、そのアプローチはChromium WebKitと異なる。WebKit/JavaScriptCoreの二層構造はそのままに、プロセスの処理系をユーザーインターフェース部分とウェブレンダリング部分とに二分し、それぞれ独立して実行する仕組みだ。なお、Chromium WebKitではアプリケーションAPIレベルでプロセス分離を実現しており、ブラウザー本体と分離が難しい形で実装されているため、Googleの成果が本家WebKitに取り込まれたわけではない。

 ちなみに、AppleはSnow LeopardのSafariにも一種のプロセス分離機構を実装しているが、対象はプラグイン限定だ。これにより、例えばSafariがFlashごとクラッシュすることはなくなったが、タブ単位で分離されているわけではない。HTMLレンダリングやJavaScriptの処理など、タブのみならずすべてが独立したプロセスとして処理されるWebKit2がSafariに採用されれば、より安全性は高まると考えられる。

(次ページへ続く)

前へ 1 2 次へ

この連載の記事

ASCII.jp RSS2.0 配信中