Gecko

Mozillaソフトウェア等のために開発されたオープンソースHTMLレンダリングエンジン群の総称

Gecko(ゲッコー)は、Netscapeシリーズ 6以降およびMozillaソフトウェアのために開発されたオープンソースHTMLレンダリングエンジン群の総称である。HTMLCSSXULJavaScriptなどを解釈する。

Gecko
開発元 Mozilla Foundation / Mozilla Corporation
最新版
通常版
125.0.1[1] ウィキデータを編集 / 2024年4月16日 (4日前)
ESR
115.10.0esr[2] ウィキデータを編集 / 2024年4月16日 (4日前)
最新評価版
Beta & Developer Edition
126.0b2[3] ウィキデータを編集 / 2024年4月17日 (3日前)
Nightly
127.0a1[4] ウィキデータを編集 / 2024年4月15日 (5日前)
リポジトリ ウィキデータを編集
プログラミング
言語
C++JavaScriptRust
対応OS クロスプラットフォーム
種別 レイアウトエンジン
ライセンス Mozilla Public License 2.0
公式サイト developer.mozilla.org/ja/docs/Glossary/Gecko
テンプレートを表示
Geckoを搭載するウェブブラウザ(Mozilla Firefox 2.0)

なお、Geckoは英語ヤモリの意味を持つ。

歴史 編集

当初、Mozillaは1998年に公開されたNetscape 5.0へ向けて開発中だったソースコードを元に開発されていたが[5]、軽量化のために当時買収したDigital Style社のエンジンをベースにして新規に書かれた。これがGeckoである。パース部分はW3Cによる勧告に合致することを目標に作成されている。 1.8系列以前ではWeb Standards ProjectがCSS 2.1のテストとして用意したAcid2に合格していなかったが、1.9系列からは合格している。

バージョン履歴 編集

0.6
Netscape 6に搭載される。
1.8
CSSなどのエラー検出機能を実装。canvas要素のサポート。
1.8.1
Firefox / Thunderbird 2.0、SeaMonkey 1.1、Netscape Navigator 9、Camino 1.5および1.6に搭載。
1.9
Firefox 3.0、Camino 2.0に搭載。Sunbird 0.3にアルファ版を搭載。
Acid2に合格。WSDLおよびSOAPのネイティブサポートを削除。
1.9.1
Firefox 3.5、Thunderbird 3.0、SeaMonkey 2.0に搭載。
CSS 3の一部プロパティやHTML 5の一部要素をサポート。
5.0
高速リリースサイクルを採用し、6週間ごとにバージョンアップされるようになった。バージョンの数字はFirefox、Thunderbirdと統一されている。
57
FirefoxのGeckoのコンポーネントがServoのものへと置き換えられ始めた[6]

Geckoを使用するソフトウェア 編集

ウェブブラウザ 編集

その他のソフトウェア 編集

ウェブブラウザ以外でも、HTMLやCSSなどを表示に用いるソフトウェアでGeckoが採用されている。

  • Mozilla Thunderbird(メールクライアント、旧Minotaur)
  • Correo(メールクライアント)
  • Mozilla Sunbird(カレンダー)
  • Nvu(Web オーサリングツール)
  • KompoZer(Web オーサリングツール)
  • Songbird(メディアプレーヤー)
  • Wine (オープンソースのWindows API実装、Internet Explorerの実装に利用)

技術 編集

XUL 編集

XULはアプリケーションのGUIをXMLで記述した形式である。イベントハンドラを用いてJavaScriptを呼び出すことで、HTMLとJavaScriptを組み合わせたWebアプリケーションと同じ感覚でネイティブのGUIに近いアプリケーションを製作することができる。XULはアプリケーションとしてローカルから読み出されるほか、Web上のファイルであっても表示できる。(ただしファイルの読み書きなどの特権は利用できない。)

構成 編集

