Gecko(ソフトウェア)

ヤモリ
原作者ネットスケープ
開発者Mozilla FoundationMozilla CorporationAdobe Systems、およびその他の貢献者
初回リリース1998年NGLayoutとして
安定版リリース
125 / 2022年11月4日 (2022年11月4日
リポジトリ
書かれたC++JavaScriptRust
タイプブラウザエンジン
ライセンスMPL 2.0 [ 1 ] [ 2 ]
Webサイト開発者.mozilla .org /en-US /docs /用語集/Gecko

GeckoはMozillaによって開発されたブラウザエンジンです。Firefoxブラウザ、Thunderbirdメールクライアント、そしてAOLのNetscape 6、Netscape 7、Netscape Browser、Netscape Navigator 9(現在は廃止されています)で使用されていますその他多くプロジェクト使用います。

Geckoはオープンなインターネット標準をサポートするように設計されており、様々なアプリケーションでウェブページを表示するために使用され、場合によってはアプリケーションのユーザーインターフェース自体(XULをレンダリングすることによって)にも使用されます。Geckoは豊富な​​プログラミングAPIを提供しており、ウェブブラウザ、コンテンツプレゼンテーション、クライアント/サーバーなど、インターネット対応アプリケーションの様々な役割に適しています。[ 3 ]

GeckoはC++JavaScriptで書かれており、[ 4 ] [ 5 ]、2016年からはRustでも書かれています。[ 6 ] [ 7 ] Mozilla Public Licenseバージョン2の規約に従う無料のオープンソースソフトウェアです。[ 8 ] MozillaはAndroid[ 4 ] LinuxmacOSWindowsでの使用を公式にサポートしています。[ 9 ]

歴史

現在 Gecko として知られるレイアウト エンジンの開発は、NetscapeDigitalStyleを買収した 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と呼ばれていた)を採用すると発表した。これによりアプリケーションの大部分の書き換えが必要になった。この決定はウェブ標準支持者には好評だったが、書き換えに6ヶ月しか与えられなかったことに不満を抱いたNetscapeの開発者からは不評だった。[ 11 ]また、この決定はNetscape Communicator 5.0に向けて行われた作業の大部分(旧レイアウトエンジンに対するMarinerの改良開発を含む)を放棄せざるを得ないことも意味した。Geckoを組み込んだ最初のNetscapeリリースであるNetscape 6は2000年11月にリリースされた(Netscape 5という名前は結局使われなかった)。

Geckoの開発が進むにつれ、他のアプリケーションや埋め込み型アプリケーションもGeckoを利用するようになりました。当時Netscapeの親会社であったAmerica Onlineは、最終的にCompuServe 7.0とMac OS X版AOL(これらの製品には以前からInternet Explorerが組み込まれていました)にGeckoを採用しました。しかし、いくつかのベータ版を除いて、GeckoはMicrosoft WindowsのAOLクライアントには一度も採用されませんでした。

2003年7月15日、AOLは残っていたGecko開発者を解雇し、同日に設立されたMozilla FoundationがGecko開発の主要管理者となりました。現在、GeckoはMozilla Corporationの従業員、Mozillaプロジェクトに貢献する企業の従業員、そしてボランティアによって開発されています。[ 12 ]

Netscape時代には、技術面と経営面でのまずい判断が重なり、Geckoソフトウェアの肥大化を招いた。[ 11 ] [ 13 ] [ 14 ]そのため、2001年にAppleはSafariブラウザ用のWebKitエンジンを作るために、GeckoではなくKHTMLをフォークすることを選択した。[ 13 ] [ 14 ]しかし、2008年までにMozillaは肥大化の問題の一部に対処し、Geckoのパフォーマンスが大幅に向上した。[ 15 ]

量子

2016年10月、Mozillaは「 Firefoxユーザーのための次世代ウェブエンジンの構築」を目的とした複数のソフトウェア開発プロジェクトを包含する進行中のプロジェクト、Quantumを発表しました。このプロジェクトには、実験的なServoプロジェクトから引き継がれたGeckoへの数多くの改良が含まれていました。[ 16 ] [ 17 ] Firefox 57(「Firefox Quantum」としても知られる)は2017年11月に初公開され、Quantum/Servoプロジェクトの主要コンポーネントが有効になった最初のバージョンでした。これには、CSSおよびGPUレンダリングコンポーネントのパフォーマンス向上が含まれます。今後のバージョンでは、ServoからGeckoへの追加コンポーネントが段階的に統合される予定です。[ 16 ]

