| 開発者 | Mozilla Foundation、Mozilla Corporation、Adobe Systems、およびその他の貢献者 |
|---|---|
| 安定リリース | 125 / 2022年11月4日 |
| リポジトリ |
|
| 書かれた | C++、JavaScript、Rust |
| タイプ | ブラウザエンジン |
| ライセンス | MPL2.0 [1] [2] |
| Webサイト | developer.mozilla.org/en-US/docs/Glossary/Gecko |
Gecko (ɢecko と表記) は、Mozillaが開発したブラウザ エンジンです。Firefoxブラウザ、Thunderbird電子メール クライアント、その他多くのプロジェクト で使用されています。
Geckoはオープンな インターネット標準をサポートするように設計されており、さまざまなアプリケーションでWebページを表示するために使用され、場合によってはアプリケーションのユーザーインターフェイス自体(XULをレンダリングすることによって)にも使用されます。Geckoは、Webブラウザー、コンテンツプレゼンテーション、クライアント/サーバーなど、インターネット対応アプリケーションのさまざまな役割に適した豊富なプログラミングAPIを提供します。[3]
GeckoはC++とJavaScriptで書かれており、[4] [5] 2016年からはRustでも書かれています。[6] [7] Mozilla Public Licenseバージョン2の規約に従う無料のオープンソースソフトウェアです。 [8] MozillaはAndroid、[4] Linux、macOS、Windowsでの使用を公式にサポートしています。[9]
歴史
現在 Gecko として知られるレイアウト エンジンの開発は、NetscapeがDigitalStyleを買収した 1997 年に開始されました。既存の Netscape レンダリング エンジンは、もともとNetscape Navigator 1.0 用に作成され、長年にわたってアップグレードされてきましたが、速度が遅く、W3C 標準に十分準拠しておらず、ダイナミック HTMLのサポートが限定的で、インクリメンタル リフロー (新しいデータがダウンロードされてページに追加されると、レイアウト エンジンが画面上の要素を再配置する) などの機能が欠けていました。新しいレイアウト エンジンは古いものと並行して開発され、Netscape Communicator が成熟して安定したら統合する予定でした。切り替え前に、古いレイアウト エンジンを使用して、少なくとももう 1 つの Netscape のメジャー リビジョンがリリースされる予定でした。
1998 年初頭に Mozilla プロジェクトが開始された後、新しいレイアウト エンジンのコードがオープン ソース ライセンスでリリースされました。当初はRaptorとして発表されましたが、商標の問題により、名前はNGLayout (次世代レイアウト) に変更されました。Netscape は後に NGLayout をGeckoにブランド変更しました。Mozilla Organization ( Mozilla Foundationの前身) は当初 NGLayout の名前 (Gecko は Netscape の商標) を使い続けましたが、[10]最終的には Gecko ブランドが採用されました。[要出典]
1998 年 10 月、Netscape は次期ブラウザでは古いレイアウト エンジンではなく Gecko (当時はまだ NGLayout と呼ばれていた) を使用すると発表した。このため、アプリケーションの大部分を書き直す必要があった。この決定は Web 標準の支持者には好評だったが、Netscape の開発者には不評で、6 か月という書き直し期間に不満を抱いていた。[11]また、 Netscape Communicator 5.0で行われた作業のほとんど(古いレイアウト エンジンに対するMariner の改良の開発を含む) を放棄しなければならなかった。Gecko を組み込んだ最初の Netscape リリースである Netscape 6 は、2000 年 11 月にリリースされた (Netscape 5 という名前は一度も使用されなかった)。[要出典]
Gecko の開発が進むにつれて、他のアプリケーションや埋め込みソフトウェアも Gecko を利用するようになりました。当時 Netscape の親会社であったAmerica Online は、最終的にCompuServe 7.0 と AOL for Mac OS X で Gecko を採用しました (これらの製品には以前から Internet Explorer が組み込まれていました)。ただし、いくつかのベータ版を除いて、Gecko はMicrosoft Windows のメインAOL クライアントでは使用されませんでした。[引用が必要]
2003 年 7 月 15 日、AOL は残りの Gecko 開発者を解雇し、同日に設立された Mozilla Foundation が Gecko 開発の主たる管理者となりました。現在、Gecko はMozilla Corporationの従業員、Mozilla プロジェクトに貢献している企業の従業員、およびボランティアによって開発されています。[引用が必要]
Netscape 時代には、技術面と経営面の判断ミスが重なり、Geckoソフトウェアが肥大化しました。[11] [12] [13]そのため、2001 年にApple はGecko ではなくKHTML をフォークし、Safariブラウザ用のWebKit エンジンを開発しました。[12] [13]しかし、2008 年までに Mozilla が肥大化の問題の一部に対処し、Gecko のパフォーマンスが大幅に向上しました。[14]
2016年10月、Mozillaは「 Firefoxユーザーのための次世代ウェブエンジンを構築する」ための複数のソフトウェア開発の取り組みを含む進行中のプロジェクトであるQuantumを発表しました。これには、実験的なServoプロジェクトから取り入れられたGeckoの多数の改良が含まれています。[15] [16] Firefox 57(別名「Firefox Quantum」)は、2017年11月に最初に出荷され、Quantum / Servoプロジェクトの主要コンポーネントが有効になっている最初のバージョンです。これには、CSSおよびGPUレンダリングコンポーネントのパフォーマンスの向上が含まれます。将来のバージョンでは、追加のコンポーネントがServoからGeckoに段階的に統合されます。[15]
2018年9月、MozillaはGeckoViewを発表しました。これは、GeckoをAndroidで再利用できるようにするソフトウェアライブラリに基づく、Mozillaの次世代モバイル製品の基盤であり、「エンジン自体をユーザーインターフェイスから切り離し、他のアプリケーションに簡単に組み込む」ための新しいソフトウェア開発の取り組みを網羅しています。同月に出荷されたFirefox Focus 7.0 [17] は、 GeckoViewを導入した最初のバージョンであり、平均ページ読み込みのパフォーマンスが向上しています。[18] [19] Firefox RealityもGeckoViewを使用して構築されました。[18] 2019年6月、Mozillaは、GeckoViewを使用したAndroidウェブブラウザーの構築に焦点を当てた進行中のプロジェクトとしてFirefox Previewを発表しました。[20] 2020年8月に最初に出荷された「Firefox Daylight」としても知られるAndroid版Firefox 79は、GeckoViewエンジンを搭載した主要コンポーネントを搭載した最初の安定リリースです。[21]
標準サポート
Gecko は最初からオープンなインターネット標準をサポートするように設計されました。Gecko がサポートする標準には次のようなものがあります。
- CSSレベル 3
- DOM
- HTML5
- JavaScript(ECMAScript ES6以上、[22]現在はECMAScript 2021 ES12)、SpiderMonkeyで実装
- 数学ML
- RDFS
- XForms (公式拡張機能経由)
- 1.0の
- XML 1.0
- TransforMiiX で実装されたXSLTとXPath
GeckoはSVGもサポートしています。[23]
レガシー IE 非標準サポート
Netscape および Internet Explorer の旧バージョン用に設計されたWeb ページをサポートするために、Gecko はDOCTYPE切り替えをサポートしています。最新の DOCTYPE を持つドキュメントは、W3C標準に厳密に従う標準準拠モードでレンダリングされます。DOCTYPE を持たないドキュメントや古い DOCTYPE を持つドキュメントは、 Netscape Communicator 4.xの非標準の奇妙な機能の一部をエミュレートする互換モードでレンダリングされます。ただし、4.x の機能の一部 (レイヤーなど) はサポートされていません。
Geckoは、 marquee要素やプロパティなど、一部の非標準Internet Explorer機能も限定的にサポートしていますdocument.all(ただし、明示的にテストするページではdocument.allサポートされていないことが通知されます)。[24]
使用法
Geckoは主にウェブブラウザで使用されており、最も古いものはNetscape 6とMozilla Suite(後にSeaMonkeyに改名)です。また、 FirefoxやFirefox for mobileなどの他のMozillaウェブブラウザ派生や、 Wineの一部であるInternet Explorerクローンの実装でも使用されています。[25] MozillaはThunderbird電子メールクライアントでもこれを使用しています。
Geckoを使用する他のウェブブラウザには、GNU IceCat、[26] Waterfox、K-Meleon、Lunascape、Portable Firefox、Conkeror、Classilla、TenFourFoxなどがあります。
GeckoはSugarのOLPC XO-1コンピュータでも使用されており、 [27] XUL(XMLユーザーインターフェイス言語)の完全な実装として使用されています。Geckoは現在XUL仕様を定義しています。 [更新が必要] Geckoは、廃止されたFirefox OSをベースにしたKaiOSモバイルオペレーティングシステムでも使用されています。[28]
過去のユーザー
以前 Gecko を使用していた製品には、Pale Moon (現在はGoannaを使用)、Epiphany (現在はGNOME Webと呼ばれ、 WebKitGTK を使用)、GNOME DevHelp (現在はWebKitGTKを使用) などがあります。
Geckoを使用していた廃止された製品には、Swiftfox、Flock、Galeon、Camino、Minimo、Beonex Communicator、Kazehakase、Songbird、 Sunbird(カレンダー)、MicroB、Nightingale、Instantbird、Picasa for Linuxなどがあります。[29]
独自の依存関係
Windowsやその他のプラットフォームでは、Geckoは独自のコンパイラに依存しています。[30]
Gecko 2.0以降、バージョン番号はFirefox 5に合わせて5.0に引き上げられ、それ以降はFirefoxとThunderbirdの両方のメジャーバージョン番号と同期され、[31]もはや独立したコンポーネントではないことを反映しています。[32]
量子
Quantumは、 Firefoxユーザー向けの次世代 Web エンジンを構築するという複数のソフトウェア開発の取り組みを網羅するMozillaプロジェクトです。実験的なServoプロジェクトから主に取り入れられた Gecko の多数の改良が含まれています。Quantum には、ユーザー インターフェイスとインタラクションの改良も含まれています。[15] [16]
2017年11月にリリースされたFirefox 57は、Servoコンポーネントが有効になった最初のバージョンです。Mozillaはこのバージョンと今後予定されているいくつかのリリースを「Firefox Quantum」と呼んでいます。[33] [34]
背景
2012年、Mozillaは実験的なServoプロジェクトを開始しました。これは、メモリ安全性の脆弱性を減らしながら並行性と並列性を向上させることを目標にゼロから設計されたエンジンです。Servoは、Mozillaによって作成されたRustプログラミング言語で書かれており、コンパイルされたC++コードよりもメモリ安全性、並行性、並列性が優れたコンパイル済みコードを生成するように設計されています。[5]
2016年4月の時点で、Servoがフル機能のブラウザエンジンになるには少なくとも数年の開発が必要だったため、[35]、安定したServoの一部をFirefoxに導入するためにQuantumプロジェクトを開始することが決定されました。Mozillaは2020年8月にすべてのServo開発者を解雇しました。[36]
コンポーネント
Quantumプロジェクトはいくつかのサブプロジェクトで構成されています。[15]
- CSS : Servoの並列スタイルシートシステムがGeckoに統合されました。ベンチマークによると、パフォーマンスはCPUコアの数に比例して向上します。[37]これはFirefox 57でリリースされました。[34]
- レンダリング: Servo のレンダリングアーキテクチャである WebRender が Gecko に統合されました。WebRender は、即時モードの描画モデルを、CSS/DOM とシーン グラフの類似性を利用してGPUでより高速化しやすい保持モードモデルに置き換えます。テストでは、最悪のシナリオのレンダリングが 1 秒あたり 60 フレームを超えました。[38] Mozilla は、Firefox 67 で、特定のハードウェア/OS の組み合わせで新しいレンダラーを有効にし始めました。 [39]
- コンポジター: Gecko の既存のコンポジターは独自のプロセスに移動され、ブラウザのタブをグラフィック ドライバー関連のクラッシュから分離しました。コンポジターのクラッシュによってブラウザのコンテンツ プロセスが停止することはないため、コンポジター プロセスはユーザー データを失うことなく透過的に再起動できます。これは Firefox 53 でリリースされました。[40]
- DOM : ServoのConstellationアーキテクチャ[41]とOperaのPrestoエンジン[42]に大まかに影響を受け、 Quantum DOMはDOM内で協調的にスケジュールされたスレッドを使用して、プロセス数とメモリ使用量を増やすことなく応答性を向上させます。このコアはFirefox 57で出荷されました。[43]
- Flow : Geckoコンポーネント全体にわたって作業するチームが推進する、ユーザーに見えるパフォーマンス改善の包括的な取り組み。主にG Suite(現在はGoogle Workspaceと呼ばれています)とFacebookなどの主要なウェブアプリにおける実際のユーザーパフォーマンスの改善に焦点を当てています。[44]この作業はFirefox 57で完了し、出荷されました。[45]
- Photon :アプリケーション全体のUIを刷新し、UIパフォーマンスの向上に重点を置いています。Quantum Flowの姉妹プロジェクトとして扱われています。[46]これはFirefox 57でリリースされました。 [33]
- ネットワーク:ネットワークアクティビティをメインスレッドから移動し、ネットワークストリームのコンテキスト依存の優先順位付けを行い、キャッシュ層とネットワークを競合させることで、Geckoのネットワーク層であるNeckoのパフォーマンスを向上させます。 [47]この機能はFirefox 59でリリースされました。 [48]
アズール
Mozilla Azureプロジェクトは、 Firefoxで使用されるステートレスな低レベルグラフィック抽象化APIです。[49]
このプロジェクトには、次のようないくつかの目的があります。
- より正確なDirect2D互換性、
- 最適化された州の相互運用性、および
- パフォーマンス特性とバグに対する制御が向上しました。
Azureは3Dグラフィックバックエンド上に2Dハードウェアアクセラレーションを提供します。Firefoxは2012年にCairoの代わりにAzureを使い始めました。 [50] [51]これはC++で書かれており、 Servoで使用されています。[52] Azureの名前は、初期のNetscapeの創設者であるJames H. Clarkと、ワークステーションに色にちなんで名付けられることが多かったSilicon Graphicsでの彼の初期の仕事への賛歌です。[53]
参考文献
- ^ 「 Mozilla Foundation エンドユーザーライセンス契約」。Mozilla 。
- ^ 「Mozilla ライセンスポリシー」 mozilla.org . 2013 年 3 月 26 日閲覧。
- ^ 「Embedding Mozilla」Mozilla.org. 2012-10-25 . 2012-10-31閲覧。
- ^ ab 「Android 向けシンプルな Firefox ビルド」。2019 年 9 月 29 日時点のオリジナルよりアーカイブ。2017年 5 月 3 日閲覧。Gecko
は C++ と JavaScript を使用して実装されています。
- ^ ab Bergstrom, Lars; et al. (2016 年 5 月). 「Rust を使用したサーボ Web ブラウザー エンジンの設計」(PDF)。国際ソフトウェア エンジニアリング会議の議事録。2016年 5 月 29 日のオリジナルからアーカイブ(PDF) 。
- ^ 「Google グループ」。groups.google.com。
- ^ Yegulalp, Serdar (2017 年 2 月 3 日)。「Mozilla が Firefox の運命を Rust 言語に結び付ける」。InfoWorld。
- ^ 「MPL 2 アップグレード」。2012年8月18日閲覧。
- ^ 「Gecko FAQ」。MDN Web Docs。2019年10月8日時点のオリジナルよりアーカイブ。2017年5月3日閲覧。
- ^ 「nglayout プロジェクト: アイデンティティ危機」。Mozilla.org。2011 年 6 月 29 日時点のオリジナルよりアーカイブ。2012 年 10 月 31 日閲覧。
- ^ ab Jorge O. Castro (2004-06-15). 「Ars Technica が Mozilla.org の Scott Collins と対談」Ars Technica . 2017 年 2 月 16 日閲覧。
- ^ ab Paul Festa (2003-01-14). 「Apple snub stings Mozilla」. CNET Networks . 2012-10-25時点のオリジナルよりアーカイブ。2017-02-16閲覧。
- ^ ab David Baron (2003-01-09). 「Thursday 2003-01-09」。David Baronのブログ。自費出版。2009年7月28日時点のオリジナルよりアーカイブ。 2017年2月16日閲覧。
- ^ Ryan Paul (2008-09-09). 「WebKit の人気が高まる中、Mozilla が Gecko に注力する理由」 。2017年 2 月 16 日閲覧。
- ^ abcd "Quantum". Mozilla Wiki . 2017年4月20日閲覧。
- ^ ab Cimpanu、Catalin。「Mozilla、Firefox向けの新ブラウザエンジンQuantumを発表」。softpedia 。 2016年11月7日閲覧。
- ^ “Firefox Focus 7.0がベータ版に突入、GeckoView(Geckoエンジン)に切り替え”. 2018年9月14日. 2020年7月31日時点のオリジナルよりアーカイブ。2019年9月19日閲覧。
- ^ ab 「Firefox Focus with GeckoView」。Mozilla Hacks 2018年9月13日。 2019年9月4日閲覧。
- ^ 「Android 版 Firefox Focus (バージョン 7) の新機能 | Firefox Focus ヘルプ」。support.mozilla.org。2019年9 月 4 日閲覧。
- ^ 「2019年のGeckoView」。Mozilla Hacks。2019年6月27日。 2019年9月4日閲覧。
- ^ Vesta Zare (2020 年 8 月 25 日)。「すべてのプラットフォームで高速、パーソナライズ、プライベート設計を実現: Android 版 Firefox の新しいエクスペリエンスのご紹介」。Mozillaブログ。2020年9 月 22 日閲覧。
- ^ 「Firefox 102 における ECMAScript 2015 (ES6) のブラウザ間互換性」www.lambdatest.com . 2022 年 8 月 21 日閲覧。
- ^ 「Firefox 102 における SVG (基本サポート) のクロスブラウザ互換性」www.lambdatest.com . 2022 年 8 月 21 日閲覧。
- ^ 「Mozilla が検出不可能な document.all サポートを追加、新しい Novell Linux ディストリビューションの一部に?」 Developer.mozilla.org。2004 年 7 月 23 日。2018年 2 月 7 日閲覧。
- ^ 「IE は Wine で Gecko を使用する」。 Wine Wiki 。2009 年 9 月 14 日閲覧。
- ^ sdubois (2010年6月24日). 「Gecko」.フリーソフトウェア財団. 2019年5月23日閲覧。
- ^ Martens、中国 (2007-01-03)。「One Laptop Per Child が『Sugar』インターフェースを準備」IDG News Service。2008-01-18 にオリジナルからアーカイブ。2007-12-28に取得。
- ^ Hill, Paul (2020-03-12). 「KaiOS TechnologiesがMozillaと提携しGeckoを改良」Neowin . 2024-07-12閲覧。
- ^ 「Picasa 3.0 for Linux」。2009年1月7日時点のオリジナルよりアーカイブ。2008年12月28日閲覧。
- ^ 「Windows 用 Firefox の構築」。MDN Web Docs。
- ^ 「Gecko バージョンとアプリケーション バージョン」。MDN。2020年10 月 31 日時点のオリジナルよりアーカイブ。2013 年 11 月 18 日閲覧。
- ^ 「新しいThunderbird 5には大した機能はないが、ロードマップは有望」Ars Technica 2011年6月30日2018年2月7日閲覧。
- ^ ab 「Firefox 57.0、すべての新機能、更新、修正をご覧ください」。Mozilla 。2018年10月30日閲覧。
- ^ ab 「新しい Firefox の紹介: Firefox Quantum – The Mozilla Blog」。The Mozilla Blog。2018年 10 月 30 日閲覧。
- ^ 「Servo の残りの作業」。GitHub。2017年 2 月 17 日閲覧。
- ^ 「Mozilla、商用製品に再び注力する一方で従業員250人を解雇」ZDNet 2022年6月14日閲覧。
- ^ 「The Changelog」. The Changelog . 2016年11月18日. 2017年3月28日閲覧。
- ^ 「Bay Area Rust Meetup February 2016」。Air Mozilla 。2017年3月28日閲覧。
- ^ 「Webrender Where」。Mozilla Wiki 。 2020年7月14日閲覧。
- ^ 「Firefox は Project Quantum の最初のビッグ バイトでより高速かつ安定し、コンパクトなテーマと権限の再設計でよりシンプルに」。Mozillaブログ。2017年 4 月 27 日閲覧。
- ^ 「Servo Architecture」。YouTube 。 2017年1月18日。2021年12月11日時点のオリジナルよりアーカイブ。2017年3月28日閲覧。
- ^ 「Mozilla の Quantum プロジェクト」。Bill McCloskey のブログ。2016 年 10 月 27 日。2017年 3 月 28 日閲覧。
- ^ 「量子時代への突入」Mozilla Hacks 2017年11月13日2020年7月14日閲覧。
- ^ 「Quantum Flow」。Mozilla Wiki 。 2017年3月28日閲覧。
- ^ 「Quantum Flow Engineering Newsletter #25」ehsanakhgari.org 2017-09-17 . 2020-07-14閲覧。
- ^ dolske (2017-05-18). 「Photon Engineering Newsletter #1」. Dolske のブログ. 2017-07-04閲覧。
- ^ 「TPE Necko/プロジェクト - MozillaWiki」。wiki.mozilla.org 。 2017年7月4日閲覧。
- ^ 「Firefox 59 リリースノート」。www.mozilla.org 。 2019年1月16日閲覧。
- ^ 「プラットフォーム/GFX/Moz2D - MozillaWiki」。
- ^ Parfeni、Lucian。「Firefox は、すべてのプラットフォームで Canvas に Azure Graphics API を使用するようになりました」。
- ^ 「Azure が Mozilla Firefox の Cairo を置き換える - Phoronix」。
- ^ Willis, Nathan (2015 年 6 月 17 日). 「Mozilla Servo による並列ページレンダリング」. LWN.net . 2015 年6 月 27 日閲覧。
- ^ 「Azure プロジェクトの紹介 - JOEDREW!」。2016 年 9 月 8 日時点のオリジナルよりアーカイブ。2019 年 9 月 22 日閲覧。
外部リンク
- Gecko - MDN Web ドキュメント
- Gecko 開発 wiki (wiki.mozilla.org)
- Mozilla 製品戦略提案 (ドラフト)
- Webブラウザ標準のサポート
- JRex 2005-10-24 にWayback Machineでアーカイブ( Gecko 用Java API)