HTML・CSSのレンダリングや通信部分、ファイルの読み書きなどのAPIはC++で記述されており、それぞれコンポーネント化されている。これらのAPIは他のC++コードから(必要なものだけを)呼び出せるほか、XULアプリケーションなどからJavaScriptなどスクリプト言語を通じて呼び出すことができる(XPCOM)。FirefoxなどではXULアプリケーションから実際に呼び出しているほか、XPCOM 対応でビルドされた JavaScript シェルから利用することもできる。

描画 編集

XUL, CSSでスタイルづけされたHTML, MathML, SVGを表示することができる。 HTMLの描画は(複雑な)ペインターアルゴリズムが採用されている。HTMLがCSSの「ボックス」群に変換しレイアウトを決定すると、描画順序を決めたリストを構成し、リストができると実際に描画される。 描画バックエンドにはcairoが使われている。半透明、曲線描画などにその技術が使われている。

スクリプトエンジン 編集

スクリプト処理部分はSpiderMonkeyと呼ばれる。ECMAScript 3 に準拠する。Firefoxに組み込まれた状態では、特権管理により、WebページのJavaScriptを実行できるだけでなく、ブラウザ本体や拡張機能をJavaScriptで記述することができる。アプリケーション側からもWebページのJavaScriptオブジェクトに(間接的に)アクセス可能である。2007年ごろからWebアプリケーションの普及によりJavaScriptの性能が話題になり始めたが、Gecko 1.9.1 (2008)以降、JIT方式のJavaScriptコンパイラ/インタプリタが搭載され、性能が向上した(TraceMonkey)。Gecko 2.0 (aka 1.93a) / Firefox 4 (2010) では低速だがコンパイルの早いJITコンパイラ(JägerMonkey)とTraceMonkeyを組み合わせて使う方式になった。Gecko 9 / Firefox 9 (2011) では型推論が導入され、リリース製品に組み込まれた。

ユーザーエージェント情報 編集

このエンジンを使用したユーザーエージェントの多くはユーザーエージェント名で使用環境などを確認できる。

Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1

この例では、Windowsは対象のプラットフォームMicrosoft Windowsであること、Uは強いセキュリティレベルであること、Windows NT 5.1は使用しているシステムWindows NT 5.1であること、jaは利用している言語の設定が日本語であること、rv:1.8.1.1はGeckoのリビジョンが1.8.1.1であること、Gecko/20061204はビルドされた日付が2006年12月4日であること[9]Firefox/2.0.0.1は以上のようなGeckoを搭載したFirefox 2.0.0.1であることを表している。

Mozilla ActiveX Control 編集

Microsoft Windows上で動作する プラグイン。Mozilla ActiveX Projectにより開発されている。ActiveX をGeckoのブラウザ上から管理したり、Geckoのレンダリングエンジン部分をコンポーネントとしてWindowsアプリケーションに組み込む目的で開発された。

ActiveXの管理機能は安全性の確認されたインストール済みのActiveXをブラウザから管理するためのもので、ブラウザからActiveXを実行したりインストールしたりするためのものではない。[10]

ブラウザエンジンとしては、XUL上のアプリケーションではなく、Windowsネイティブのアプリケーションとして組み込むことによってより軽量に使用することを可能にした。mozctl.dll をソフトウェアに接続することでコンポーネントとしての Gecko エンジンが利用できる。Webブラウザに使われる場合が多いが、Webページの表示確認など、補助的な機能として用いられた例もある。

Mozilla ActiveX ControlのHTMLレンダリングエンジンとしての機能はXULネイティブなプログラムと同一であり、設定項目なども共通である。ただし、標準ダイアログボックスなどの表示はXULネイティブのものと異なる。

Geckoを利用するソフトウェア 編集

