mazilla mozilla
はじめに
モジラとは
当ページの主旨
モジラの特徴
モジラ概観
モジュール
Webツール
モジラの技術
その他のリソース
モジラのビルド
ビルド環境の構築
ソースのチェックアウト
ビルド手順
ビルド後のイメージ
モジラを実行
エンベッディング
エンベッディングとは
エンベッディングの概念
PPBrowserの構造
PPBrowserの解析
エンベッディングの構造
marbrowの構造
marbrowの解析
フィジラ
フィジラとは
フィジラのビルド
フィジラのエンベッディング
FAQ
やつぎ氏との会話

モジラ概観

モジラってどうなってるの?


ここでは、モジラがどのように成り立っているかという、その大きな構造を見ていきます。

厳密に言うと、モジラには様々なプロジェクトがありますが、一般的な意味で皆がモジラと言っているブラウザフロントエンドのプロジェクトは、SeaMonkey というプロジェクトです。

SeaMonkey 以外のプロジェクトには、

  • L10N - ローカライゼイション
  • Grendel - Javaで記述されたメールニューズクライアント
  • Electrical Fire - JIT (Just In Time)コンパイラのJava Virtural Machine
  • Rhino - Javaで記述されたJavascriptエンジン
  • Gnome - GNOMEプロジェクト
  • Classic - モジラクラシック

などがあります。

モジラは膨大なので、その構造を把握する為には、様々な方面からの切り口で、これを見ていくことが必要です。


モジュール

