WebKit
開発元 | Apple、KDE、ノキア他[1] |
---|---|
リポジトリ | |
対応OS | クロスプラットフォーム |
対応言語 | C++ |
サポート状況 | 開発中 |
種別 | レンダリングエンジン |
ライセンス | LGPL / BSD-style |
公式サイト |
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ライセンスで利用可能である[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のみがオープンソースであった︶、CVSとBugzillaへのアクセスを公開することを発表した[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との分裂[編集]
「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]。 ●アドビは、Flash、Flex、HTML、JavaScript、Ajaxの技術を用いて、高度なインターネットアプリケーションを構築するクロスプラットフォームなランタイムであるAIR︵コードネームApollo︶において、HTMLやJavaScriptを処理するエンジンとしてWebKitを採用している[17]。また、Adobe Dreamweaver CS4での採用が発表された[18]。 ●Googleは、Google ChromeやAndroid標準ブラウザ(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を使用するソフトウェア[編集]
ウェブブラウザ[編集]
●クロスプラットフォーム ●Arora (Qt Webkit Integration) ●Midori︵Webkit/GTK+、Xfceプロジェクトの一部︶ ●QtWeb ●NetFront Browser NX [37] ●macOS向け ●OmniWeb ●Sunrise ●Stainless ●iCab ●Shiira ●Windows向け ●Lunascape︵5.0α以降・Trident及びGeckoも使用可能︶ ●Sleipnir︵3.5.0.4000以降4.1.4.4000まで、4.3.0.4000以降はBlink採用︶ ●Unix系OS向け ●rekonq ●Web︵2.28以降︶ ●Haiku 向け ●WebPositive ●モバイル向け ●BlackBerry Browser︵6.0以降︶ ●Iris Browser (for Windows Mobile 5/6) ●NetFront Life Browser[38] ●ゲーム機向け ●ニンテンドー3DS インターネットブラウザー︵システムバージョン2.0.0-2J以降︶ ●NetFront Browser NX が搭載されている[39][40]。ただし、任天堂の仕様ではNetFront Browserになっている[41]。 ●Wii U インターネットブラウザー︵システムバージョン2.1.0J以降︶ ●NetFront Browser NX が搭載されている[42][43] ●PlayStation Vita Browser ●PlayStation 3 Internet browser(システムソフトウェア4.10以降) ●PlayStation 4 インターネットブラウザーWebKit2[編集]
●macOSおよびiOS向け ●Safari開発終了[編集]
●Flock︵3.0以降︶ ●Swift (for Windows) ●RockMelt(Windows及びMac OS X)Chromiumベース[編集]
●全てBlinkへ移行 ●Google Chrome ●SRWare Iron ●CoolNovo ●AnciaChromeその他のソフトウェア[編集]
●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 | Android Browser |
Chrome for Android |
3DS | New 3DS | Wii U | PS3 | PS4 | Vita |
---|---|---|---|---|---|---|---|---|---|---|---|
525 | 3.1, 3.2 | 3.1 | 0.4 | ||||||||
528 | 4.0 | 1 | 1.5, 1.6 | ||||||||
530 | 4.0 - 4.0.2 | 2 | 2.0, 2.1 | ||||||||
531 | 4.0.3 - 4.0.5 | 4.0.4 | 4.10 - | 1.00 - 1.81 | |||||||
532 | 4.0.5 | 3, 4 | |||||||||
533 | 4.1, 5.0 | 5.0.2 | 5 | 2.2, 2.3 | |||||||
534 | 5.1 | 5.1 | 6 - 12 | 3.0 - 4.2 | 2.0.0-2J - 9.5.0-22J | 2.1.0J - 3.1.0J | |||||
535 | 13 - 18 | 16 - 18 | 9.5.0-23J - | ||||||||
536 | 6.0 | 6.0 | 19, 20 | 8.1.0-0J - | 4.0.0J - | 1.00 - 1.76 | 2.00 - 3.20 | ||||
537 | 7.0 | 7.0 | 21 - 27 | 4.3 | 25 - 27 | 2.00 - | 3.30 - |
脚注[編集]
出典[編集]
(一)^ “Companies and Organizations that have contributed to WebKit” (英語). trac.webkit.org. 2010年4月15日閲覧。
(二)^ Apple Inc.. “Open Source - Internet & Web - WebKit” (英語). 2009年10月8日閲覧。
(三)^ http://weblogs.mozillazine.org/hyatt/archives/2005_06.html#008281
(四)^ CSS Transforms
(五)^ CSS3 Animations
(六)^ HTML5 Media Support by Antti Koivisto, Surfin' Safari blog, November 12th, 2007
(七)^ WebKit achieves Acid3 100/100 in public build
(八)^ Full Pass of Acid3
(九)^ WebKit2
(十)^ [webkit-dev] Announcing WebKit2
(11)^ “Apple、マルチプロセス採用の“WebKit2”を搭載した﹁Safari﹂v5.1を公開”. 窓の杜. (2011年7月21日) 2011年7月24日閲覧。
(12)^ “WWDC 2014 Session 206 - Introducing the Modern WebKit API - ASCIIwwdc”. 2014年12月13日閲覧。
(13)^ webkit-dev Cleaning House
(14)^ “The WebKit Open Source Project”. WebKit (2015年11月7日). 2021年3月29日閲覧。
(15)^ “WebKit Downloads”. WebKit (2016年3月30日). 2021年3月29日閲覧。
(16)^ ﹃ノキア、'Web Browser for S60'エンジンのコードをオープンソース・コミュニティに公開﹄︵プレスリリース︶ノキア・ジャパン、2006年5月24日。2011年7月24日閲覧。
(17)^ Adobe Integrated Runtime (AIR)
(18)^ Adobe Dreamweaver CS3 10 周年記念イベント レポート
(19)^ What is Android?
(20)^ WebKitGtk - GNOME Live!
(21)^ Torch Mobile
(22)^ Stephen Shankland (2013年2月14日). “Opera、ブラウザエンジンにWebKitを採用へ”. CNET News 2013年2月14日閲覧。
(23)^ The WebKit Open Source Project – JavaScript
(24)^ KDE-Darwin mailing list, "JavaScriptCore, Apple’s JavaScript framework based on KJS", 13 June 2002.
(25)^ “The Great Browser JavaScript Showdown” (2007年12月19日). 2009年10月8日閲覧。
(26)^ SquirrelFish – WebKit – Trac
(27)^ Surfin’ Safari - Blog Archive » Announcing SquirrelFish
(28)^ Introducing SquirrelFish Extreme
(29)^ WebKit.org Drosera wiki article
(30)^ “Introducing Drosera”. Surfin’ Safari. 2009年10月8日閲覧。
(31)^ “Commit removing Drosera”. 2009年10月8日閲覧。
(32)^ Muchmore, Michael (2008年6月18日). “Review: Firefox 3 Stays Ahead of Browser Pack” 2008年9月6日閲覧。
(33)^ “SunSpider JavaScript Benchmark”. 2008年9月6日閲覧。
(34)^ “Announcing SunSpider 0.9” (2007年12月18日). 2008年9月6日閲覧。
(35)^ Atwood, Jeff (2007年12月19日). “The Great Browser JavaScript Showdown”. 2008年9月6日閲覧。
(36)^ Resig, John (2008年9月3日). “JavaScript Performance Rundown”. 2008年6月9日閲覧。
(37)^ HTML5対応のWebKit版ブラウザ | 株式会社ACCESS
(38)^ “NetFront Life Browser 和製PDA用WebブラウザがAndroid端末に登場”. アンドロイダー. TriWorks Corp. JAPAN (2010年11月15日). 2010年11月15日閲覧。
(39)^ ニンテンドー3DS用インターネットブラウザーLGPL適用オープンソースについて アーカイブの中にWebKitのソースコードが入っている
(40)^ ACCESS、情報家電向けブラウザの新製品﹁NetFront® Browser NX﹂を発表
(41)^ インターネットブラウザーの主な仕様
(42)^ Wii U インターネットブラウザーの主な仕様
(43)^ 任天堂の新ゲーム機﹁Wii U﹂に ACCESSの﹁NetFront® Browser NX﹂をブラウザエンジンとして提供 | 株式会社ACCESS