WebKitとは
WebKitは、
Appleが中心となって開発しているオープンソースの
HTMLレンダリングエンジン群の総称です。HTML、CSS、
JavaScript、SVG、MathMLなど、Webページの構成要素を解釈し、表示する役割を担っています。
元々はmacOSに搭載されている
Safariのレンダリングエンジンとして、
Unix系OS向けのKHTMLをベースに開発されました。しかし、現在ではmacOSだけでなく、Windows、
Linux、モバイルなど、多くのプラットフォームに移植され、幅広く利用されています。
WebKitの主要なコンポーネントであるWebCoreおよび
JavaScriptCoreライブラリは、GNU Lesser General Public License(LGPL)で
ライセンスされています。その他の部分は、修正
BSD[[ライセンス]]で利用可能です。このオープンソース
ライセンスにより、WebKitは幅広い開発者によって改良され、様々なプラットフォームに組み込まれています。
歴史
WebKitは、
Safariのレンダリングエンジンとして、KHTMLをフォークして開発されました。初期は
Appleが中心となって開発を行いましたが、その後、
KDE、
ノキア、
Google、
Torch Mobileなど、多くの企業やコミュニティが開発に貢献しています。
起源
WebKitの起源は、
1998年に
KDEプロジェクトで開発されたKHTMLに遡ります。KHTMLは
Unix系OS向けのブラウザであるKonquerorの
HTMLレンダリングエンジンとして開発され、
KDEの
JavaScriptエンジンであるKJSと共に、高いWeb標準準拠と
Internet Explorerとの互換性確保を目指していました。
2002年に
AppleがKHTMLをフォークし、WebKitの開発を開始しました。WebKitは、KHTMLを基にしたHTMLパーザ兼レンダラであるWebCoreと、KJSを基にした
JavaScriptエンジンである
JavaScriptCoreを包含しています。その後、WebKitはパフォーマンス向上や表示の改善、Web標準へのさらなる準拠のために、KHTMLから大幅な修正が加えられました。
開発とオープンソース化
WebKitは、macOS標準のウェブブラウザである
Safariの基盤技術として利用されています。また、外部アプリケーションからもその機能を容易に利用できるよう、Objective-CのAPIが提供されています。これにより、
Webサーバとの通信、Webページの取得、表示、外部
プラグインの利用などが可能になります。
2005年6月、
AppleはWebKitをオープンソース化し、CVSとBugzillaへのアクセスを公開しました。これにより、より多くの開発者がWebKitの開発に携わることが可能になりました。その後、バージョン管理はCVSからSubversionに移行し、
2007年初めにはCSS拡張の実装が開始されました。
2007年11月には、HTML5のメディア機能のサポートが実現し、動画のネイティブ描画やスクリプトコントロールが可能になりました。また、
2008年には
Acid3テストに合格し、Web標準への適合性も示されました。
WebKit2
2010年、WebKit2の開発が発表されました。WebKit2は、プロセス分離モデルを採用し、従来のWebKitとはAPI仕様が大きく異なっています。そのため、WebKit2という新たな名称が与えられ、従来のWebKitと区別されています。
WebKit2は
Appleや
Tizenなどで採用されており、iOS 8以降の
SafariではWebKit2が採用されています。
Blinkとの分裂
2013年、
GoogleはWebKitをフォークし、Blinkを開発することを発表しました。これは、開発方針の対立や、WebKitの複雑化による開発の遅延が原因とされています。
Google ChromeはBlinkへ移行し、
Operaも同様にBlinkを採用しました。一方、
AppleはWebKitの独自開発を継続し、
Googleの技術を排除する方針を示しました。これにより、WebKitは
Googleが直接利用するエンジンではなくなりました。
移植
WebKitは、当初macOS向けに開発されましたが、現在は多くのプラットフォームに移植されています。
Google ChromeやAndroid標準ブラウザなどの主要なブラウザ、モバイル端末やゲーム機にも搭載されています。また、Adobe AIRなどのアプリケーション開発環境でも採用されています。
コンポーネント
WebKitは、主に以下のコンポーネントで構成されています。
WebCore
WebCoreは、HTMLとSVGのレイアウト、レンダリング、DOMの処理を行うライブラリです。LGPLで公開されており、WebKitフレームワークはWebCoreと
JavaScriptCoreをラップし、Objective-C APIを通じて利用できます。また、
クロスプラットフォームの
C++プラットフォーム抽象化も提供しています。
JavaScriptCoreは、WebKitに
JavaScriptエンジンを提供するフレームワークです。
KDEの
JavaScriptエンジンKJSを基に開発され、パフォーマンス向上が図られています。SquirrelFishやSquirrelFish Extremeなどの高度な技術も採用されており、高速な
JavaScript処理を実現しています。
Drosera
Droseraは、WebKitの
JavaScriptデバッガーでした。現在はWeb Inspectorに含まれるデバッギング機能に置き換えられています。
SunSpider
SunSpiderは、
JavaScriptのパフォーマンスを測定するためのベンチマークスイートです。WebKitチームによって開発され、多くのブラウザ開発者が
JavaScriptのパフォーマンスを比較するために使用しています。
WebKitは、数多くの
ソフトウェアで利用されています。ウェブブラウザ、
クロスプラットフォームアプリケーション、モバイルプラットフォーム、ゲーム機など、幅広い分野でその技術が活用されています。
ウェブブラウザ
Arora, Midori, QtWeb, NetFront Browser NX など、クロスプラットフォームのブラウザ
OmniWeb, Sunrise, Stainless, iCab, Shiira など、macOS向けのブラウザ
Lunascape, Sleipnir など、Windows向けのブラウザ
rekonq, Web など、
Unix系OS向けのブラウザ
WebPositive など、Haiku向けのブラウザ
BlackBerry Browser, Iris Browser, NetFront Life Browser など、モバイル向けのブラウザ
ゲーム機
ニンテンドー3DS インターネットブラウザー
Wii U インターネットブラウザー
PlayStation Vita Browser
PlayStation 3/4 インターネットブラウザー
WebKit2
Safari (macOSおよびiOS向け)
開発終了
Flock, Swift, RockMelt など
Google Chrome, SRWare Iron, CoolNovo, AnciaChrome など
iTunes, AIR, Dreamweaver CS4/CS5,
Steam など
macOSのメール、Dashboard など
Android, iOS, HP webOS,
ChromeOS など
まとめ
WebKitは、Webブラウジングの中核となる技術であり、その進化はWeb全体の進歩に大きく貢献しています。オープンソースとして開発され、様々なプラットフォームで利用されているため、その影響力は非常に大きいと言えます。