WebKitは、主にAppleのSafariウェブブラウザで使用されているブラウザエンジンであり、iOSおよびiPadOS上のほぼすべてのウェブブラウザでも使用されています。WebKitは、PS3以降のPlayStationコンソール、 Tizenモバイルオペレーティングシステム、Amazon Kindle電子書籍リーダー、3DSインターネットブラウザ以降の任天堂コンソール、 GNOME Web、および既にサービスが終了したBlackBerry Browserでも使用されています。
WebKit はKDEのKHTMLおよびKJSライブラリのフォークとして始まり、[ 1 ] [ 9 ]、その後、KDE の貢献者、Apple、Google、Nokia、[ 9 ] Bitstream、BlackBerry、Sony、Igaliaなどによってさらに開発されました。[ 10 ] WebKit はmacOS、Windows、Linux、およびその他のさまざまなUnix ライクなオペレーティングシステムをサポートしています。[ 11 ] 2013 年 4 月 3 日、Google は WebKit のコンポーネントである WebCore をフォークし、将来のバージョンのGoogle ChromeでBlinkという名前で使用すると発表しました。[ 12 ] [ 13 ] 2013 年 5 月のバージョン 15 以降、Opera ウェブ ブラウザは、Google が Chromium プロジェクトで実装した WebKit を優先して、独自の Presto レイアウト エンジンを廃止しました。
WebKitのJavaScriptエンジンであるJavaScriptCoreは、Node.js、Deno、Blinkで使用されているV8とは異なり、BunサーバーサイドJSランタイム[ 14 ]にも使用されています。WebKitのC++アプリケーションプログラミングインターフェース(API)は、 Webコンテンツをウィンドウに表示するための一連のクラスを提供し、ユーザーがクリックしたリンクをたどる、戻る/進むリストを管理する、最近アクセスしたページの履歴を管理するなど、ブラウザ機能を実装しています。
WebKit はオープンソースであり、BSD 2 条項ライセンス[ 15 ] [ 8 ]の下で利用可能ですが、 WebCoreおよびJavaScriptCoreコンポーネントはGNU Lesser General Public Licenseの下で利用可能です。2013 年 3 月 7 日現在、WebKit は米国特許商標庁に登録されている Apple の商標です。[ 16 ]
WebKit となるコードは、1998 年にKDE HTML ( KHTML ) レイアウト エンジンとKDE JavaScript ( KJS ) エンジンとして始まりました。WebKit プロジェクトは、2001 年 6 月 25 日にApple 内で Lisa Melton [ 17 ]によってKHTMLとKJSのフォークとして開始されました[ 18 ] [ 19 ]。Melton は KDE 開発者への電子メール[ 1 ]で、 KHTMLとKJS は、コードが小さく (14 万行未満)、設計がきれいで、標準に準拠しているため、他の利用可能なテクノロジーよりも開発が容易であると説明しました。KHTML と KJS はアダプタライブラリの助けを借りてmacOSに移植され、WebCore と JavaScriptCore に名前が変更されました[ 1 ] 。JavaScriptCore は、Apple の変更の最初のリリースとともに、2002 年 6 月にKDEメーリング リストへの電子メールで発表されました[ 20 ] 。
Appleによると、異なる開発手法を必要とした変更点には、Objective-C 、macOS上でKHTMLを動作させるために必要なQtのサブセットの実装であるObjective C++で書かれたKWQ(「クワック」と発音)、macOSの呼び出しなど、KDEのKHTMLにはないmacOS固有の機能が含まれていた。[ 21 ]
WebCoreとKHTMLのコードベースが乖離するにつれて、両プロジェクトが異なるコーディング手法を採用し、コード共有のアプローチも異なっていたため、コード交換はますます困難になった。[ 22 ]ある時点でKHTMLの開発者はAppleの変更を受け入れる可能性は低いと述べ、両グループ間の関係は「苦い失敗」だと主張した。[ 23 ]彼らは、Appleがコードベースへの将来の追加に関連する、不十分なドキュメントを含む複数の変更を含む大きなパッチで変更を提出したと主張した。そのため、これらのパッチをKDEの開発者がKHTMLに統合するのは困難だった。[ 24 ]また、Appleは開発者に対し、Appleのソースコードを見る前に秘密保持契約に署名するよう要求し、それでもAppleのバグデータベースにアクセスできなかった。[ 25 ]
公にされた「離婚」期間中、KDE開発者のKurt Pfeifle(pipitas)は、KHTML開発者がWebCoreからSafariの改善点の多く(すべてではない)をKHTMLにバックポートすることに成功し、Appleからの改善点を常に高く評価しており、今もそうであると主張する記事を投稿した。記事ではまた、Appleが関係改善と将来の協力について話し合うためにKHTML開発者に連絡を取り始めたことも指摘した。[ 26 ]実際、KDEプロジェクトはこれらの変更の一部を取り入れてKHTMLのレンダリング速度を向上させ、 Acid2レンダリングテストへの準拠を含む機能を追加することができた。[ 27 ]
ニュースでフォークに関する記事が掲載された後、AppleはWebKitフォークのソースコードを公開リビジョン管理リポジトリで公開した。[ 28 ]
WebKitチームはまた、オリジナルのWebKitコードベースにおけるApple固有の変更点の多くを元に戻し、プラットフォーム固有の抽象化レイヤーを実装したため、コアレンダリングコードを他のプラットフォームにコミットすることが大幅に容易になった。[ 29 ]
2007 年 7 月、Ars Technica はKDE チームが KHTML から WebKit に移行すると報じた。[ 30 ]しかし、数年の統合を経て、2010 年 8 月に WebKit と KHTML の両方をサポートする KDE Development Platform バージョン 4.5.0 がリリースされ、KHTML の開発は 2016 年まで続けられ、2023 年に正式に終了した。[ 31 ] [ 32 ]
2005年6月7日、Safari開発者のデイブ・ハイアットは自身のブログで、AppleがWebKitをオープンソース化し(以前はWebCoreとJavaScriptCoreのみがオープンソースだった)、WebKitのリビジョン管理ツリーと課題追跡システムへのアクセスを開放すると発表した。[ 28 ]
2005年12月中旬、スケーラブルベクターグラフィックス(SVG)のサポートが標準ビルドに統合されました。[ 33 ]
WebKit の JavaScriptCore および WebCore コンポーネントは GNU Lesser General Public License の下で利用可能であり、WebKit の残りの部分は BSD 2 条項ライセンスの下で利用可能です。[ 8 ]
2007 年初頭から、開発チームはアニメーション、トランジション、2D および 3D 変換を含むCascading Style Sheets (CSS) 拡張機能の実装を開始しました。 [ 34 ]これらの拡張機能は、標準化のために 2009 年にWorld Wide Web Consortium (W3C)に作業草案としてリリースされました。[ 35 ]
2007年11月、このプロジェクトはHTML5ドラフト仕様のメディア機能のサポートを追加し、WebKitで埋め込みビデオをネイティブにレンダリングしてスクリプトで制御できるようにしたと発表した。[ 36 ]
2008 年 6 月 2 日、WebKit プロジェクトは、JavaScriptCore をバイトコード インタプリタである「SquirrelFish」として書き直したと発表した。[ 37 ] [ 38 ]このプロジェクトは、2008 年 9 月 18 日に発表された SquirrelFish Extreme (略称 SFX) へと発展し、JavaScript をネイティブマシン コードにコンパイルすることで、バイトコード インタプリタの必要性をなくし、JavaScript の実行を高速化した。[ 39 ]当初、SFX でサポートされているプロセッサ アーキテクチャはx86のみだったが、2009 年 1 月末には、macOS のx86-64で SFX が有効になった。これは、そのプラットフォームですべてのテストに合格したためである。[ 40 ]
2010年4月8日、WebKitを再設計するWebKit2というプロジェクトが発表されました。その目標は、ページレイアウトとレンダリングを提供するコンポーネントを周囲のインターフェースやアプリケーションシェルからきれいに抽象化し、「Webコンテンツ(JavaScript、HTML、レイアウトなど)がアプリケーションUIとは別のプロセスで動作する」状況を作り出すことでした。この抽象化は、WebKitよりもWebKit2での再利用を容易にすることを目的としていました。WebKit2は「元のWebKitと互換性のないAPI変更」があったため、名前が変更されました。[ 41 ]
WebKit2 のターゲットは、Linux、macOS、Windows、GTK、およびMeeGo -Harmattan に設定されました。[ 42 ] [ 43 ] macOS の Safari はバージョン 5.1 で新しい API に切り替わりました。[ 44 ] iOS の Safari は iOS 8 で WebKit2 に切り替わりました。[ 45 ]
元の WebKit API は WebKitLegacy API に名称変更されました。[ 46 ] WebKit2 API は単に WebKit API に名称変更されました。[ 47 ]

