Archive of obsolete content

Source code directories overview

ジャンプ先:

この文書は、開発者のための Mozilla ソースコードツリーのディレクトリ構造のガイドである。ソースコード全体を鳥瞰し、 Mozilla を理解しやすくすることを目的とする。これは、新しく Mozilla の開発に加わる人が Mozilla のコードを学ぶスタートラインにするといい文書である。

この文書には SeaMonkey、Firefox、Toolkit に関する情報が含まれている。

これは Mozilla ソースツリーの変更に合わせて毎月更新される (べき) 生の文書である。

See also similar information in Mozilla Source Code Directory Structure.

はじめに: 共通サブディレクトリ

Mozilla ソースツリー全体を通して1つの一貫した名前つけ規約が用いられている。最上位ではプロダクトの名前である (例えば、seamonkey)。次のレベルはモジュールの名前 (例えば、seamonkey の中の editor ディレクトリ)。3 番めのレベルでは共通の名前つけ規約をそのまま流用しているところが多い。多くの第 3 レベルには、basepublic そして idl ディレクトリがある。要求されているものではないが、これらの共通の名前は共通の目的に利用される。もしファイルがサブモジュールにグループ分けできる場合は、それぞれ独自の名前のディレクトリに入れられる。 (例えば seamonkey の中の editor ディレクトリにある txmgr)。この 3 番めのレベルのディレクトリの下に 4 番目のレベルのベースとして public や idl などのディレクトリがある。この規約は再帰的であり、サブモジュールや、サブサブモジュール等にも適用される。

  • base そのモジュールの基本的なコアの機能が含まれている。Base にはサブモジュールに分類できないソースコードが全部含まれている。
  • build には特定のモジュールをビルドするための特別なメイクファイルが含まれている。
  • doc にはそのモジュールに関するドキュメントが含まれている。
  • idl には XPIDL (Cross Platform Interface Definition Language) インタフェースファイルが含まれている。インタフェースは Javascript と C の双方からできるだけ変更なしに機能が使えるようにするために利用される。XPIDL ファイルには独自の仕様の小さい言語と処理ツールが用意されている。
  • public には dist/include ディレクトリへエクスポートされるソースコードが含まれている。これらは一般には public であることが必要というわけではない。中には特定のモジュール内部でしか使わないものもある。さらに多くのコードが XPIDL で書かれたりコンバートされるにしたがって public ディレクトリの重要度は減少していく。
  • src にはソースコードの大部分が含まれている。
  • tests にはそのモジュールの動作確認に使用する C のスタブ/ドライバや HTML、XUL が含まれている。
  • tools には特定のソースコードを自動的に生成するためのスクリプトやそのモジュールのビルド用のツールが含まれている。

他にもプラットフォームに依存したサブディレクトリが含まれている場合がある。このディレクトリには特定のプラットフォーム用のソースコードが含まれている。

  • windows には Windows95/98、さらに Windows NT 4.0 用のソースコードが含まれている。
  • mac には Mac OS 用: PowerPC 用と 68000 用の両バージョンのソースコードが含まれている。
  • gtk には GTK (別名 GIMP ツールキット) 用のソースコードが含まれている。これは Unix の X ウィンドウ上で動作する。
  • motif には Unix 用 X ウィンドウで動作するツールキット、Motif 用のソースコードが含まれている。
  • os2 には OS/2 Warp 用のソースコードが含まれている。
  • rhapsody には Mac OS X サーバ (これは NextStep がベースになっており、NextStep は Unix 上の X ウィンドウがベースとなっている) 用のソースコードが含まれており Yellow Box (Cocoa) を使っている。
  • beos には BeOS 用のソースコードが含まれている。
  • qt には QT ツールキット という Unix 上の X ウィンドウ、Windows95/98、Windows NT 4.0 上で動く C クラスライブラリ用のソースコードが含まれている。
  • photon には Photon といういくつかのリアルタイム OS で動く QNX ソフトウェアシステム社のマイクロカーネルウィンドウシステム用のソースコードが含まれている。

SeaMonkey