ゲッコービュー

2018年9月、MozillaはGeckoViewを発表しました。これは、GeckoをAndroidで再利用できるようにするソフトウェアライブラリに基づく、Mozillaの次世代モバイル製品の基盤であり、「エンジン自体をユーザーインターフェースから分離し、他のアプリケーションへの埋め込みを容易にする」ための新しいソフトウェア開発の取り組みを網羅しています。同月にリリースされたFirefox Focus 7.0 [ 18 ]は、GeckoViewを導入した最初のバージョンであり、平均ページ読み込みのパフォーマンスが向上しました。[ 19 ] [ 20 ] Firefox RealityもGeckoViewを使用して構築されました。[ 19 ] 2019年6月、MozillaはGeckoViewを搭載したAndroidウェブブラウザの構築に重点を置いた進行中のプロジェクトとしてFirefox Previewを発表しました。[ 21 ] 2020年8月に初リリースされたAndroid版Firefox 79(「Firefox Daylight」とも呼ばれる)は、主要コンポーネントにGeckoViewエンジンを搭載した最初の安定リリースです。[ 22 ]

標準サポート

Gecko がサポートする標準には次のようなものがあります:

レガシーIEの非標準サポート

Netscape および Internet Explorer の旧バージョン向けに設計されたWeb ページをサポートするため、Gecko はDOCTYPE切り替えをサポートしています。最新の DOCTYPE を持つドキュメントは、 W3C標準に厳密に準拠する標準準拠モードでレンダリングされます。DOCTYPE を持たないドキュメント、または古い DOCTYPE を持つドキュメントは、 Netscape Communicator 4.xの非標準の特殊な機能をエミュレートするQuirks モードでレンダリングされます。ただし、4.x の一部の機能(レイヤーなど)はサポートされていません。

Geckoは、マーキー要素やプロパティなど、一部の非標準Internet Explorer機能も限定的にサポートしていますdocument.all(ただし、明示的にテストしているページではdocument.allサポートされていないことが通知されます)。[ 25 ]

使用法

Geckoは主にウェブブラウザで使用されており、最も初期のものはNetscape 6Mozilla Suite(後にSeaMonkeyに改名)です。また、 Firefoxモバイル版Firefox、Wineの一部であるInternet Explorerクローンの実装など、Mozillaの他のウェブブラウザの派生版でも使用されています。[ 26 ] FirefoxのフォークでGeckoを使用しているものには、LibreWolfZen BrowserGNU IceCat[ 27 ] Midori[ 28 ] WaterfoxPortable FirefoxFloorpなどがあります。MozillaはThunderbirdメールクライアントでもGeckoを使用しています。

Gecko を使用する他の Web ブラウザーには、LunascapeSailfish Browserなどがあります。

Geckoは、廃止されたFirefox OSをベースにしたKaiOSモバイルオペレーティングシステムでも使用されています。[ 29 ]

過去のユーザー

以前 Gecko を使用していた製品には、Pale MoonK-Meleon (現在は両方ともGoanna を使用)、Epiphany (現在はGNOME Webと呼ばれ、 WebKitGTKを使用)、GNOME DevHelp (現在はWebKitGTKを使用) などがあります。

Geckoを使用していた廃止された製品には、SwiftfoxFlockGaleonCaminoMinimoBeonex CommunicatorKazehakaseSongbirdSunbird(カレンダー)MicroBNightingaleInstantbirdConkerorClassillaTenFourFoxPicasa for Linuxなどがあります。[ 30 ]

GeckoはSugarのOLPC XO-1コンピュータでも使用されていましたが[31]、2009WebKitに移行しました。

独自の依存関係

Windowsや他のプラットフォームでは、Geckoは独自のコンパイラに依存しています。[ 32 ]

バージョン管理

Gecko 2.0以降、Firefox 5に合わせてバージョン番号が5.0に引き上げられ、それ以降はFirefoxとThunderbirdの両方のメジャーバージョン番号と同期され、[ 33 ]独立したコンポーネントではなくなったことを反映しています。[ 34 ]

量子

Quantumは、複数のソフトウェア開発プロジェクトを包含するMozillaプロジェクトであり、「 Firefoxユーザーのための次世代ウェブエンジンの構築」を目指しています。Quantumには、実験的なServoプロジェクトから主に取り入れられたGeckoの数々の改良が含まれています。また、ユーザーインターフェースとインタラクションの改良も含まれています。[ 16 ] [ 17 ]

