WebKit

名称 = WebKitWebKitは、Appleが中心となって開発しているオープンソースのHTMLレンダリングエンジン群の総称である。HTML、CSS、JavaScript、SVG、MathMLなどを解釈する。

WebKitは、元々AppleのmacOSに搭載されるSafariのレンダリングエンジンとして、LinuxやBSDといった、Unix系用のレンダリングエンジンであるKHTMLをフォークして開発された。現在はその他の多くのプラットフォームに移植されている。

1. ライセンス
--------

WebKitのWebCoreおよびJavaScriptCoreライブラリはGNU Lesser General Public License  、その他の部分は修正BSDライセンスで利用可能である。

2. 歴史
-----

WebKitは元々、macOSのウェブブラウザ "Safari" のレンダリングエンジンとして使用するため、LinuxやBSDといったUnix系用のブラウザ "Konqueror" のKHTMLソフトウェア・ライブラリを基にAppleによって作成され、現在までに、Apple、KDE、ノキア、Google、Torch Mobileなどによって改良が加えられた。

2.1. 起源
-------

LinuxやBSDなどのUnix系用ブラウザとして、1998年に KDEプロジェクト の HTMLレンダリングエンジン "KHTML" と KDE のJavaScriptエンジン  が開発された。その後、Appleが2002年にそれらをフォークしてWebKitを開発した。

WebKitはKHTMLを基にしたHTMLパーザかつレンダラであるWebCoreと、KJSを基にしたJavaScriptエンジンであるJavaScriptCoreを下位ライブラリとして含む。

当初、KHTMLとKJSは、Mozillaプロジェクトによって同じくオープンソースで開発が進められていたGeckoエンジンの基本方針である高いWeb標準への準拠と競合しないよう、Internet Explorerとの高い互換を目指し開発が行われていた。

その後、WebKitでは両ライブラリともパフォーマンス向上やWebサイトの表示の改善、Web標準へのさらなる準拠のために、基となったKDEの実装からかなりの修正が加えられている。

2.2. 開発・オープンソース化
----------------

Mac OS X v10.3以降に搭載されているmacOS標準のウェブブラウザ、Safariの基礎を成している。プログラマはわずかな作業でその機能を外部アプリケーションから利用できる。Objective-CからWebKitのAPIにアクセスすることでWebサーバとの通信、Webページの取得および表示、外部プラグインの利用などを扱うことができる。

2005年6月7日、Safariの開発者Dave Hyattは自身のブログ上でAppleがWebKitをオープンソース化し、CVSとBugzillaへのアクセスを公開することを発表した。これに関してはBertrand SerletがAppleのWWDC 2005にて初めて公式発表を行っている。また、2006年1月10日にCVSからSubversionに移行した。

2007年初めにはアニメーションなどを含む新たなCSS拡張の実装に着手した。これらの拡張は標準化のため2009年にW3Cにワーキングドラフトとして提出された。

2007年11月には、HTML5のメディア機能のサポートを達成したことが発表された。このHTML5に部分対応したWebKitでは、組み込み動画のネイティブ描画とスクリプトコントロールが可能である。

2008年3月26日、WebKit r31356が、世界で最初に公開されたAcid3に合格したレンダリングエンジンとなった。2008年9月25日、スムーズなアニメーションを含め、Acid3を完全にパスしたと発表された。

2.3. WebKit2
------------

2010年4月8日、分離プロセスモデルを採用したWebKit2の開発が発表された。WebKit2の採用例としては、AppleやTizenなどがある。WebKit2ではWebKitから大幅にAPIの仕様が変更されており、互換性が失われている。そのため「WebKit2」という新たな名称を採用し、従来のWebKitとは区別できるようにしている。

2011年7月21日にAppleがWebKit2エンジンであるSafari5.1を公開した。iOS向けのSafariでは、iOS 8よりWebKit2が採用された。

2.4. Blinkとの分裂
--------------

2013年4月3日、AppleとGoogleが開発方針をめぐって対立したことや、Chromiumを搭載した時期からWebKitエンジン自体が複雑化したことで開発の遅滞が問題視された。このことからGoogleはWebKitをBlinkにフォークさせる事を発表した。同日、OperaもWebKitではなく、Blinkを採用することを表明した。翌日の4月4日、AppleはV8の排除、JavaScriptCore以外の使用の排除、Skiaの排除、GoogleのビルドシステムGYPの排除などの計画を表明し、WebKitはGoogleが直接使うエンジンではなくなった。しかし、Linux向けビルドも用意され、依然としてOSSでありSafari専用という訳ではない。

2.5. 移植
-------

当初macOSのために開発されたため、WebKitを使用したウェブブラウザはmacOS専用のものが多かったが、Google Chrome  など、LinuxやWindows向けウェブブラウザにもWebKitを採用したものが出てきている。Apple自身もWindows版のSafariの開発にも用いている。最近ではWebKitはデスクトップにとどまらず、モバイルプラットフォームでも活用され始めている。