Firefox Netscape [u 1] Mozilla [u 1] SeaMonkey Thunderbird Flock [u 1] Songbird / Nightingale Beonex [u 1] Lunascape [u 2][u 3] K-Meleon Pale Moon [u 4] Camino [u 1] Galeon [u 1] Epiphany [u 5][u 2] 風博士 [u 2] MicroB
Gecko 0.6 6.0 0.6 0.6[11]
Gecko 0.8 0.8 0.3
Gecko 0.9.2 6.1 0.9.2
Gecko 0.9.4 6.2 0.9.4 0.5
Gecko 0.9.4.1 6.2.2 0.9.4.1 0.7[11]
Gecko 0.9.5 0.9.5 0.6
Gecko 0.9.7 0.9.7 1.0.2
Gecko 1.0.1 7.0 1.0.1 0.8.1[12]
Gecko 1.0.2 1.0.2 0.8.2[13]
Gecko 1.1 1.1 0.9pre[11]
Gecko 1.2b 0.1 - 0.3 1.2b 0.7
Gecko 1.3a 0.4 - 0.5 1.3a
Gecko 1.4 7.1 1.4
Gecko 1.4.1 1.4.1 1.0.4
Gecko 1.5 0.6 - 0.7.1 1.5 0.1 - 0.3 0.8
Gecko 1.6 0.8 1.6 0.4 - 0.5
Gecko 1.7 0.9 - 1.0 1.7 0.6 - 1.0 2.0 0.2.8
Gecko 1.7.2 7.2 1.7.2
Gecko 1.7.5 8.0.2[u 3] 1.7.5 0.9
Gecko 1.8.0 1.5 1.0 1.1 - 1.5 0.7 0.2 1.0 1.0
Gecko 1.8.1 2.0 9.0 1.1 2.0 1.0 4.8 1.1, 1.5 1.5 - 1.6 2.16
Gecko 1.9.0 3.0 3.0a1 - a2 2.0 - 2.6 0.5 - 1.4 2.2 2.0 2.22
Gecko 1.9.1 3.5 2.0 3.0a3 - 3.0 5.0 1.6 3.5
Gecko 1.9.2 3.6 3.1 1.9.3 6.3 1.7 3.6[u 6] 2.1 1.7.4.8 [u 7]
Firefox SeaMonkey Thunderbird Lunascape [u 2][u 3] K-Meleon Pale Moon [u 4]
Gecko 2.0[u 8] 4.0 2.1 (3.3a) 4.0
Gecko 5.0[u 9] 5.0 2.2 5.0 5.0
Gecko 6.0 6.0 2.3 6.0 6.0
Gecko 7.0 7.0 2.4 7.0 7.0
Gecko 8.0 8.0 2.5 8.0 8.0
Gecko 9.0 9.0 2.6 9.0 9.0.1
Gecko 10.0 10.0, 10.0 ESR 2.7 10.0, 10.0 ESR 9.1, 9.2
Gecko 11.0 11.0 2.8 11.0 11.0
Gecko 12.0 12.0 2.9 12.0 12.0 - 12.3
Gecko 13.0 13.0 2.10 13.0
Gecko 14.0 14.0 2.11 14.0
Gecko 15.0 15.0 2.12 15.0 15.0 - 15.4.1
Gecko 16.0 16.0 2.13 16.0
Gecko 17.0 17.0, 17.0 ESR 2.14 17.0.x
Gecko 18.0 18.0 2.15 (18.0b)
Gecko 19.0 19.0 2.16 (19.0b) 19.0
Gecko 20.0 20.0 2.17 (20.0b) 20.0.1 - 20.3
Gecko 21.0 21.0 (2.18) (21.0b)
Gecko 22.0 22.0 2.19 (22.0b)
Gecko 23.0 23.0 2.20 (23.0b)
Gecko 24.0 24.0, 24 ESR 2.21 24.x 74 24.x - 25.x
Gecko 25.0 25.0 2.22 (25.0b)
Gecko 26.0 26.0 2.23 (26.0b)
Gecko 27.0 27.0 2.24 (27.0b)
Gecko 28.0 28.0 2.25 (28.0b)
Gecko 29.0 29.0 2.26 (29.0b)
Gecko 30.0 30.0 (2.27) (30.0b)
Gecko 31.0 31.0, 31 ESR (2.28) 31.x 75.x
Gecko 32.0 32.0 2.29 (32.0b)
Gecko 33.0 33.0 2.30 (33.0b)
Gecko 34.0 34.0 2.31 (34.0b)
Gecko 35.0 35.0 2.32 (35.0b)
Gecko 36.0 36.0 2.33 (36.0b)
Gecko 37.0 37.0 2.34 (37.0b)
Gecko 38.0 38.0, 38 ESR 2.35 38.x
Gecko 39.0 39.0 (2.36) (39.0b)
Gecko 40.0 40.0 (2.37) (40.0b)
Gecko 41.0 41.0 2.38 (41.0b)
Gecko 42.0 42.0 2.39 (42.0b)
Gecko 43.0 43.0 2.40 (43.0b)
Gecko 44.0 44.0 (2.41) (44.0b)
Gecko 45.0 45.0, 45 ESR 2.42 45.x 6.15
Gecko 46.0 46.0 (2.43) (46.0b)
Gecko 47.0 47.0 (2.44) (47.0b)
Gecko 48.0 48.0 (2.45) (48.0b)
Gecko 49.0 49.0 2.46 (49.0b)

