Mozilla/Firefoxの拡張機能
Mozilla/Firefoxの拡張機能(extension)の作成方法を調べました。 テストを兼ねて、AirOne新着確認をステータスバーに表示する拡張機能を作ってみました。
証拠画面:
残念ながら何の役にも立たないので、公開の予定はありません。 その代わり、勉強会のネタとして、「Mozillaの拡張機能の作り方」を書く予定です。 mozillaサイトの文書を読めば分かることしか書くネタはありませんが、最初、どの文書を読めばよいか分からない人が大多数だと思うので、書く価値はあると思っています。
Mozillaがオープンソースになった頃、「XUL(ズール)のせいでMozillaがこんなに遅いんだ」、という文句がかなりあった記憶があります。今でも、XULの記述力が適切なのか良く分からない部分もありますが、実際にここまで動くものになった以上、誰にも文句は言えません。ちなみに、XULというのは、XMLベースのGUI記述言語です。Motifで言えばUILみたいなものです(motifとUILで検索すると、少しだけかつての栄光が見つかります)。XULはHTMLの歴史の後に設計されたので、レイアウトの記述をCSSに追い出している点がUILの時代と違う点です。CSSの記述力の良し悪しは別として、正しい進化が起きたひとつの例です。
MozillaはXULでメニューバーやツールバーなどを記述しています。チュートリアル( http://developer.mozilla.org/ja/docs/Building_an_Extension )に書いてあるので、秘密のテクニックと言うわけでもないですが、chrome://browser/content/browser.xul をアドレスに打ち込んで、firebugで調べると様子が分かります。
Mozilla拡張機能を作るために知るべき言語は、XUL、JavaScript、CSSです。必要ならXBLがここに加わります。
XBLは、XULに対してAOP的にadviceする印象を受けました。 http://developer.mozilla.org/en/docs/XUL_Tutorial:Anonymous_Content の「Using the Children Element」の例など見ると、class="dropbox"がジョインポイントで、CSSでmenu.dropboxのポイントカット指定に-moz-bindingでアドバイスを (defadvice) している感じです。XBLがアドバイスのコードで、<children/>の部分は elisp で言えば、ad-do-it みたいなものです。
一方、XULで手続き呼び出しができないことを補完するための、マクロ展開のような印象も受けます。
同じ現象(XBL)の印象を語っても、片やAOPのアドバイスのようと言えば新しそうに聞こえ、片や手続き呼び出しを模倣するためのマクロ展開のようと言うと随分古臭い印象になります。
- Category(s)
- カテゴリなし
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/inoue/firefox-extension/tbping