Firefox 拡張のパッケージング手順 (2) 落ち穂拾い編(ぉぃ

id:n_shuyo:20070216:firefox にて「片手落ちのような気がして仕方がない」とFirefox拡張開発におけるパッケージングの手順をまとめようと試みていたのだが。
Mash up Award で もけもけ遊んでいるうちに、Software Design 2007/4 月号 に特集「Firefox拡張機能開発チュートリアル」が掲載。一読すれば拡張開発が始められるくらいよくまとまっている。エントリーに書こうと考えていた内容はほぼほぼ網羅されてしまっており(それどころか、さぼって書くつもりがなかったところもちゃんと記述されている)、出る幕なし。
この特集がオンラインで参照できればもう言うことなしやんなあ……そのまま引き写すか!? とか、瞬間誘惑に駆られましたが、まあそういうわけにもいかず。
ここでつたない勉強中の内容をひけらかすより、ソフトウェアデザイン誌を読む方がためになるかと思いますので、そちらをお勧めいたします……


とはいえ完全白旗もしゃくなので、お役立ち情報を補足して、締めておこうと思う。

IDの生成

Firefox 拡張を配布するには、拡張機能を一意に特定するための ID を定めて、install.rdf に記述する必要がある(上記SD特集記事で言うと p.127)。


ID の形式としては、 UUID ("{9AA46F4F-4DC7-4c06-97AF-5035170633FE}" というような形式の文字列。MACアドレスなどを元に機械的に生成される)と、"識別子@ドメイン名"(作成者が恣意的に定める)という形式の2種類が認められている。
このうち、推奨されているのはおそらく後者の "識別子@ドメイン名" という形式であると思われる*1ので、ドメインを所有している人であれば、識別子部分に機能名を入れて、適当に ID を定めてしまえばよいだろう。


問題はドメインを持っていない人。
メールアドレスならさすがに持っているはずだから、それを使ってしまうという案もある。が、そのドメインは他人のものであり、識別子部分を適当に決める必要があることも考えると、どうしても気持ち悪さが残る。
UUID ならそこらへん心配をする必要ないので、それを生成する方法があればいいのだが、紹介されている方法は Windows だと Microsoft のアレを入れろだの、Linux だったらこのコマンドを叩けとか、ちょっと面倒なものばかり。


というわけで、オンラインで UUID を生成してくれるのが以下のページ。これならお手軽。

Firefox extension install generator
http://ted.mielczarek.org/code/mozilla/ffinstall/

これは実は Firefox 拡張の install.rdf を作ってくれるというツール。"Generate new GUID" にチェックを入れて、最小限の項目を入力すれば、UUID を生成して install.rdf を作ってくれる。
「なんだ、そんなのがあるんだったら、これそのままでええやん」と言いたいところだが、英語版であることに加えて、すでにバージョンが古いため、Firefox 2.0.x ではそのままでは使えない。残念。
というわけで、生成された install.rdf から UUID だけ拝借して、自分で別途パッケージを作りましょう。

多言語対応

Firefox 拡張で多言語対応を行う場合、xul から参照するリソースは DTD に、スクリプトから参照するリソースは properties に記述する必要がある。
そして properties に日本語を書く場合(もちろん多言語化のために使うのだから、書くに決まっているのだが)、Unicode にしてさらにエスケープしなければならない。例えば "日本語" と書く場合は "\u65e5\u672c\u8a9e" となる。
そしてそして、そのエスケープを行うツール native2ascii は Sun JavaSDK に同梱されていますので、そちらをインストールしてください。え? Java なんか要りませんよ。要るのは native2ascii だけです……


そんな回りくどいことせず、Firefox 拡張を開発して欲しくないんだったらはっきりそう言ってくれればいいのに、というくらいの状況である。
同じく「おまいらいい加減にせえよ」と思う人はやっぱりいるようで、native2ascii 同等品を作ってみようとしている方たちがいらっしゃったので、下記に紹介してみる。

native2ascii.pl をいちおう作ってみた
http://jrf.cocolog-nifty.com/software/2006/02/post_18.html
native2asciiの代替品u2aを作る
http://silentlogging.blogspot.com/2006/08/native2asciiu2a.html

でも実のところ、自分は JAVAer でもあるので、これらを使ったことはない(すまんす)。

*1:そう明記されている文書があればよいのだが……。Mozilla にはそこらへんのガイドラインをきっちり決めて、まとめてほしいなあ