Gecko FAQ
出典: MDC
[編集] Gecko とは何ですか?
Gecko とは、オープンソースのブラウザエンジンで、HTML 4、CSS 1/2、W3C DOM、XML、JavaScript といったオープンなインターネット標準をサポートするように設計されています。
Gecko は、Mozilla Firefox、SeaMonkey、Camino など、様々なブラウザで利用されており、mozilla.org で継続して開発されています。Gecko はかつては Raptor や NGLayout というコードネームで知られてきました。しかし、商標の問題から新しい名前へと変更されました。
より詳しくは Wikipedia の Gecko に関する記事 をご覧ください。
[編集] レイアウトエンジンとは何ですか?
基本的には レイアウトエンジン は、内容 (HTML、XML、画像ファイル、アプレットなど) や整形のための情報 (CSS、ハードコードされた HTML タグなど) を取り込み、中身を整形してスクリーンに表示します。レイアウトエンジンは、ブラウザウィンドウの chrome の内部にある空白領域を描画します。
形式的には、レイアウトエンジンはドキュメントの配置手段を定義し、ページに内容を配置します。Gecko のコアはとても速いレイアウトエンジンです。Gecko はまた、様々なドキュメント形式 (HTML、XML、SVG など) を解析する能力、合成や変換を含む進歩したレンダリング能力、そして埋め込まれた JavaScript と プラグイン のサポートを提供します。
Gecko はとても速く、強力であるため、ブラウザのインターフェース (chrome) を作るためにも使われています。言い換えると、Gecko はドキュメントの内容を表示するだけでなく、スクロールバー、ツールバー、そしてメニューも同様に描画します。詳しくは XUL をご覧ください。
[編集] Gecko のようなレイアウトエンジンは Web ブラウザとはどのように違うのですか?
Gecko は、スクリーン上にコンテントを表示するために必要な土台を提供します。このような土台には、レイアウトエンジンやブラウザコンポーネントの補足物が含まれます。しかし、Gecko は、Firefox のような首尾一貫した、ユーザーフレンドリーなアプリケーション (メニュー、ツールバーなどを含む) の様に、こうした全てのコンポーネントがパッケージ化されているわけではありません。
mozilla.org は、Firefox、Thunderbird、SeaMonkey、Camino など、独自開発のアプリケーションに必要な構成要素を組み上げます。そしてその成果は mozilla.org から自由にダウンロードできます。Netscape は Netscape Navigator として名付けられた独自のバージョンをリリースしていました。他の会社は、Gecko を組み込んだ独自のソフトウェアやハードウェア製品をリリースしています。XULRunner を通じて Gecko を使っているアプリケーションの一部を XULRunner Hall of Fame でご覧いただけます。
ISV やハードウェアベンダーのようなサードパーティは、彼らのアプリケーション、またはハードウェアデバイスにおいて使いたいコンポーネントを選択します。あるブラウザの構成要素、例えばブックマーク、履歴、アドレス帳のようなものは、Gecko の一部としては提供されません。しかし、これら全ての構成要素のためのソースは mozilla.org から自由にダウンロードできます。
[編集] なぜ新しいレイアウトエンジンを作成しているのですか?
もとの Mozilla ブラウザ、それは Navigator 1.0 として最初にリリースされましたが、それは次のキラーアプリケーションを作るという情熱を持った小さなチームによってまたたく間に開発されました。そして彼らは非常に成功しました。現在 Web は進化していて、Netscape は将来の製品を作るための次世代レイアウトエンジンを再設計、再開発するためのすばらしいチームを集めています。Gecko は、ダイナミックな新しい時代のコンテントを可能にしてくれます。そのコンテントは、より高度なインタラクティブ性を備え、Web 開発者は以前に比べてプレゼンテーション制御を簡単に行えるようになります。そして、独占の API でなくてオープンで勧告されたインターネット標準を使います。是非、チームに参加 してください。
[編集] mozilla.org はどのように Gecko を使っているのですか?
mozilla.org は Gecko レイアウトエンジンと他のブラウザコンポーネントから Mozilla ブラウザアプリケーションを組み立てています。
[編集] Netscape ではどのように Gecko を利用しようと計画してるのですか?
Gecko は Netscape 6 ブラウザスイートの中心部分に置かれ、Navigator や Messenger といったあらゆるコンポーネントを動かします。Gecko テクノロジーはまた、Netscape.com ポータルサイトを表示し、素早く魅力的なコンテンツやサービスをもお届けします。Gecko の構造は、より短時間で市場に出され、さらなる革新、より低コストでの開発、より簡単な配布やアップデート、そしてより良いクロスプラットフォームサポートを可能にすることで、将来にわたって Netscape を支えることでしょう。
[編集] 他の企業や団体は Gecko をどのように使用できるのですか?
Gecko は小さく、軽く、そしてオープンソースであるため、他の会社や団体も簡単に再利用できます。多くのハードウェアベンダーはネットワークへのアクセス機能を持つ装置を作っていて、ウェブブラウジングの機能を含めたいと考えています。同様に、多くのソフトウェア開発者はアプリケーションにウェブブラウシングの機能を取り入れたいと考えていますが、独自にブラウザを開発したいとまでは考えていません。こうした開発者は、Gecko が提供する中から、欲しいブラウザコンポーネントを選択することができ、そうしたコンポーネントを独自の製品と共にパッケージ化することができるのです。
[編集] Gecko はどのオープン標準をサポートし、そしてどの程度までそれらをサポートできるのですか?
2000 年の終わりまでに、Gecko は次に挙げるオープンインターネット標準の勧告を完全にサポートすることが見込まれています。ただし、以下に注としてあげる分野や現在 Bugzilla でオープンバグとして報告されているバグを除きます。
- HTML 4.0 - 完全サポート。ただし以下は除きます。
- 要素 - BDO, BASEFONT
- 属性 - A 要素の shape 属性、abbr、axis、headers、scope-row、scope-col、scope-rowgroup、scope-colgroup、charoff、datasrc、datafld、dataformat、datapagesize、summary、event、dir、表コラムの align、OPTION の label 属性、AREA 要素の代替テキスト、longdesc
- 様々なメタデータ属性 - cite, datetime, lang, hreflang
- 双方向テキストレイアウト。これはヘブライ語とアラビア語のみで使用されます (IBM が将来のリリースで双方向テキストをサポートできるように作業を開始しました)
- スタイルシート
- CSS 1 - 完全サポート。ただし以下は除きます。
- HTML column 要素へのスタイルの適用
- author style を無効にする能力
- 特定の Mozilla 拡張擬似クラスの名前は moz- prefix を持っていません
- CSS 2 - 部分的サポートが予定されており、CSS2 positioning へのサポートを含めてすでに Gecko にビルドされています。ただし特定のレベルのサポートを達成するためのコミットメントはまったく行われていません。
- CSS 1 - 完全サポート。ただし以下は除きます。
- DOM
- Level 0
- Level 1 Core - 完全サポート
- EntityReferences が DOM1 を通じて利用できるようにしています。XML 実装のための DOM1 仕様の規定によると、エンティティは自動的にインラインに展開されるため DOM1 を通じての利用は不可能です:私たちの実装はこの規定を外挿して EntityReferences にも適用します。
- より詳しい情報は、Mozilla での DOM を参照してください。
- Level 1 HTML
- DOM 2 - DOM2 event、DOM 2 Style、DOM2 Core を含めて、DOM 2 のほとんどはすでに Gecko に実装されています。DOM 3 のサポートも将来のリリースで予定されています。
- XML 1.0 - 完全サポート。ただし、デフォルトの属性値を操作するための処理を除く。
- RDF - 完全サポート。ただし、aboutEach、aboutEachPrefix、および parseType を除く。
- JavaScript 1.5 - ECMA-262 Edition 3 (ECMAscript) 適合を含む。ただし、Date.toDateString および Date.toTimeString は実装されていません。
- 転送プロトコル - HTTP 1.1 (gzip 圧縮を含む)、FTP
- SSL
- Unicode
- OJI (Open Java Interface)
- 画像フォーマット
- PNG
- GIF
- JPEG, PJPEG
[編集] 「完全サポート」とは、Gecko にはまったくバグがないということですか?それとも将来バグをまったくないようにするということですか?
決してバグがないということではありません。Robert O'Callahan が bug 25707 で述べているように、「完全に HTML4/CSS1 に適合しているからといって、‘100% バグがない’わけではない。もしバグを完全になくそうとしたら、誰も完全に適合したブラウザなど生み出せないだろう。」
Web ページは恣意的なまでに長く複雑で、深くネストされたマークアップになる可能性もあるため、あるブラウザでは仕様が勧告しているようには表示できない Web ページを構築することは可能なのです。QA テストやテストケース開発が続けられる限り、どの時点を取ってみてもオープンソース Gecko コードベースには既知の問題が存在し、それはこれまでにも世に送り出されてきた商業製品にも当てはまりますし、これから送り出される Gecko ベースの製品にもリリースの時点での既知の問題は付きまとうでしょう。(同じ考え方は、もちろん、他のどのブラウザエンジン開発プロジェクトや、それを基礎にした製品にも当てはまります)
オープンソース Gecko コードベースでの既知のバグは、Bugzilla に報告されています。ここに、上で述べた標準に関連するバグの一覧へのリンクを載せておきます。現在進行中のバグのリストには、重複していたり、時代遅れだったり、再現性のないもの、妥当でないもの、そして正しく報告されていないものがどうしても含まれてしまうことに注意してください。
- Layout コンポーネントは、様々な仕様が関連しうるコンテントレイアウトに関するバグを追跡します。
- HTML 4.0
- 要素、フォームコントロール、フレーム、表、そしてフォーム送信
- html4 キーワード と共にマークされたバグ
- HTML 4.01 適合 に関して特に重要な問題を追跡するための「メタバグ」
- CSS: Style System コンポーネント (css1、css2、css3 キーワードと共にマークされたバグ報告も参照してください)
- DOM: DOM0、DOM1、DOM2、イベント処理 コンポーネントを参照してください。
- XML
- RDF
- コア JavaScript 言語インタープリタ (JavaScript エンジン)
- HTTP 1.1 適合バグは一般的に Networking, Networking - General, and Networking: Cache コンポーネントにあります。
- OJI
- Imagelib 画像ライブラリ (併せて JPEG 画像処理 および PNG 画像処理 も参照してください)
- SSL 関連のバグは Crypto コンポーネントに報告されています。
Gecko ベースの特定の商業製品にある既知のバグについての情報は、その製品のリリースノートを参照してください。
[編集] Gecko では XML ドキュメントをどのように整形するのですか?
Gecko は、XML 文書をフォーマットするために CSS と XSLT の使用をサポートします。
XML 文書が CSS と XSLT いずれとも関連付けられていない場合、Gecko は独自のスタイルを適用してその文書を表示します。
[編集] Gecko はコンテント開発者にとってどう役に立つのでしょう?
コンテンツ開発者は、異なる、互換性のない、専用の DOM を様々なベンダーのブラウザでサポートするために全ての Web ページを何度も開発、テストすることに疲れ、うんざりしています。彼らは、以下のことを可能にするために、全てのベンダーが上記の W3C DOM と他の標準をきちんとサポートすることを要求していました。
- 豊富で強力な整形のシステムと配置のためのオブジェクトモデルを持つこと
- 「一度書けばどこでも見られる」
これらの標準をを協力にサポートすることで、Gecko は、世界中の Web コンテントや Web アプリケーション開発者のためのプラットフォームとなることができるのです。
[編集] Gecko の API は ActiveX に基づくのですか? それとも COM? JavaBeans?
Gecko は、XPCOM (プラットホームを横切って働く COM のサブセット) のおかげで、全てのプラットホームで再使用できます。COM (Digital によって開発されて、Microsoft によって後で採用される) は、Windows プラットホームの上のモジュール式のインタフェースのためのデファクトスタンダードです。
さらに、Windows プラットホーム上では、Gecko の XPCOM インタフェースが VB 開発者が利用することができる ActiveX コントロールでラップされています (ActiveX が Windows 専用の技術であるので、ActiveX ラッパーは、他のプラットホームで利用可能ではありません)。
JavaBean wrapper は現在開発中ではありません、しかし、将来そのような開発を排除する Gecko のアーキテクチャは何もありません。これらのインターフェースのソースコードとドキュメントは mozilla.org で入手できます。
組み込み API に関する今後の計画については、wikimo:Mozilla 2:Embedding APIs をご覧ください。
[編集] Gecko の API は Microsoft の Trident API と互換性がありますか?
Gecko の XPCOM インタフェースは Microsoft のものとは違います。両モデルの最も重要な違いは、インタフェースにおける Document Object Model (DOM) の反映に影響しています。
Microsoft の Trident インタフェースは独占の API で DOM を反映しますが、Gecko は W3C によって勧告された標準に従って DOM を公開します。他にも非互換性が存在します。Adam Lock は現在、部分的な互換性層 (compatibility layer) を開発しています。これにより、開発者はより簡単に Microsoft のエンジンから NGLayout エンジンに移行することができるようになるかもしれません。
[編集] Gecko はどのプラットフォームで動作しますか?
Gecko は現在、Win32 (Windows 95、Windows 98、Windows NT 4、Windows 2000、Windows XP)、Mac、そして Linux で動作します。インターネットから mozilla.org に参加している OEM や貢献者らは、Gecko を他のプラットフォームに移植しようとしています。そのような移植作業には、Solaris、HP/UX、AIX、Irix、OS/2、OpenVMS、BeOS、そして Amiga その他があります。
[編集] Gecko のコンポーネントは何ですか?
Gecko は以下のコンポーネントを含んでいます:
- ドキュメントパーサ (HTML と XML を処理します)
- 内容モデルをもつレイアウトエンジン
- スタイルシステム (CSS などを処理します)
- JavaScript ランタイム (SpiderMonkey)
- 画像ライブラリ
- ネットワークライブラリ (Necko)
- プラットホームに特有のグラフィックスレンダリングと Win32、X と Mac のためのウィジェットセット
- ユーザ設定ライブラリ
- Navigator プラグインインタフェースをサポートする Mozilla プラグイン API (NPAPI)
- Open Java Interface(OJI)、Sun Java 1.2 JVM 付き
- RDF バックエンド
- フォントライブラリ
- セキュリティライブラリ (NSS)
1
[編集] 原文書の情報
- 著者: Angus
- 貢献者: Ekrock, Vidur, Hidday, Drunclear
- 著作権: Portions of this content are © 1998–2006 by individual mozilla.org contributors; content available under a Creative Commons license