脚注 編集

  1. ^ "Firefox 125.0.1, See All New Features, Updates and Fixes"; 閲覧日: 2024年4月16日; 作品または名前の言語: 英語; 出版日: 2024年4月16日.
  2. ^ "Firefox ESR 115.10.0, See All New Features, Updates and Fixes"; 閲覧日: 2024年4月16日; 作品または名前の言語: 英語; 出版日: 2024年4月16日.
  3. ^ "Index of /pub/firefox/releases/126.0b2/"; 閲覧日: 2024年4月18日; 作品または名前の言語: 英語; 出版日: 2024年4月17日.
  4. ^ "Firefox Nightly 127.0a1, See All New Features, Updates and Fixes"; 閲覧日: 2024年4月16日; 作品または名前の言語: 英語; 出版日: 2024年4月15日.
  5. ^ Communicator 5.0はどうしたのですか?
  6. ^ Keizer, Gregg (2017年9月29日). “Firefoxの新バージョン「Quantum」、エンジン刷新で約2倍に高速化”. Computerworld. 2017年9月30日閲覧。
  7. ^ a b 拡張機能IE TabでIEコンポーネントの利用も可能。
  8. ^ バージョン2.1.0からIEコンポーネントも使用可能。
  9. ^ ただし Firefox 4.0 Beta 5以降のリリース版ではビルドした日付ではなく、Gecko/20100101固定となった。詳しくは Bug 591537 - Freeze UA build id for Firefox branded builds 参照。
  10. ^ http://www.mozilla-japan.org/start/1.5/faq/browser.html#active-x
  11. ^ a b c Bucksch, Ben (2003年3月12日). “News”. 2011年1月29日閲覧。
  12. ^ Bucksch, Ben. “0.8.1”. 2011年1月29日閲覧。
  13. ^ Bucksch, Ben. “Release-notes”. 2011年1月29日閲覧。
  1. ^ a b c d e f 開発停止
  2. ^ a b c d WebKit も採用
  3. ^ a b c Tridentも採用
  4. ^ a b バージョン26以降ではレンダリングエンジンとしてGeckoの代わりにGoannaを採用
  5. ^ Geckoの採用を停止
  6. ^ Development of this branch/version actively continued.
  7. ^ Fremantle 1.3上でGecko 1.9.2.3preを使用
  8. ^ 2010年6月28日まで Gecko 1.9.3a と Firefox 3.7であった。
  9. ^ Firefox 5以降では、Geckoのバージョン番号はFirefoxのバージョン番号と一致する

関連項目 編集

外部リンク 編集