WebKit はSafariのレンダリング エンジンとして使用され、Windows、macOS、Android (バージョン 4.4 KitKat 以前)上のGoogleのChromeウェブ ブラウザでも使用されていました。Chrome は WebCore のみを使用し、 V8という独自のJavaScript エンジンとマルチプロセス システムを搭載していました。[ 48 ] iOS版 Chrome は、Apple がそのプラットフォーム上のウェブ ブラウザに WebKit の使用を義務付けているため、引き続き WebKit を使用しています。[ 49 ] macOS および iOS 上の他のアプリケーションも WebKit を使用しています。たとえば、Apple の電子メール クライアントMail、App Store、Microsoft の個人情報管理ソフト Entourageの 2008 年版などです。これらはどちらも WebKit を使用して HTML コンテンツをレンダリングしています。
Symbian携帯電話のS60ブラウザ[ 50 ] 、 BlackBerry Browser (バージョン 6.0 以降)、Midori、Chromeブラウザ[ 51 ] [ 52 ] 、バージョン 4.4 KitKat より前のAndroid Web ブラウザ、バージョン 4.10 以降のPlayStation 3 システム ソフトウェアで使用されているブラウザなど、 WebKit をベースにした新しいWeb ブラウザが開発されています。[ 53 ] KDE の Rekonq Web ブラウザとPlasma Workspacesも、ネイティブの Web レンダリング エンジンとして WebKit を使用しています。OmniWeb 、iCab、Web (以前は Epiphany と呼ばれていました)、Sleipnirでは、元のレンダリング エンジンを置き換えて、WebKit がレンダリング エンジンとして採用されています。GNOME の Web はしばらくの間、Gecko と WebKit の両方をサポートしていました。しかし、チームは Gecko のリリース サイクルと将来の開発計画により、サポートを続けるには手間がかかりすぎると判断しました。[ 54 ] webOS は、アプリケーション ランタイムの基盤として WebKit を使用しています。[ 55 ] WebKit は、 Adobe Integrated Runtimeアプリケーション プラットフォームで HTML をレンダリングし、JavaScript を実行するために使用されます。Adobe Creative Suite CS5 では、WebKit はユーザー インターフェイスの一部をレンダリングするために使用されます。2010 年上半期までに、アナリストは WebKit ベースのブラウザを搭載したモバイル端末が 3 億 5000 万台出荷されたと推定しました。[ 56 ] 2015 年 4 月中旬までに、WebKitブラウザの市場シェアは50.3% になりました。[ 57 ]
ハイアットが WebKit のオープンソース化を発表した翌週、ノキアは WebKit をSymbianに移植し、S60 を搭載した携帯電話向けに WebKit ベースのブラウザを開発していると発表した。Web Browser for S60と名付けられたこのブラウザは、ノキア、サムスン、LG、その他の Symbian S60 搭載携帯電話で使用された。アップルも WebKit をiPhone 、iPod Touch、iPadのiOSに移植しており、デバイスのウェブ ブラウザや電子メール ソフトウェアでコンテンツをレンダリングするために使用されている。[ 58 ] Androidモバイル フォン プラットフォームは、WebKit (およびその後のBlink フォークのバージョン) をウェブブラウザのベースとして使用しており[ 59 ] [ 60 ] [ 61 ]、 2009 年 1 月に発表されたPalm Pre は、WebKit ベースのインターフェースを備えている。[ 62 ] Amazon Kindle 3 には、実験的な WebKit ベースのブラウザが含まれている。[ 63 ]
2007 年 6 月、Apple は WebKit が Safari の一部としてMicrosoft Windowsに移植されたことを発表しました。同社は Windows 版 Safari をひっそりと終了しましたが、[ 64 ] Microsoft のオペレーティングシステムへの WebKit の移植は現在も積極的にメンテナンスされています。[ 65 ] [ 66 ] Windows 版は Apple 独自のライブラリを使用して動作し、Windows 版 iCloud [ 67 ]および iTunes [ 68 ]に使用されていますが、「WinCairo」版は完全にオープンソースで再配布可能な移植版です。[ 69 ] [ 70 ]

