JavaScriptでXPCOMを作る
2005-06-13


FirefoxUIXULとJavaScriptで構成されていますが、JavaScriptの組み込みオブジェクトだけではファイル操作やウィンドウ操作などができません。そこで登場するのがXPCOM、これを用いることでOSに絡んだ操作やRDFの操作などが行えるようになります。

Firefoxに付随するXPCOMコンポーネントの多くはC++でかかれ、プラットフォーム別にコンパイル作業などが必要なのですが、XPCOMはJavaScriptを用いて作ることもでき、これならOSにあわせてコンパイルする必要はありません。そこでここでは実際にJavaScriptでXPCOMを作ってみることにします。

今回作成するXPCOMコンポーネント(nntPerson)は人物をあらわすもので、年齢を示すageプロパティと年齢を言うsayメソッドを持つものとします。また、以下ではWindowsで作成することを前提として話を進めていきますので、ほかのOSで作成する場合は適宜読み替えてください。

なお、ここではXPCOMコンポーネントの呼び出し方や拡張の作成については深くは触れません。XULチュートリアル(未完の邦訳)のXPCOMの章やFirefoxまとめサイトの「拡張の作成」を参考にしてください。

下準備

Gecko SDKの入手

Geckoに関する開発を進めるためのツール集がGecko SDKです。Mozilla 1.7開発版のFTPサイトからプラットフォームにあわせたGecko SDKを入手できます。ここではWindows用ということでgecko-sdk-i586-pc-msvc.zipをダウンロード。解凍してできたgecko-sdkディレクトリをCドライブ直下にコピーします。

libIDL-0.6.dll、glib-1.2.dllの入手

Gecko SDKのツールを使うためにいくつかライブラリを追加する必要が出てきます。プラットフォームによって異なるかもしれませんが、Windowsの場合はlibIDL-0.6.3-win32-bin.zipglib-19990228.zipを入手。解凍した中にあるlibIDL-0.6.dll、glib-1.2.dllをパスの通ったディレクトリに置きます。私は簡便のためC:\gecko-sdk\binにおきました。

UUIDの生成

拡張やインターフェースを識別するためにUUIDを生成する必要がでてきます。Web上でUUIDを生成してくれるサービスもありますが、私はMicrosoftの提供するPlatform SDKguidgen.exeを使用しました。

作業用ディレクトリの作成

ここではC:\JSPersonを作業用ディレクトリとします。

インターフェース記述ファイルの作成

作成するコンポーネントのインターフェース、すなわちどんなプロパティやメソッドを持つのかはあらかじめFirefoxに教えておかないといけません。そこで登場するのがIDLです。IDLを使用することでコンポーネントのプロパティやメソッド、継承関係などを記述することができます。


続きを読む

[Mozilla Firefox]
[JavaScript]

コメント(全2件)
コメントをする


記事を書く
powered by ASAHIネット