2017年11月にリリースされたFirefox 57は、Servoコンポーネントが有効化された最初のバージョンです。Mozillaは、このバージョンと今後予定されている複数のリリースを「Firefox Quantum」と呼んでいます。[ 35 ] [ 36 ]

背景

2012年、Mozillaは実験的なServoプロジェクトを開始しました。これは、並行性と並列性を向上させながら、メモリ安全性の脆弱性を低減することを目的として、ゼロから設計されたエンジンです。Servoは、Mozillaが開発したRustプログラミング言語で記述されており、コンパイルされたC++コードよりもメモリ安全性、並行性、並列性が向上したコンパイル済みコードを生成するように設計されています。[ 5 ]

2016年4月時点で、Servoがフル機能のブラウザエンジンになるには少なくとも数年の開発期間が必要でした。[ 37 ]そのため、Servoの安定した部分をFirefoxに組み込むためにQuantumプロジェクトが開始されました。Mozillaは2020年8月にServoの開発者全員を解雇しました。[ 38 ]

コンポーネント

Quantumプロジェクトはいくつかのサブプロジェクトで構成されています。[ 16 ]

  • CSSServoの並列スタイルシートシステムがGeckoに統合されました。ベンチマークによると、パフォーマンスはCPUコア数に比例して向上することが示されています。[ 39 ]これはFirefox 57でリリースされました。[ 36 ]
  • レンダリング:ServoのレンダリングアーキテクチャであるWebRenderは、Firefox Quantumの最初のリリースであるFirefox 67から2年後の2019年にGeckoに統合されました。WebRenderは、即時モードの描画モデルを、 CSS/DOMとシーングラフの類似性を利用してGPUによる高速化が容易な保持モードモデルに置き換えます。テストでは、最悪のシナリオでレンダリングが毎秒60フレームを超えました。[ 40 ] MozillaはFirefox 67で、特定のハードウェア/OSの組み合わせで新しいレンダラーの有効化を開始しました。[ 41 ]
  • コンポジター:Geckoの既存のコンポジターは独自のプロセスに移行され、ブラウザのタブをグラフィックドライバ関連のクラッシュから分離しました。コンポジターのクラッシュによってブラウザのコンテンツプロセスが停止することはないため、コンポジタープロセスはユーザーデータを失うことなく透過的に再起動できます。これはFirefox 53でリリースされました。[ 42 ]
  • DOM:ServoのConstellationアーキテクチャ[ 43 ]OperaPrestoエンジン[ 44 ]に大まかに着想を得たQuantum DOMは、 DOM内で協調的にスケジュールされたスレッドを使用することで、プロセス数とメモリ使用量を増やすことなく応答性を向上させます。このコアはFirefox 57で搭載されました。[ 45 ]
  • Flow:Geckoコンポーネント全体を扱うチームが推進する、ユーザー目に見えるパフォーマンス改善のための包括的な取り組み。G Suite(現在はGoogle Workspace)とFacebookを中心とした主要ウェブアプリにおけるユーザーパフォーマンスの改善に焦点を当てています。[ 46 ]この作業はFirefox 57で完了し、リリースされました。[ 47 ]
  • Photon:アプリケーション全体のUIを刷新し、UIパフォーマンスの向上に重点を置いています。Quantum Flowの姉妹プロジェクトとして扱われています。 [ 48 ] Firefox 57でリリースされました。[ 35 ]
  • ネットワーク:Geckoのネットワーク層であるNeckoのパフォーマンスを向上させるため、ネットワークアクティビティをメインスレッドから外し、ネットワークストリームの優先順位をコンテキスト依存で決定し、キャッシュ層とネットワークを競合させます。[ 49 ]この機能はFirefox 59でリリースされました。[ 50 ]

アズール

Mozilla Azureプロジェクトは、 Firefoxで使用されるステートレスな低レベルグラフィック抽象化APIです。[ 51 ] このプロジェクトには、次のようないくつかの目的があります。

  • より正確なDirect2D互換性
  • 最適化された状態の相互運用性
  • パフォーマンス特性とバグに対する制御の改善