WebKit は、Linux用のGTKツールキット ( WebKitGTKという名前で、Eolie で使用)、[ 71 ] GNOME Web、[ 72 ] [ 73 ] Adobe Integrated Runtime、Enlightenment Foundation Libraries (EFL)、Clutter ツールキット[ 74 ]など、複数のプラットフォームをサポートするいくつかのツールキットにも移植されています。Qt Software は、Qt 4.4 リリースに QtWebKit というモジュールとして WebKit ポートを含めました[ 75 ] (現在はBlink を使用するQt WebEngineに置き換えられています)。Qt上のIris Browserも WebKit を使用しています。Enlightenment Foundation Libraries (EFL) ポートである EWebKit は、組み込みシステムとモバイルシステムに焦点を当てて ( Samsungと ProFusion [ 76 ]によって開発され)、スタンドアロンのブラウザー、ウィジェット/ガジェット、リッチテキスト ビューア、およびコンポーザーとして使用されます。Clutterの移植版はCollaboraによって開発され、Robert Bosch GmbHがスポンサーとなっています。
また、WebKit と同期したプロジェクト (Pleyo がスポンサー) [ 77 ] Origyn Web Browserというプロジェクトもあり、これは抽象プラットフォームへのメタポートを提供し、組み込みシステムや軽量システムへの移植をより迅速かつ容易にしました。[ 78 ]このポートは、セットトップボックスや PMPなどの組み込みデバイスに使用され、 AmigaOS [ 79 ] AROS [ 80 ]およびMorphOSに移植されています。 MorphOS バージョン 1.7 は、 HTML5メディア タグをサポートするOrigyn Web Browser (OWB)の最初のバージョンです。[ 81 ] [ 82 ]
Web Platform for Embedded ( WPE ) は、組み込みアプリケーション向けに設計された WebKit の移植版です。基本的なレンダリング機能を汎用ルーチンライブラリ (libwpe)、プラットフォームバックエンド、およびエンジン自体 (WPE WebKit と呼ばれる) に分割することで、アーキテクチャをさらに改善しています。GTK 移植版は自己完結型ですが、内部のプラットフォーム固有の実装ではなく、これらの基本ライブラリを使用するように構築できます。WPE 移植版は現在、Igaliaによってメンテナンスされています。
2013 年 4 月 3 日、Google は WebKit の WebCore コンポーネントのフォークを作成し、 Blinkと名付けると発表しました。Chrome の開発者は、上流で競合を引き起こすことなくブラウザでその機能を実装する自由度を高め、Chrome で使用されていない WebCore コンポーネントのコードを削除してコードベースを簡素化するために、WebCore をフォークすることにしました。Opera Softwareが年初にChromiumコードベースを使用して WebKit に切り替えると発表したことに関連して、 Opera ウェブ ブラウザも Blink に切り替えることが確認されました。 [ 48 ]この発表を受けて、WebKit の開発者は、コードベースを合理化するために、エンジンから Chrome 固有のコードを削除することについて議論を開始しました。[ 83 ] WebKit には、Chrome 固有のコード (ビルド システム、V8 JavaScript エンジン フック、プラットフォーム コードなど) はなくなりました。
WebCoreは、WebKitプロジェクトによって開発された、HTMLおよびSVG( Scalable Vector Graphics )用のレイアウト、レンダリング、およびDOM(Document Object Model )ライブラリです。ソースコード全体は、 GNU Lesser General Public License (LGPL)の下でライセンスされています。WebKitフレームワークはWebCoreとJavaScriptCoreをラップし、 C++ベースのWebCoreレンダリングエンジンとJavaScriptCoreスクリプトエンジンへのObjective-Cアプリケーションプログラミングインターフェースを提供することで、 Cocoa APIに基づくアプリケーションから容易に参照できるようにしています。後のバージョンでは、クロスプラットフォームのC++プラットフォーム抽象化も含まれており、さまざまな移植版によってより多くのAPIが提供されています。
WebKitはAcid2およびAcid3テストに合格し、リファレンスハードウェア上でピクセルパーフェクトなレンダリングとタイミングやスムーズさの問題がないことが確認された。[ 84 ]
JavaScriptCore は WebKit 実装用のJavaScript エンジンを提供するフレームワークであり、macOS 内の他のコンテキストでもこの種のスクリプト機能を提供します。[ 20 ] [ 85 ] JavaScriptCore は元々、 KDEの JavaScript ライブラリKJS (KDE プロジェクトの一部) とPCRE正規表現ライブラリから派生したものです。KJS と PCRE からフォークして以来、JavaScriptCore は多くの新機能を追加し、パフォーマンスを大幅に向上させてきました。[ 86 ]
2008 年 6 月 2 日、WebKit プロジェクトは、JavaScriptCore を「SquirrelFish」として書き直したと発表した。[ 37 ] [ 38 ]これは、元の AST ウォーキング インタプリタに代わるレジスタベースのバイト コード インタプリタである。このプロジェクトは後に SquirrelFish Extreme (略称 SFX、Nitro として販売) へと進化し、2008 年 9 月 18 日に発表され、ジャスト イン タイム コンパイルを導入することで JavaScript の実行速度をさらに向上させた。[ 39 ]
FTLという名の最適化ジャストインタイム(JIT) コンパイラが2014 年 5 月 13 日に発表されました。[ 87 ] LLVMを使用して最適化されたマシン コードを生成します。「FTL」は「Fourth-Tier-LLVM」の略で、非公式には「faster-than-light」の略でもあり、その速度を暗示しています。[ 88 ] 2016 年 2 月 15 日現在、FTL JIT のバックエンドは「Bare Bones Backend」(略して B3)に置き換えられています。[ 89 ]
「kf5」ブランチには最後にメンテナンスされた状態が含まれています。
{{cite web}}: CS1メンテナンス: アーカイブサービスは非推奨になりました (リンク){{cite web}}: CS1メンテナンス: アーカイブサービスは非推奨になりました (リンク){{cite web}}: CS1メンテナンス: アーカイブサービスは非推奨になりました (リンク)