モジラのソースは、いろいろなモジュールという単位に分割されて管理されています。モジラのソースツリー上では、ほとんどのトップレベルに並んでいるディレクトリ(mozilla/*/)に相当します。

以下にその主なモジュールを挙げます。

  • docshell - web browserのコア部分
  • dom - DOM(Document Object Model) 処理
  • editor - HTMLエディタ
  • embedding - web browserの上位エンベッディング
  • expat - well-formedなXML,DTDパーサー(現在使用されていない模様)
  • gfx - クロスプラットフォームな下位描画処理
  • htmlparser - HTML,XMLパーサー(メモリ上のツリー構造に変換)
  • intl - 各種キャラセットやローケールの為の処理
  • jpeg - JPEG画像処理
  • js - Javascript
  • layout - browserのレイアウトエンジン(この部分をGeckoと呼ぶこともある)
  • lib - Macintoshプログラマーが必要とする、基本ライブラリを含む
  • mailnews - メール&ニューズコンポーネント
  • netwerk - ネットワーク処理(古networkより移行、netlib,Neckoとも呼ばれる)
  • nsprpub - クロスプラットフォームなCランタイムライブラリ
  • profile - ユーザープロファイル管理
  • uriloader - URLのコンテントより、適切なviewerを起動する
  • view - 例えばscrolling viewなどの、view処理
  • webshell - web browserの中位(現在docshell他に機能分割中、縮小の一途をたどる)
  • widget - クロスプラットフォームなコントロール(scroll-bar,radio-button,list-box,...)
  • xpcom - クロスプラットフォームなCOM(Component Object Model)
  • xpfe - クロスプラットフォームなフロントエンド
  • xpinstall - スマートアップデート処理


Webツール

モジラを便利に使用するに当っての様々なWebツールがあります。これらは、モジラのホームページからアクセスが可能です。


■ CVS (Concurrent Versions System)

モジラのソース管理用に使用されているツールです。年代管理を行ない、共同開発を支援します。モジラMacintoshで最も広く使われているクライアントプログラムはMacCVS Proですが、他に幾つかの候補もあります。


■ LXR (Mozilla Cross-Reference)

モジラの最新ソースの内容を、Web上でブラウズ&検索できます。


■ Bonsai

ソースツリー管理の為のツールです。CVSにより年代管理されているモジラソースのチェックイン履歴を検索したり、ログを見たり、Diffを取ったりできます。


■ Tinderbox

モジラオルグには、各プラットフォーム毎に24時間体制で、最新ソースをビルドしているマシンがあります。Tinderboxは、このビルド状況がグラフィカルに(色分けして)表示されるcgiのページです。チェックアウトの前には、必ずTinderboxで確認しましょう。


■ Bugzilla

モジラのバグを管理するシステムです。既に投稿されているバグの内容を検索したり、自分で見つけたバグを投稿したりできます。


モジラの技術

■ XPCOM (Cross Platform Component Object Model)

プログラムモジュールをコンポーネント化する為の技術です。MicrosoftのCOMに習ったもので、モジラではこれをクロスプラットフォーム化して使用しています。

COM自体の特徴は、

  • 各コンポーネントが上位からの参照カウントを管理し、自らを自動生成、破棄できる。
  • 上位は、あるコンポーネントを使用する場合はAddRefし、使用し終わったらReleaseする。
  • 上位からは、各コンポーネントは、幾つかのインターフェースの集まりとして見える。
  • 上位は、コンポーネントに対し、QueryInterfaceして希望のインターフェースを取得し使用する。

というようなものです。

このXPCOMこそが、モジラのモジュール化、クロスプラットフォーム化を行なう為の、最も重要な技術的要になります。


■ nsCOMPtr

XPCOMの為の、スマートポインター。生のCOM Interfaceポインターと違い、AddRef、Release、QueryInterfaceを、自動管理してくれる。C、C++のポインターのように、それが指し示すものを、* や -> で抽出できる。


■ nsString

XPCOMの為のストリング(文字列)クラス。


■ XPConnect

Javascriptから、C++で実装されたIDL表現のInterfaceをコールできる、C++で実装されたIDL表現のInterfaceから、Javascriptをコールできる、という、Javascript <-> C++,IDL,Interface 相互間のやりとりを実現する技術。


■ XPIDL (Cross Platform Interface Description Language)

XPCOM Interface クラスを定義する為に使用される、クロスプラットフォームなインターフェース記述言語。


■ XBL (Extensible Bindings Language)

外部ドキュメント内の要素に紐付けるバインディングを定義するためのマークアップ言語。XMLベースである。バインディングは、CSSかDOMを使って要素に紐付けられる。これらの要素はバウンド要素と呼ばれ、バインディングにより指定された新たな動作をするようになる。


■ XPFE (Mozilla's Cross Platform Front End)

モジラのクロスプラットフォームなフロントエンドの総称。XPToolKitやXULなどのパーツが集まって総合的に運用される。


■ XPToolkit

上記のXPFEを実現する為に使用される、具体的な個々のユーザーインターフェスパーツ。


■ XUL (XML-based User-interface Language)

XMLをベースとして、モジラのユーザーインターフェースの構成を記述する為の言語。これを外だしファイルとし、これを変更することにより、モジラの見栄えを動的に変更することができる。


■ NSPR (Cross Platform operating system facilities)

クロスプラットフォームなOSランタイムライブラリ。スレッド管理、ファイル管理、ネットワーク管理、日付時刻管理、メモリー管理(malloc、free)、シェアードライブラリリンクなどの機能を含む。


その他のリソース

■ ニューズグループ&メイリングリスト

モジラは時々刻々と変化して行きます。

最新のモジラの情報を得る為の一番の近道は、自分の興味のあるモジュールや分野のニューズグループやメイリングリストに参加することでしょう。

自分で調べてもわからないようなことが発生した場合は、対応するメイリングリストに質問をしてみましょう。


■ モジュールオーナー

モジラでは、各モジュール毎に、モジュールオーナーと呼ばれるそのモジュールの責任者がいます。

また、モジュールオーナーではないですが、Macintosh全般に関する(エンベッディングも含め)総責任者的な立場の方として、

Mike Pinkerton 氏 [ email ]

が、いらっしゃいます。


c_o_n_t_a_c_t
Copyright (C) 2000-2002 Symphony, Inc. All Rights Reserved.
English