何もしないFirefox拡張機能を作成する (その2)

前回に引き続き、何もしないFirefox拡張機能を作成する。今回のエントリはかなり長くなりそうだ。でもやっていることは結構単純なはずなで安心してほしい。

また、前回からFirefoxのバージョンが変わった。今のバージョンは2.0.0.13だ。

前回の復習

まずは軽く前回の復習をしよう。最終的に以下のファイルやディレクトリを作成するのが目的だった。

chrome/
chrome/content/
chrome/content/template.xul
install.rdf
chrome.manifest

ディレクトリ2つは単にその名前で作成すれば良い。chrome.manifestは前回作成したので、残りはファイル2つだ。

install.rdfファイルとは

今回はinstall.rdfを作成することにする。参考にしたのは以下のページ。
Install Manifests | MDN

Firefox拡張機能をインストールするときは、拡張の名前など、いくつかの情報が必要になる。install.rdfファイルはそんなインストール時に参照する情報を記したファイルだ。ファイルの形式はRDF/XMLらしい。と言っても、そんなことは気にせず穴埋め形式で記述すれば良い。

install.rdfファイルの形式

install.rdfファイルの形式は以下の通りだ。

<?xml version="1.0"?>

<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:em="http://www.mozilla.org/2004/em-rdf#">

  <Description about="urn:mozilla:install-manifest">
    <!-- 拡張機能自体の情報 -->
    <em:targetApplication>
      <!-- 対象とするアプリケーションの情報 -->
    </em:targetApplication>
  </Description>

</RDF>

これにコメントとなっている「拡張機能自体の情報」、「対象とするアプリケーションの情報」の部分を追記する。なお、文字コードUTF-8でなければならない(XMLのデフォルトだ)。

拡張機能自体の情報の記述

拡張機能自体の情報」として、以下を記述する。

<em:id>template@mollifier.d.hatena.ne.jp</em:id>
<em:version>1.0</em:version>
<!-- 追加機能の種類  2: 拡張機能, 4: テーマ, 8: ロケール -->
<em:type>2</em:type>
<em:name>template</em:name>

<em:description>extension template</em:description>
<em:creator>mollifier</em:creator>

そのうちdescriptionとcreatorはオプションなので、書きたくなかったら書かなくて良い。それ以外の4つは必須だ。

まずidだが、これはその名の通り、拡張機能を一意的に特定するためにある。なので、この値は他の拡張機能とかぶってはいけない。

この値として以前はGUIDというものが使われていたらしいし、実際にまだ使用している拡張も多い。ただそれは{daf44bf7-a45e-4450-979c-91cf07434c3d}のようなやたら長い値だ(むしろかぶらないようにするために、わざと長くされている)。拡張機能をインストールするとプロファイル以下にこのid名でディレクトリが作られるので、非常に分かりにくい。

そんな事情があってか、Firefox 1.5からはextension-name@creator-domainという形式も認められている。なのでこちらの形式を使用することにする。筆者は独自ドメインを持っていないので少し困ってしまうのだが、実のところcreator-domainは別にドメイン名でなくても、要は一意的になれば良いのである。ここではtemplate@mollifier.d.hatena.ne.jpというidを使用することにする。

このidをどういう値にすべきかという明確なガイドラインは特に決まっていないようで、本家MDCMDC日本語版を検索しても決定的な基準は見つからなかった。やはりGUIDは使いにくいし、かといってドメイン名の場合は独自ドメインを持っていない人が困ることになる。実際には適当に長めの文字列にしておけば問題ないんだろうが、他の人とかぶってしまうかも、という不安は残ってしまう。そのあたりは本家Mozilla Foundationにはっきり決めてほしいと思う。

次にversionだが、これは拡張機能のバージョンを表す。Firefox 1.5以降ではToolkit version formatに基づかなければならない。まあ、普通は数値.数値数値.数値.数値の形式で書けば十分だろう。ここでは1.0とする。

type拡張機能の種類を表す。正確には追加機能の種類を表す。つまり、Firefoxに機能を追加するものは何種類かあり、拡張機能もその一種だ。他にもテーマなんかもそれに含まれる。このtypeでどういう種類の追加機能であるかを指定するのだ。ここでは拡張機能を意味する2を指定しておく。

name拡張機能の名前だ。かっこいい名前をつけよう。

ここからは別に無くても良いのだが、一応書いておく。description拡張機能の一覧に表示される説明だ。表示される欄があまり広くないので、コンパクトに記述しよう。creator拡張機能の作者名だ。連絡をとるときのために一応書いておく。

対象とするアプリケーションの情報の記述

次は「対象とするアプリケーションの情報」(em:targetApplicationタグの中身)だ。実は作成した拡張機能が対象とするアプリケーションはFirefoxに限らないし、1つの拡張で複数のアプリケーションを対象としても良い。そのため、実際にどのアプリケーションを対象とするのかをtargetApplicationで指定する。

今回の記述内容は以下の通り。シンプルにFirefox専用としておく。

<!-- Firefox -->
<Description>
  <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
  <em:minVersion>2.0</em:minVersion>
  <em:maxVersion>2.0.0.*</em:maxVersion>
</Description>

まずidで対象とするアプリケーションを一意的に指定する。idの値はApplication Versions :: Add-ons for Firefoxを見れば分かる。ここではFirefoxの値(ec8030f7 ...)を指定する。

その下のminVersionmaxVersionは、この拡張が対象とするFirefoxのバージョンの範囲を指定している。当然、動作しない、または存在しないバージョンを指定してはいけない。

ここで、もう一度Application Versions :: Add-ons for FirefoxでリリースされているFirefoxのバージョンを確認してみる。
まず、ここまででFirefox 1.5以降の機能、指定方法をいくつか採用しているので、少なくともminVersionは1.5以上でなければならない。さらにFirefox 1.5系列は2007年6月にサポートが終了したので、この拡張でも対象外とすることにする。そんなわけでminVersionは2.0、maxVersionは2.0.0.*とした。'*'は「無限に大きい数字」という意味なので、2.0系はすべて対象に含まれることになる。

終わりに

以上でinstall.rdfファイルの完成だ。このファイルは要するに単なる設定の集まりなので、技術的にはどうということはない。基本的にはコピペで済むことだ。ただ、変な設定にすると将来バージョンが上がったときに困るかもしれないので、細かく仕様を確認してみた。

次回はtemplate.xulファイルを作成する。

< 前へ | 次へ >

この連載の一覧