ブラウザエンジンの新潮流「WebKit2」

海上忍
2010-04-14 22:43:06
  • このエントリーをはてなブックマークに追加

 Safariなどに採用されているオープンソースのHTMLレンダリングエンジン「WebKit」の次世代版、「WebKit2」がその姿を表した。WebKitの開発者向けメーリングリストに投稿されたメッセージには、Appleに勤務するAnders Carlsson氏とSam Weinig氏の2人が名を連ね、Appleによる事実上の公式発表という意味合いを有している。それでは早速、その変更点に迫ってみよう。

タブごとのプロセス分離が可能に

 WebKitは単一構造ではなく、HTMLパーサー/レンダラーの「WebCore」、JavaScriptエンジン「JavaScriptCore」をラップするフレームワークだ。WebKit2もこの構成を踏襲するが、プロセスの処理系はユーザーインターフェース部分とウェブレンダリング部分とに二分割され、それぞれ独立して実行される(図1)。このタブごとにプロセス分離できるアーキテクチャは“サンドボックス”などと呼ばれ、クラッシュやメモリリークなどのタブ個別に発生した問題が他のタブに伝播しないという点で有効とされる。

 Appleは、Snow Leopard上で動作するSafair 4にも一種のプロセス分離機構を実装し、プラグインを別プロセスで実行することを可能にしたものの(これでFlashごとクラッシュすることがなくなった)、タブ単位では分離できなかった。WebKit2では、タブ単位というよりはHTMLレンダリングやJavaScriptの実行など、すべて独立したプロセスとして処理されることになる。

Snow Leopardで「Safari 4」はプラグインを別プロセス化、プラグインともどもクラッシュする頻度は大きく減少したが、サンドボックス構造ではない 図1 Snow Leopardで「Safari 4」はプラグインを別プロセス化、プラグインともどもクラッシュする頻度は大きく減少したが、サンドボックス構造ではない

 WebKit2は、そのようにプロセス管理機構が大幅に変更されたCベースのノンブロッキングAPIとして実装され、従来のWebKitとの互換性は基本的に失われている。ただし、Mac OS XにはこれをラップしたObjective-CベースのAPIを提供予定で、既存のAPIも引き続き機能するように設計されているため、これまで蓄積した開発リソースが損なわれることはない。ライセンスも従来どおりLGPLとBSDが適用されるとのことだ。

WebKitとWebKit2の構造比較(出典:WebKit2)(クリックで拡大画像を表示) WebKitとWebKit2の構造比較(出典:WebKit2)(クリックで拡大画像を表示)

Google Chromeとの相違点

  • 新着記事
  • 特集
  • ブログ