Gecko

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

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

 歴史 
当初、Mozillaは1998年に公開されたNetscape 5.0へ向けて開発中だったソースコードを元に開発されていたがCommunicator 5.0はどうしたのですか? 、軽量化のために当時買収した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のものへと置き換えられ始めた。

 Geckoを使用するソフトウェア 
 ウェブブラウザ 
 Bagel
 Camino - 旧Chimera。Mac OS X専用のGeckoブラウザ。
 Epiphany (GNOME、2.28.0よりWebKitに移行)
 Galeon (GNOME)
 Lunascape (2以降。IEコンポーネント、WebKitの利用も可能)
 Mozilla Firefox 拡張機能のIE TabでIEコンポーネントの利用も可能。およびそのソースコードを使用したブラウザ (Flock, K-Meleon, Pale Moon,Tor Browser, Floorp など)
 Waterfox
 SeaMonkey  - Mozilla Application Suite の後継ソフトウェア。
 Syleraバージョン2.1.0からIEコンポーネントも使用可能。
 風博士
 Sleipnir 2 (プラグインによる拡張。2010年8月現在、当該プラグインは開発停止している)

 その他のソフトウェア 
ウェブブラウザ以外でも、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) では型推論が導入され、リリース製品に組み込まれた。

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

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

この例では、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日であることただし Firefox 4.0 Beta 5以降のリリース版ではビルドした日付ではなく、Gecko/20100101固定となった。詳しくは Bug 591537 - Freeze UA build id for Firefox branded builds 参照。、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を実行したりインストールしたりするためのものではない。http://www.mozilla-japan.org/start/1.5/faq/browser.html#active-x

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

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

 Geckoを利用するソフトウェア 
FirefoxNetscape Mozilla SeaMonkeyThunderbirdFlock Songbird / NightingaleBeonex Lunascape K-MeleonPale Moon バージョン26以降ではレンダリングエンジンとしてGeckoの代わりにGoannaを採用Camino Galeon Epiphany  MicroBGecko 0.66.0 0.6 0.6Gecko 0.8 0.8 0.3Gecko 0.9.2 6.1 0.9.2Gecko 0.9.4 6.2 0.9.4 0.5Gecko 0.9.4.1 6.2.2 0.9.4.1 0.7Gecko 0.9.5 0.9.5 0.6Gecko 0.9.7 0.9.7 1.0.2Gecko 1.0.1 7.0 1.0.1 0.8.1Gecko 1.0.2  1.0.2 0.8.2Gecko 1.1 1.1 0.9preGecko 1.2b 0.1 - 0.3 1.2b 0.7Gecko 1.3a 0.4 - 0.5 1.3aGecko 1.4 7.1 1.4Gecko 1.4.1 1.4.1 1.0.4Gecko 1.5 0.6 - 0.7.1 1.5 0.1 - 0.3 0.8Gecko 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.8Gecko 1.7.2 7.2 1.7.2Gecko 1.7.5 8.0.2 1.7.5 0.9Gecko 1.8.0 1.5 1.0 1.1 - 1.5 0.7 0.2 1.0 1.0Gecko 1.8.1 2.0 9.0 1.1 2.0 1.0 4.8 1.1, 1.5 1.5 - 1.6 2.16Gecko 1.9.0 3.0 3.0a1 - a2 2.0 - 2.6 0.5 - 1.4 2.2 2.0 2.22Gecko 1.9.1 3.5 2.0 3.0a3 - 3.0 5.0 1.6 3.5Gecko 1.9.2 3.6 3.1 1.9.3 6.3 1.7 3.6 2.1 1.7.4.8 
FirefoxSeaMonkeyThunderbirdLunascape K-MeleonPale Moon バージョン26以降ではレンダリングエンジンとしてGeckoの代わりにGoannaを採用Gecko 2.0 4.0 2.1 (3.3a) 4.0Gecko 5.0 5.0 2.2 5.0 5.0Gecko 6.0 6.0 2.3 6.0 6.0Gecko 7.0 7.0 2.4 7.0 7.0Gecko 8.0 8.0 2.5 8.0 8.0Gecko 9.0 9.0 2.6 9.0 9.0.1Gecko 10.0 10.0,  2.7 10.0,  9.1, 9.2Gecko 11.0 11.0 2.8 11.0 11.0Gecko 12.0 12.0 2.9 12.0 12.0 - 12.3Gecko 13.0 13.0 2.10 13.0 Gecko 14.0 14.0 2.11 14.0Gecko 15.0 15.0 2.12 15.0 15.0 - 15.4.1Gecko 16.0 16.0 2.13 16.0Gecko 17.0 17.0,  2.14 17.0.xGecko 18.0 18.0 2.15 (18.0b)Gecko 19.0 19.0 2.16 (19.0b) 19.0Gecko 20.0 20.0 2.17 (20.0b) 20.0.1 - 20.3Gecko 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,  2.21 24.x 74 24.x - 25.xGecko 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,  (2.28) 31.x 75.xGecko 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,  2.35 38.xGecko 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,  2.42 45.x 6.15Gecko 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)

 脚注 

 関連項目 

 Mozilla Foundation - 開発元団体
 Mozilla Japan - 日本国内でMozilla製品のサポートを行う団体。
 HTMLレンダリングエンジン
 XULRunner
 Necko
 Servo - Geckoと同様にMozilla Foundationが開発する、実験的なウェブブラウザ用レンダリングエンジン

 外部リンク 
 Gecko - Mozilla Developer Center
 Gecko:Home Page - MozillaWiki
 Mozilla ActiveX Project

Category:ウェブブラウザ
Category:オープンソースソフトウェア
Category:Mozilla
Category:Netscape
Category:C++でプログラムされた自由ソフトウェア
Category:Rustでプログラムされた自由ソフトウェア