SeaMonkey は Mozilla ブラウザスイートの開発コード名である。

  • accessible contains code to support Microsoft Active Accessibility and Sun's ATK accessibility API for Linux.
  • browser contains the code for Firefox. This will be covered below.
  • build には Mozilla ビルドチームが Mozilla コードのビルドと管理のために使用するスクリプト (通常は Perl) とプログラムが含まれている。このプログラムは makefile の動作と dist ディレクトリの生成の調整を行う。
  • calendar contains the code for the various Mozilla calendar apps and extensions.
  • caps にはセキュリティ設定と認証をベースとする実行権限に関する C のインタフェースとコードが含まれている (例えばベリサイン)。
  • chrome contains the toolkit chrome registry.
  • config には Mozilla 開発者がコードベースの操作や makefile 中の特定の処理のために利用するスクリプトとプログラムが含まれている。これらのプログラムはビルドレベルではなく、コードレベルの処理に利用される (ビルドレベルのものは build ディレクトリに格納される)。
  • content was split off from layout and contains objects as they are exposed to the DOM.
  • db には mdb/Mork データベースのための C のソースコードが含まれている。これは低レベルで汎用のクロスプラットフォームファイルライブラリである。これはメールボックスのデータやニュースデータ、グローバルヒストリデータを格納するのに利用する。これには XPCOM のサポートは含まれていない。このコードは Mozilla Classic のコードベースがオリジナルである。
  • dbm にはハッシュテーブルの管理と読み書きを行うための C コードが含まれている。これは URL 編集ボックスの自動補完機能 (Mozilla Classic の netscape.hst に格納されていた) や、キャッシュしたページのインデックス (Mozilla Classic では fat.db に格納されていた) に利用される。このコードのオリジナルはカリフォルニア大学バークレー校のものである。
  • directory contains the LDAP SDK.
  • docshell には単独のウェブページを読み込み表示するための C インタフェースやコードが含まれる (例えばスクロール)。[#seamonkey-embedding 埋め込み] コードはこのコードを「進む」とか「戻る」や履歴などの高レベルブラウザ機能でラッピングする。
  • dom には JavaScript の DOM (ドキュメントオブジェクトモデル) オブジェクトの実装と C インタフェースとコードが含まれている。これはビルトインオブジェクトと JavaScript スクリプトによるユーザ定義オブジェクトの両方を生成、削除、操作する C 部分構造を形成する。例えば、JavaScript がユーザ定義の属性をドキュメントに追加すると (例えば、document.goofy = 1)、そのコードは「goofy」というノードを生成し、それを「document」ノードに追加して、他の JavaScript コマンドから操作できるようにする。
  • editor には組み込みエディタコンポーネントの C インタフェース、C コード、XUL ファイルが含まれている。このコンポーネントではプレーンテキストと HTML が編集可能である。これは HTML エディタ(例えば Mozilla Classic の Composer) や、プレーンテキストメールや HTML メールの編集、プロダクト全体でのテキストフィールドやテキストエリアに利用される。このエディタは「編集機能つきのブラウザウィンドウ」として設計されたもので テキスト編集や redo/undo 管理のための特別なクラスが追加されている。
  • embedding には汎用の高レベルブラウザ機能 (例えば進む、戻る、履歴) のための C インタフェースとコードが含まれている。特定のプラットフォームや方法 (例えば ActiveX) によるこれらのインタフェースはウェブシェルコードによって隠蔽されている。
  • extensions にはブラウジング関係の様々なアドインに関する C インタフェース、C コード、XUL や JavaScript コードが含まれている。ここには Cookie、IRC、ウォレット、DOM インスペクタ、P3P、スキーマ検証、スペルチェッカー、transformiix、typeaheadfind、JavaScript デバッガ、XForms などが含まれている。
  • gc には Boehm ガーベージコレクタの C コードが含まれている。これは最終製品には利用されない: これは開発中にメモリリークを見つけたり、メモリの利用状況を追いかけるのに利用される。このコードは Hans-J. Boehm 氏によって書かれたコードが元になっており National Science Foundation、DARPA、Xerox そして SGI によりサポートされている。
  • gfx にはプラットフォーム非依存の描画,画像表示用 C インタフェースとコードが含まれている。四角形や線、画像などを描画するのに利用される。本質的にはプラットフォーム非依存のデバイス (描画) コンテキストのインタフェースを集めたものである。これはウィジェットや特定の描画ルーチンは扱わない。描画に関するプリミティブなオペレーションのみを提供するものである。
  • intl にはローカライズをサポートするための C インタフェースとコードが含まれている。その中には様々な文字集合やロケールフォーマット (例えば、異なる文化での日付、時刻のフォーマット) や他のローカライズに関するものを含んでいる。
  • ipc contains
  • jpeg には JPEG イメージを読み書きするための C コードが含まれている。このコードは独立した JPEG グループによる JPEG 仕様のリファレンス実装からのものである。
  • js には Javascript スクリプトコードを字句解析して構文解析、解釈、さらに実行するための C コードが含まれている。このコードは Mozilla Classic にあったものである。
  • l10n contains code for building localizations.
  • layout にはレイアウトエンジンの C インタフェースとコードが含まれている。レイアウトエンジンはコンテントの全断片間で「ウィンドウの領域」をどのように分配するかに関する決定を行う。各コンテントのサイズ調整やアライメントについては CSS1 と CSS2 (カスケーディングスタイルシート)、アライメントスタイル、そしてコンテンツそのものに従う。コンテントのレンダリングそのものを実際に行うのではなく、様々なコンテント要素に異なるウィンドウ片を割り当てるだけである。これはコンテントの「逆流」として知られているこのコードは「NGLayout」もしくは「Gecko」という名でも知られている。
  • lib には Mac でプログラミングしている開発者がリファレンスに使用する C コードが含まれている。これは実際に使用されてはいない。これは Apple から提供されているファイル処理コードのサンプルと同じように、Mac 用アプリケーションに Mozilla ブラウザをどのように埋め込むかを示している。
  • mailnews にはメール/ニュースコンポーネント (要するに Mozilla Classic での Messenger)に関する C インタフェースとコードが含まれている。これにはメール管理やニュースグループのメッセージの閲覧、他のメールフォーマットのインポートや新規メッセージの編集のためのコードを全て含んでいる。
  • modules には Mozilla にビルトインされているブラウジングに関する様々な異なる機能に関する C コードを含んでいる。これにはいろんな画像フォーマット (例えば PNG や GIF) を処理するコードを含んでおり、このコードは Java バーチャルマシン (OJI、すなわち Open Java Interface) 経由でもアクセスでき、プラグインやいろんな圧縮フォーマット (例えば JAR、ZIP、ZLIB) の読み込みもサポートする。このコードはいろんな異なる企業や個人を含めて Mozilla のオリジナルである。
  • netwerk には (http、ftp、gopher、castanetなどの様々なプロトコルを使った) 高レベルアクセスと同様、(ソケットやファイルキャッシュ、メモリキャッシュを使って) ネットワークへの低レベルアクセスのための C インタフェースとコードが含まれている。このコードの開発が進むにつれて古いコードと置き換えられる。このコードは「netlib」や「Necko」の名前で知られている。
  • nsprpub にはクロスプラットフォームの「C」ランタイムライブラリに関する C コードが含まれている。「C」ランタイムライブラリにはメモリの割り当て開放や、時刻や日付の取得、ファイルの読み書き、スレッドのハンドリングや文字列のハンドリングや全てのプラットフォームをまたぐ文字列比較など基本的な非グラフィカルな C 関数が含まれている。このコードは「nspr」あるいは「Netscape Portable Runtime」という名で知られている。このコードは Mozilla Classic からのものである。
  • other-licenses contains code that does not fall under the MPL, including branding, libical and stubs for 7zip.
  • parser contains the HTML parser and the XML parser (expat.).
  • plugin contains code for the MRJ plugin on Mac.
  • profile には新規のユーザプロファイル作成、既存のユーザプロファイル管理、Mozilla Classic からのプロファイルの移行、大手 ISP (例えば Earthlink、Concentric Networks) 用のデフォルトプロファイルのための C インタフェース、C コード、XUL、JavaScript が含まれている。
  • rdf には様々なデータにアクセスしたり RDF でそれらの関連を張ったりするための C インタフェースとコードが含まれている。 RDF は「リソース記述フレームワーク (Resource Description Framework)」のことであり、オープンスタンダードである。このコードはローカルのファイルシステムやデータベース、インターネット、あるいは他のデータソースへ URL のような文法を使ってデータの読み書きを行う。
  • security contains the security modules including NSS and PSM.
  • storage contains an implementation of sqLite3.
  • suite will contain files specific to the Mozilla suite.
  • sun-java には Mozilla を Sun の JVM (Java バーチャルマシン) と会話ができるようにするための C コードが含まれている。ここにはバーチャルマシンそのもののコードは含まれていない。
  • themes contains the default themes for Mozilla, modern and classic.
  • toolkit contains the code for the toolkit used for Firefox, Thunderbird and other standalone applications. This will be covered below.
  • tools には Linux のみの Leaky ツールの C コードが含まれている。Leaky はメモリリークや XPCOM のリファレンスカウンタに関する問題を見つけてくれるものである。
  • uriloader にはコンテンツに応じた正しいビューワを起動するための C インタフェースとコードが含まれている。例えば、このコードがあるコンテンツがメールメッセージであると判断すると、適切なリスナー (おそらく Netscape Messenger) を探してメールメッセージを渡して表示させる。これは汎用的なもので内部コンポーネント (Messenger のような) やプラグイン、あるいはヘルパーアプリに渡すことができる。
  • view には異なる型のビュー (例えばスクロールビュー) に関する C インタフェースとコードが含まれている。ビューにはコンテントは含まれるが、タイトルバーやボーダー、他の飾り付けは含んでいない (これらはフレームに含まれている)。このコードは含まれている個々のコンテントの操作を提供する。例えば、スクロールビューにはスクロールバーポジションがあって、スクロールバーの移動でどこを描画するのかをコンテントに知らせる。
  • webshell には C インタフェース、C コード、Linux 用シェルスクリプトと Mozilla を他の様々な異なるプラットフォームのプログラムに様々な方法 (プラグインとして、ActiveX コンポーネントとして、XPCOM クラスとして) で埋め込むためのその他のファイルを含んでいる。
  • widget にはスクロールバー、ラジオボタン、リストボックスのようなプラットフォーム非依存のコントロール (ウィジェット) に関する C インタフェースとコードが含まれている。
  • xpcom には XPCOM (クロスプラットフォームコンポーネントオブジェクトモデルという意味である) コンポーネント部品を実装した低レベル C インタフェース、C コード、C コード、少しのアセンブラコード、コマンドラインツールが含まれている。 XPCOM は Mozilla がインタフェースをエクスポートし、JavaScript、Microsoft の COM、標準の Mozilla C コードから自動的にアクセスできるようにするための機構である。低レベルの XPCOM クラスやインタフェースは Microsoft の COM によく似ており互換性がある (だが、XPCOM はクロスプラットフォームである)。
  • xpfe には「クロスプラットフォームフロントエンド」を実装するための C インタフェース、C コード、XUL が含まれている。本質的に、これは Mozilla プログラムの開始とタスクを実行するための他のコンポーネントの管理を行う。このコードにはわずかながらプラットフォームに依存するコードがある。プラットフォーム非依存なインタフェースをプラットフォーム特有の機能に提供する他のコンポーネントの部分である。
  • xpinstall には Mozilla Classic からのスマートアップデート機能を実装するための C インタフェースとコードが含まれている。XPInstall はプラットフォームに依存しない方法による、ファイルのダウンロード、解凍、インストールを行う。
  • xulrunner contains code for XUL Runner.

Firefox

Firefox is contained in the browser directory

  • app contains contains code to build the firefox executable.
  • base contains the XUL and branding code.
  • components contains Firefox specific components like history, bookmarks, preferences, migration, sidebar..
  • configcontains build scripts for Firefox.
  • extensions contains code for making certain extensions work.
  • installer contains the Firefox installer code.
  • locales contains the files that are translated for Firefox.
  • themes contains Firefox themes.

Toolkit

Toolkit is used by the standalone products.

  • components contains the alerts, autocomplete, command line interface, console, cookies, download manager, filepicker, history, password manager, typeaheadfind, view source, etc.
  • content contains XUL specific to the toolkit.
  • library contains libXUL work.
  • localescontains files that are translated.
  • mozappscontains shared application stuff.
  • obsoletecontains obsolete stuff.
  • profilecontains the profile manager
  • themescontains themes as they relate to toolkit things.
  • xreis the XUL runtime engine. This directory contains the code for initializing the toolkit.


原文書の情報

ドキュメントのタグと貢献者

タグ: 
このページの貢献者: chrisdavidmills, kohei.yoshino
最終更新者: kohei.yoshino,