ノキアは、自社のSymbian OS上のインターフェース環境S60 3rd Editionのブラウザ用に、WebKitをS60に移植した 。
アドビは、Flash、Flex、HTML、JavaScript、Ajaxの技術を用いて、高度なインターネットアプリケーションを構築するクロスプラットフォームなランタイムであるAIRにおいて、HTMLやJavaScriptを処理するエンジンとしてWebKitを採用している。また、Adobe Dreamweaver CS4での採用が発表された。
Googleは、Google ChromeやAndroid標準ブラウザ、携帯電話プラットフォームAndroidで採用している。
WebKit/GTK+は、GTK+向けのポート。様々なWebブラウザやメールクライアント等で利用されている。
Windows向けのウェブブラウザであるLunascapeは、バージョン5.0αから、WebKitを選択可能なエンジンの一つとして搭載。
Iris Browserは、Torch MobileによるWebKitをベースにした、QTとQtopia、Windows Mobile向けブラウザ。1.0.5PreviewよりWindows Mobile 5もサポートされた。
Opera Softwareは、自社の独自路線を変更し、Webkitの採用を決めたことを発表していた。ただし、前述の通りその後Blinkへ移行している。

3. コンポーネント
----------

3.1. WebCore
------------

WebCoreは、WebKitプロジェクトにより開発された、HTMLおよびSVGのレイアウト、レンダリング、Document Object Model  ライブラリである。WebCoreの完全なソースコードはLGPLで公開されている。WebKitフレームワークはWebCoreおよびJavaScriptCoreをラップし、C++ベースのWebCoreレンダリングエンジンおよびJavaScriptCoreスクリプトエンジンにObjective-C application programming interface  を提供することにより、Cocoa APIベースのアプリケーションから容易に参照することを可能にしている。より最近のバージョンはクロスプラットフォームのC++プラットフォーム抽象化を含んでおり、また様々なportは追加APIを提供している。

3.2. JavaScriptCore
-------------------

JavaScriptCoreは、WebKitの実装にJavaScriptエンジンを提供するフレームワークであり、またmacOSのその他の場面で使用される同様のスクリプティングを提供する。JavaScriptCoreはKDE's JavaScript engine  ライブラリおよびPerl Compatible Regular Expressions  正規表現ライブラリに由来している。KJSおよびPCREからフォークされてから、JavaScriptCoreは多くの新機能について改良がなされ、パフォーマンスも大幅に向上している。

2008年6月2日、発表時点で従来より1.6倍の高速化を果たした、新たなJavaScriptCoreとしてバイトコードインタプリタVMのSquirrelFishが発表された。また、9月18日には、SquirrelFishよりおよそ2倍の高速化を果たしたSquirrelFish Extreme  が発表された。

3.3. Drosera
------------

DroseraはWebKitのナイトリービルドに含まれていたJavaScriptデバッガーである。Droseraの名は食虫植物のモウセンゴケ属の学名から付けられた。DroseraはWeb Inspectorに含まれるデバッギング機能によって置き換えられている。

3.4. SunSpider
--------------

SunSpiderは、現在および近い将来に想定されるJavaScriptの使用に関連するタスクのJavaScriptパフォーマンスを測定する目的で作られたベンチマークスイートである The suite further attempts to be balanced and statistically sound.。

SunSpiderはAppleのWebKitチームによって2007年12月にリリースされた。SunSpiderは広く受け入れられ、他のブラウザーの開発者もブラウザー間のJavaScriptパフォーマンスを比較するため使用している。

4. WebKitを使用するソフトウェア
--------------------

4.1. ウェブブラウザ
------------

クロスプラットフォーム
Arora 
Midori
QtWeb
NetFront Browser NX
macOS向け
OmniWeb
Sunrise
Stainless
iCab
Shiira
Windows向け
Lunascape
Sleipnir
Unix系OS向け
rekonq
Web
Haiku 向け
WebPositive
モバイル向け
BlackBerry Browser
Iris Browser 
NetFront Life Browser
ゲーム機向け
ニンテンドー3DS インターネットブラウザー
NetFront Browser NX が搭載されている。ただし、任天堂の仕様ではNetFront Browserになっている。
Wii U インターネットブラウザー
NetFront Browser NX が搭載されている
PlayStation Vita Browser
PlayStation 3 Internet browser
PlayStation 4 インターネットブラウザー

4.1.1. WebKit2
--------------

macOSおよびiOS向け
Safari

4.1.2. 開発終了
-----------

Flock
Swift 
RockMelt

4.1.2.1. Chromiumベース
--------------------

全てBlinkへ移行
Google Chrome
SRWare Iron
CoolNovo
AnciaChrome

4.2. その他のソフトウェア
---------------

macOSおよびWindows向け
iTunes
AIR
Dreamweaver CS4, CS5 - Webオーサリングソフト
Steam - ゲーミングプラットフォーム
macOS向け
メール - macOS付属のソフトウェア
Dashboard - macOS付属のソフトウェア環境
モバイル向け
Android - Googleの提唱する携帯電話用プラットフォーム
iOS - 内包され、SafariやMail等で利用されている
HP webOS - HPのAccess Linux Platform  をベースとした携帯電話用プラットフォーム
ChromeOS

5. バージョンの対応関係
-------------

Google Chrome は 28以降 Blink に移行したが、下記表は Blink を含まず、WebKit の対応表。



6. 脚注
-----

6.1. 出典
-------

7. 関連項目
-------

Android
iPad
iPhone
iPod touch
macOS
ウェブブラウザ
HTMLレンダリングエンジン

8. 外部リンク
--------

[1]