Firefox 拡張のパッケージング手順 (1) 基礎知識編

前回、Firefox拡張「開発とっかかり」のチュートリアルを書いてみた。
が、あとパッケージングの説明がないとやっぱり片手落ちのような気がして仕方がない……


系統だって書く必要があるので、自分の理解度では少々心許ないのだが、まあ勉強がてら こりこりっと書いてみる。
まず今回は拡張開発を通じて必須基礎知識である「クロム」と「オーバーレイ」について。これ無いとパッケージングも説明のしようがないので。


ここでの説明は Firefox だけでなく、他の mozilla プロダクト(Thunderbird とか)にも当てはまる話なのだが、代表して Firefox についてしか言及していない。
また、多少噛み砕いて説明している分、語弊が発生しているかもしれない。できるだけ脚注でフォローしたつもりだが、識者の突っ込み歓迎。

chrome

辞書引いてしまったら意味がわからなくなるので、要注意(笑)。


chrome とは、Firefox でのユーザインタフェースに関連するリソースである*1
代表的なリソースとしては、画像、xul(後述の overlays ファイル)、javascriptcss、言語ファイル、などなど。
ロジックが記述された javascript なども全て含まれるので、「外部リソースの総称」と思っておいた方が実情に近いかもしれない。


拡張開発においてコーディングを行う際、chrome 内のリソースには下記のような URI でアクセスが出来る*2

 chrome://sample-extension/content/sample-overlay.xul

"sample-extension" の場所には拡張モジュール名が、"content" の場所には他に skin や locale など決まった識別子*3が指定される。


実際のパッケージ内のリソースがどの URIマッピングされるかを指定するのが chrome.manifest ファイルだが、それは次の記事で説明予定。

overlays

昔、キーボードにかぶせる「オーバーレイシート」というのがあった(今もある?)。
キーの役割や説明が書いてある穴あきシートで、各キーはその穴からそのまま押すことが出来つつ、シートに記載されている付加的な機能が各キーに与えられるというものだった。


Firefox の overlays は、ちょうどそんなオーバーレイシートのように Firefox の UI にかぶせて、(従前のメニューなどは基本的に保ちつつ)機能を付加するものである。一般に overlays 自体にはメニューに追加したい項目やアイコン、機能名などしか書かれないところもオーバーレイシートと似ているかもしれない*4
overlays の中身は、"XUL" という Firefox の UI を記述する XML 形式の言語で記述されているのだが、その仕様の詳細はここでは省略する。必要であれば後の参考リンクを参照して欲しい。


パッケージングのために最低限知っておいて欲しいのは、この overlays も chrome に含まれることと、overlays を Firefox の「どこにかぶせるか」を chrome.manifest というファイルで指定する必要がある、ということの2点である。


ということで、install.rdfchrome.manifest の書き方を次回。

参考リンク

XUL Overlays
http://developer.mozilla.org/ja/docs/XUL_Overlays
Chrome Registration(英語)
http://developer.mozilla.org/en/docs/Chrome_Registration

"Chrome Registration" は結構重要な文書なので、日本語訳が早く出るといいな……

*1:正確には「それらリソースを管理するリポジトリの仕組み」

*2:Java を知っている人であれば「jar や war と同じ感じ」

*3:mozilla ではこれらを "provider" と呼んでいる

*4: overlays にロジックを書き込んでしまうことも出来なくはないが、あまりお勧めしない