WebKit

AppleのHTMLレンダリングエンジン

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

WebKit
開発元AppleKDEノキア[1]
リポジトリ ウィキデータを編集
対応OSクロスプラットフォーム
対応言語C++
サポート状況開発中
種別レンダリングエンジン
ライセンスLGPL / BSD-style
公式サイトwebkit.org ウィキデータを編集
テンプレートを表示

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

ライセンス

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

歴史

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のみがオープンソースであった)、CVSBugzillaへのアクセスを公開することを発表した[3]。これに関してはBertrand SerletがAppleのWWDC 2005にて初めて公式発表を行っている。また、2006年1月10日にCVSからSubversionに移行した。

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

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

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

WebKit2

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

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

Blinkとの分裂

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

移植

当初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)[16]
  • アドビは、FlashFlex、HTML、JavaScript、Ajaxの技術を用いて、高度なインターネットアプリケーションを構築するクロスプラットフォームランタイムであるAIR(コードネームApollo)において、HTMLやJavaScriptを処理するエンジンとしてWebKitを採用している[17]。また、Adobe Dreamweaver CS4での採用が発表された[18]
  • Googleは、Google ChromeAndroid標準ブラウザ(4.3以前)、携帯電話プラットフォームAndroidで採用している[19]
  • WebKit/GTK+は、GTK+(現・GTK)向けのポート。様々なWebブラウザやメールクライアント等で利用されている[20]
  • Windows向けのウェブブラウザであるLunascapeは、バージョン5.0αから、WebKitを選択可能なエンジンの一つとして搭載。
  • Iris Browserは、Torch MobileによるWebKitをベースにした、QTとQtopia、Windows Mobile向けブラウザ。1.0.5PreviewよりWindows Mobile 5もサポートされた[21]
  • Opera Softwareは、自社の独自路線を変更し、Webkitの採用を決めたことを発表していた[22]。ただし、前述の通りその後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のその他の場面で使用される同様のスクリプティングを提供する[23][24]。JavaScriptCoreはKDE's JavaScript engine (KJS) ライブラリおよびPerl Compatible Regular Expressions (PCRE) 正規表現ライブラリに由来している。KJSおよびPCREからフォークされてから、JavaScriptCoreは多くの新機能について改良がなされ、パフォーマンスも大幅に向上している[25]

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

Drosera

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

SunSpider

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

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

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

ウェブブラウザ

WebKit2

開発終了

Chromiumベース

その他のソフトウェア

  • macOSおよびWindows向け
  • macOS向け
    • メール - macOS付属のソフトウェア
    • Dashboard - macOS付属のソフトウェア環境
  • モバイル向け
    • Android - Googleの提唱する携帯電話用プラットフォーム
    • iOS - 内包され、SafariやMail等で利用されている
    • HP webOS - HPのAccess Linux Platform (ALP) をベースとした携帯電話用プラットフォーム
  • ChromeOS

バージョンの対応関係

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

WebKitSafariMobile SafariGoogle ChromeAndroid
Browser
Chrome for
Android
3DSNew 3DSWii UPS3PS4Vita
5253.1, 3.23.10.4
5284.011.5, 1.6 
5304.0 - 4.0.222.0, 2.1
5314.0.3 - 4.0.54.0.44.10 -1.00 - 1.81
5324.0.53, 4
5334.1, 5.05.0.252.2, 2.3
5345.15.16 - 123.0 - 4.22.0.0-2J - 9.5.0-22J2.1.0J - 3.1.0J
53513 - 1816 - 189.5.0-23J -
5366.06.019, 208.1.0-0J -4.0.0J -1.00 - 1.762.00 - 3.20
5377.07.021 - 274.325 - 272.00 -3.30 -

脚注

出典

関連項目

外部リンク

🔥 Top keywords: メインページ宮崎麗果特別:検索豊後水道松本忠久土居志央梨若葉竜也能登半島地震 (2024年)田中雄士長谷部誠井上道義The GazettE若林志穂服部百音黒木啓司REITA虎に翼平井理央出口夏希サーブ (盲導犬)三鷹事件セウォル号沈没事故白眞勲三淵嘉子高橋克也 (オウム真理教)ME:Iルーシー・ブラックマン事件佐藤ありさ杉咲花蜜谷浩弥水野真紀亀井亜紀子 (政治家)熊本地震 (2016年)水原一平井川意高中川安奈 (アナウンサー)内藤剛志いなば食品YOSHIKI