Azureは3Dグラフィックバックエンド上に2Dハードウェアアクセラレーションを提供します。Firefoxは2012年にCairoの代わりにAzureの使用を開始しました。 [ 52 ] [ 53 ] AzureはC++で書かれており、 Servoで使用されています。[ 54 ] Azureという名前は、Netscapeの創業者であるJames H. Clarkと、彼がSilicon Graphicsで行った初期の仕事へのオマージュです。当時、ワークステーションはしばしば色にちなんで名付けられていました。[ 55 ]

参考文献

  1. ^ 「Mozilla Foundation エンドユーザーライセンス契約」。Mozilla
  2. ^ 「Mozillaライセンスポリシー」 . mozilla.org . 2013年3月26日閲覧
  3. ^ 「Mozillaの埋め込み」 Mozilla.org. 2012年10月25日. 2012年10月31日閲覧
  4. ^ a b「Android向けFirefoxのシンプルなビルド」 。 2019年9月29日時点のオリジナルよりアーカイブ2017年5月3日閲覧。GeckoはC++とJavaScriptを使用して実装されています。
  5. ^ a b Bergstrom, Lars; et al. (2016年5月). 「Rustを用いたServo Webブラウザエンジンの設計」(PDF) . Proceedings of the International Conference on Software Engineering . 2016年5月29日時点のオリジナルよりアーカイブ(PDF) 。
  6. ^ 「Google グループ」 . groups.google.com .
  7. ^ Yegulalp, Serdar (2017年2月3日). 「Mozilla、Firefoxの運命をRust言語に結びつけるInfoWorld .
  8. ^ 「MPL 2 アップグレード」 。 2012年8月18日閲覧
  9. ^ 「Gecko FAQ」 MDN Web Docs . 2019年10月8日時点のオリジナルよりアーカイブ。 2017年5月3日閲覧
  10. ^ "nglayout プロジェクト: アイデンティティ危機" . Mozilla.org. 2011年6月29日時点のオリジナルよりアーカイブ2012年10月31日閲覧。
  11. ^ a b Jorge O. Castro (2004年6月15日). 「Ars TechnicaがMozilla.orgのScott Collins氏にインタビュー」 . Ars Technica . 2017年2月16日閲覧。
  12. ^ mozilla. 「mozilla/gecko-devへの貢献者」 . GitHub . 2026年1月6日閲覧。
  13. ^ a b Paul Festa (2003年1月14日). 「Appleの冷遇がMozillaを苦しめる」 . CNET Networks . 2012年10月25日時点のオリジナルよりアーカイブ2017年2月16日閲覧。
  14. ^ a b David Baron (2003年1月9日). 「Thursday 2003-01-09」 . David Baronのブログ. 自費出版. 2009年7月28日時点のオリジナルよりアーカイブ。 2017年2月16日閲覧
  15. ^ Ryan Paul (2008年9月9日). 「WebKitの人気が高まる中、MozillaがGeckoに注力する理由」 . 2017年2月16日閲覧
  16. ^ a b c d「Quantum」。Mozilla Wiki 2017年4月20日閲覧。
  17. ^ a b Cimpanu, Catalin. 「Mozilla、Firefox向け新ブラウザエンジンQuantumを発表」 softpedia . 2016年11月7日閲覧
  18. ^ “Firefox Focus 7.0がベータ版に突入、GeckoView(Geckoエンジン)に切り替え” . 2018年9月14日. 2020年7月31日時点のオリジナルよりアーカイブ2019年9月19日閲覧。
  19. ^ a b「Firefox Focus with GeckoView」 . Mozilla Hacks . 2018年9月13日. 2019年9月4日閲覧
  20. ^ 「Android版Firefox Focus(バージョン7)の新機能 | Firefox Focusヘルプ」 support.mozilla.org . 2019年9月4日閲覧
  21. ^ 「2019年のGeckoView」。Mozilla Hacks。2019年6月27日。 2019年9月4日閲覧
  22. ^ Vesta Zare (2020年8月25日). 「すべてのプラットフォームで高速、パーソナライズ、プライバシー設計:Android版Firefoxの新しいエクスペリエンスのご紹介」 . Mozilla Blog . 2020年9月22日閲覧
  23. ^ 「Firefox 102におけるECMAScript 2015(ES6)のブラウザ間互換性」www.lambdatest.com . 2022年8月21日時点のオリジナルよりアーカイブ。 2022年8月21日閲覧
  24. ^ 「Firefox 102におけるSVG(基本サポート)のブラウザ間互換性」www.lambdatest.com . 2022年12月9日時点のオリジナルよりアーカイブ。 2022年8月21日閲覧
  25. ^ 「Mozilla、検出不可能なdocument.allのサポートを追加、Novellの新しいLinuxディストリビューションの一部?」 Developer.mozilla.org。2004年7月23日。 2018年2月7日閲覧
  26. ^ 「IEはWineでGeckoを使用する」。Wine Wiki 2009年9月14日閲覧。
  27. ^ sdubois (2010年6月24日). 「Gecko」 .フリーソフトウェア財団. 2019年5月23日閲覧
  28. ^ 「Midori Browser 軽量ウェブブラウザ」 Astian , Inc. 2025年2月4日閲覧
  29. ^ Hill, Paul (2020年3月12日). 「KaiOS Technologies、Mozillaと提携してGeckoを改良」 . Neowin . 2024年7月12日閲覧
  30. ^ 「Picasa 3.0 for Linux」2009年1月7日時点のオリジナルよりアーカイブ2008年12月28日閲覧。
  31. ^ Martens, China (2007-01-03). 「One Laptop Per Child が『Sugar』インターフェースを準備」 IDG News Service. 2008年1月18日時点のオリジナルよりアーカイブ。 2007年12月28日閲覧
  32. ^ 「Windows 用 Firefox の構築」MDN Web Docs
  33. ^ 「Geckoのバージョンとアプリケーションのバージョン」MDN2020年10月31日時点のオリジナルよりアーカイブ2013年11月18日閲覧。
  34. ^ 「新しいThunderbird 5には大した機能はないが、ロードマップは有望」 Ars Technica、2011年6月30日。 2018年2月7日閲覧
  35. ^ a b「Firefox 57.0、新機能、アップデート、修正点をすべて見る」 Mozilla 2018年10月30日閲覧
  36. ^ a b「新しいFirefoxの紹介:Firefox Quantum – The Mozilla Blog」。The Mozilla Blog 。 2018年10月30日閲覧
  37. ^ 「Servoの残りの作業」 . GitHub . 2017年2月17日閲覧。
  38. ^ 「Mozilla、商用製品に再び注力するため従業員250人を解雇」 ZDNet 2022年6月14日閲覧
  39. ^ 「The Changelog」 . The Changelog . 2016年11月18日. 2017年3月28日閲覧
  40. ^ 「Bay Area Rust Meetup February 2016」 . Air Mozilla . 2017年3月28日閲覧。
  41. ^ 「Webrender Where」 . Mozilla Wiki . 2020年7月14日閲覧。
  42. ^ 「Project Quantumの最初のビッグバイトによりFirefoxがより高速かつ安定、コンパクトなテーマと権限の再設計によりさらにシンプルに」 Mozillaブログ。 2017年4月27日閲覧
  43. ^ 「Servo Architecture」YouTube 2017年1月18日. 2021年12月11日時点のオリジナルよりアーカイブ。 2017年3月28日閲覧
  44. ^ 「MozillaのQuantumプロジェクト」 Bill McCloskeyのブログ。2016年10月27日。 2017年3月28日閲覧
  45. ^ 「量子時代への突入」 Mozilla Hacks 2017年11月13日2020年7月14日閲覧
  46. ^ 「Quantum Flow」 . Mozilla Wiki . 2017年3月28日閲覧
  47. ^ 「Quantum Flow Engineering Newsletter #25」 . ehsanakhgari.org . 2017年9月17日. 2020年7月14日閲覧
  48. ^ dolske (2017-05-18). 「Photon Engineering Newsletter #1」 . Dolskeのブログ. 2017年7月4日閲覧
  49. ^ "TPE Necko/プロジェクト - MozillaWiki" . wiki.mozilla.org . 2017年7月4日閲覧
  50. ^ 「Firefox 59 リリースノート」 . www.mozilla.org . 2019年1月16日閲覧。
  51. ^ 「プラットフォーム/GFX/Moz2D - MozillaWiki」
  52. ^ Parfeni, Lucian (2012年9月7日). 「Firefox がすべてのプラットフォームで Canvas に Azure Graphics API を採用」 .
  53. ^ 「Azure が Mozilla Firefox の Cairo に取って代わる - Phoronix」
  54. ^ Willis, Nathan (2015年6月17日). 「Mozilla Servoによる並列ページレンダリング」 . LWN.net . 2015年6月27日閲覧
  55. ^ 「Azure プロジェクトの紹介 - JOEDREW!」 2016年9月8日時点のオリジナルよりアーカイブ。 2019年9月22日閲覧