WebKit

WebKit（ウェブキット）は、Appleが中心となって開発しているオープンソースのHTMLレンダリングエンジン群の総称である。HTML、CSS、JavaScript、SVG、MathMLなどを解釈する。

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

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

 歴史 

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

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

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

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

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

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

2005年6月7日、Safariの開発者Dave Hyattは自身のブログ上でAppleがWebKitをオープンソース化し（それまではWebCoreとJavaScriptCoreのみがオープンソースであった）、CVSとBugzillaへのアクセスを公開することを発表したhttp://weblogs.mozillazine.org/hyatt/archives/2005_06.html#008281。これに関してはBertrand SerletがAppleのWWDC 2005にて初めて公式発表を行っている。また、2006年1月10日にCVSからSubversionに移行した。

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

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

2008年3月26日、WebKit r31356（最初のスコア100はr31342）が、世界で最初に公開されたAcid3（ウェブ標準準拠の指標の一つ）に合格したレンダリングエンジンとなったWebKit achieves Acid3 100/100 in public build。2008年9月25日、スムーズなアニメーションを含め、Acid3を完全にパスしたと発表されたFull Pass of Acid3。

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

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

 Blinkとの分裂 

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

 移植 
当初macOSのために開発されたため、WebKitを使用したウェブブラウザはmacOS専用のものが多かったが、Google Chrome (同系統のChromiumも同様。ただしそれらは2013年4月以降はWebKitから分岐されたBlinkを使用) など、LinuxやWindows向けウェブブラウザにもWebKitを採用したものが出てきている。Apple自身もWindows版のSafariの開発にも用いている。最近ではWebKitはデスクトップにとどまらず、モバイルプラットフォームでも活用されている。

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

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

 JavaScriptCore 
JavaScriptCoreは、WebKitの実装にJavaScriptエンジンを提供するフレームワークであり、またmacOSのその他の場面で使用される同様のスクリプティングを提供するThe WebKit Open Source Project – JavaScriptKDE-Darwin mailing list, "JavaScriptCore, Apple’s JavaScript framework based on KJS", 13 June 2002.。JavaScriptCoreはKDE's JavaScript engine (KJS) ライブラリおよびPerl Compatible Regular Expressions (PCRE) 正規表現ライブラリに由来している。KJSおよびPCREからフォークされてから、JavaScriptCoreは多くの新機能について改良がなされ、パフォーマンスも大幅に向上している。

2008年6月2日、発表時点で従来より1.6倍の高速化を果たした、新たなJavaScriptCoreとしてバイトコードインタプリタVMSquirrelFish – WebKit – TracのSquirrelFishが発表されたSurfin’ Safari - Blog Archive  » Announcing SquirrelFish。また、9月18日には、SquirrelFishよりおよそ2倍の高速化を果たしたSquirrelFish Extreme (SFX) が発表されたIntroducing SquirrelFish Extreme。

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

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

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

 WebKitを使用するソフトウェア 
 ウェブブラウザ 
 クロスプラットフォーム
 Konqueror
 NetFront Browser NX HTML5対応のWebKit版ブラウザ | 株式会社ACCESS
 Windows向け
 Lunascape（5.0α以降・Trident及びGeckoも使用可能）
 Unix系OS向け
 Web（2.28以降）
ゲーム機向け
 PlayStation 4 インターネットブラウザー

 WebKit2 
 macOSおよびiOS向け
 Safari
 OmniWeb
 Stainless
 iCab

 開発終了 
 Arora (Qt Webkit Integration)
 QtWeb
 Flock（3.0以降）
 Swift (for Windows)
 RockMelt(Windows及びMac OS X)
 Shiira（Mac OS）
 Sunrise（Mac OS）
 Midori（Webkit/GTK+、Geckoへ移行）
 rekonq
 WebPositive（Haiku 向け）

 Chromiumベース 
 全てBlinkへ移行
 Google Chrome
 SRWare Iron
 CoolNovo
 AnciaChrome
 Sleipnir（3.5.0.4000以降4.1.4.4000まで、4.3.0.4000以降はBlink採用）

 モバイル向け 
 BlackBerry Browser（6.0以降）
 Iris Browser (for Windows Mobile 5/6)
 NetFront Life Browser

 ゲーム機向け 
 ニンテンドー3DS インターネットブラウザー（システムバージョン2.0.0-2J以降）
 NetFront Browser NX が搭載されているニンテンドー3DS用インターネットブラウザーLGPL適用オープンソースについて アーカイブの中にWebKitのソースコードが入っているACCESS、情報家電向けブラウザの新製品「NetFront® Browser NX」を発表 。ただし、任天堂の仕様ではNetFront Browserになっているインターネットブラウザーの主な仕様。
 Wii U インターネットブラウザー（システムバージョン2.1.0J以降）
 NetFront Browser NX が搭載されているWii U インターネットブラウザーの主な仕様任天堂の新ゲーム機「Wii U」に ACCESSの「NetFront® Browser NX」をブラウザエンジンとして提供 | 株式会社ACCESS
 PlayStation Vita Browser
 PlayStation 3 Internet browser(システムソフトウェア4.10以降)

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

バージョンの対応関係
Google Chrome は 28以降 Blink に移行したが、下記表は Blink を含まず、WebKit の対応表。
 WebKit Safari Mobile Safari Google Chrome AndroidBrowser Chrome forAndroid 3DS New 3DS Wii U PS3 PS4 Vita5253.1, 3.23.10.45284.011.5, 1.6　5304.0 - 4.0.222.0, 2.15314.0.3 - 4.0.54.0.44.10 -1.00 - 1.815324.0.53, 45334.1, 5.05.0.252.2, 2.35345.15.16 - 123.0 - 4.22.0.0-2J - 9.5.0-22J2.1.0J - 3.1.0J53513 - 1816 - 189.5.0-23J -5366.06.019, 208.1.0-0J -4.0.0J -1.00 - 1.762.00 - 3.205377.07.021 - 274.325 - 272.00 -3.30 -

 脚注 

 出典 

 関連項目 

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

 外部リンク 


 developer.apple.com: Open Source - WebKit
 Surfin’ Safari - opendarwin.org

Category:iOS
Category:MacOS
Category:オープンソースソフトウェア
Category:ウェブブラウザ
Category:C++でプログラムされた自由ソフトウェア