» アドオン開発
Firefox3.6 Beta3 より XPCOM 経由で geolocation が利用できるようになりました。
すでに御存じの方もいらっしゃるでしょうが、geolocation の XPCOM interface が Firefox3.6 beta3 より実装されました。
使い方は簡単です。以下にコードサンプルを紹介します。
var geolocation=Components.classes["@mozilla.org/geolocation;1"]
.getService(Components.interfaces.nsIDOMGeoGeolocation);
geolocation.getCurrentPosition(function(position){
Application.console.log(position.coords.latitude+','+position.coords.longitude);
});
詳細はmozilla developer centerをごらんください。
components ディレクトリへのインストールが禁止されます
DomainTab version 0.1.4 公開
皆様こんにちは。私は yasusato といいます。
私の作った Firefox の拡張機能 DomainTab が version 0.1.4 になりましたので、この場を借りて宣伝をさせていただきます。
DomainTab は選択したリンクのリンク先がリンク元のサイトと異なるドメインのサイトの時に、新しいタブを開いて表示します。単機能アドオンなので、リンク先が別ドメインの場合に新しいタブで開くという機能を得るために使用しない他の機能をインストールする必要がありません。さらに、単機能でありながら、ステータスバーへのアイコンの表示 / 非表示、新しいタブを前面に表示するかどうかという細かい設定ができるので、各ユーザのブラウジングスタイルに合わせてお使いいただけると思います。
今回のバージョンアップでは、locale ファイルを追加した(hu-HU, mk-MK, sr-RS, tr-TR, zh-CN)だけですが、興味をもたれた方がいらっしゃいましたら、ぜひ使っていただけたらと思います。
https://addons.mozilla.org/ja/firefox/addon/13906
それでは、失礼しました。
拡張機能開発テクニック
このページでは拡張機能開発の Tips やツールなどの情報を集めています。
このサイトの殆どのページは誰でも自由に編集できます。他にもいい記事があればいわゆる「まとめサイト」の感覚で皆さんどんどん編集していってください。
note: Firefox 4 に向けた拡張機能開発情報はこちらのページでまとめています
拡張機能開発の基本ツール
- 拡張機能のベースとなるファイルを自動生成する
- 開発者向けツールページで自動生成ツールやサービスを紹介しています
- 拡張機能のファイルから xpi パッケージを自動生成する
- 拡張機能パッケージスクリプトページで紹介しています
- ブラウザやドキュメントの構造 (DOM, CSS, JS …) 解析ツール – DOM Inspector
- 開発者向けツールページで DOM Inspector の使い方を解説したサイトを紹介しています
- その他の開発者向けツール
- 開発者向けツールページをご覧ください
デバッグテクニック
- 拡張機能デバッグインターフェイスのサンプルコード
- エラーコンソールや Firebug のコンソールにログ出力したりするためのインターフェイスを定義したサンプルコードです。
- エラーコンソールにログを出力する – nsIConsoleService
- 拡張機能からエラーコンソールにメッセージを出力する方法は、MDC に解説記事があります。
- その他のデバッグツール
- JavaScript デバッガなどについては 開発者向けツールページをご覧ください
サンプルコード集
- MDC – Code snippets
- MDC には拡張機能などで利用できるコードサンプル集ページが用意されています。
- jslibs – JavascriptTips
- JavaScript 一般の Tips としては jslibs の Tips 集ページのコードが参考になります。
開発 Tips/Hacks
- ユーザ設定操作インターフェイスのサンプルコード
- ユーザ設定 (preferences) の読み書きを簡単に行うためのインターフェイスを定義したサンプルコードです。
- XMLHttpRequest のサンプルコード
- Web ページや RESTAPI などからデータを取得するときに使うコードのサンプルです。
- ステータスバーに独自の要素を追加する
- ステータスバーにカスタム要素を追加する方法は、MDC で解説されています。
- タブを操作するコード
- タブブラウザ関連のコードサンプルが、MDC に掲載されています。
- window.open および window.openDialog と 引数 features の説明
- ウィンドウやダイアログを開くメソッドの引数について、MDC に解説記事があります。
- XUL textbox のオートコンプリート
- autocompletesearch 属性を使ってフォームの自動補完を実現する方法について、cou929_la さんが書いています。
- Web ページの拡大率を取得する
- 拡張機能などから、ブラウザのコンテンツエリアに表示された Web ページの拡大率を調べる方法について、Gomita さんが書いています。
- Firefox を再起動する
- 拡張機能から Firefox を再起動する方法について、Gomita さんが書いています。
- nsISafeOutputStream で安全なファイルの書き込み
- 書き込み中のクラッシュなどでファイルが破損しないよう安全にファイル書き込みする方法について、Gomita さんが書いています。
- HTMLDocument の動的な生成
- HTML のソース文字列から HTMLDocument オブジェクトと DOM ツリーを構築する方法について、nanot_vi さんが書いています。
- 選択範囲のリンクを取得する
- DOM 2 Range を使って選択範囲中のリンクを取得する方法について、nanot_vi さんが書いています。
modest の投稿記事
-
- XPCOM 経由で geolocation API を操作する方法について、mitsugu さんが書いています。
- 自分のサイトで配 布しているアドオンを AMO に登録する
- 配布元を自分のサイトにしたまま AMO にも登録する際の手順を、Gomita さんが書いています。
- 画面の描画内容を一時的にロック する方法
- ウィンドの描画を一時停止、再開させる方法について、Piro さんが書いています。
- クリックされたタブや ボタンを確実に取得する方法
- 要素が複雑な入れ子になっていてもクリックされた対象を適切に判断する方法について、Piro さんが書いています。
- 機能が呼び出されたことを他のアド オンに通知する
- DOM Level2 Events を用いてアドオン間で連携する方法について、Piro さんが書いています。
- 機能を他の アドオンからキャンセルできるようにする
- アドオン間で連携して他のアドオンの処理を途中でキャンセルさせる方法について、Piro さんが書いています。
- ダウンロードマネージャに進捗状況を表示させつつダウンロードする
- nsIDownloadManager インターフェイスを用いて拡張機能からダウンロードマネージャを利用する方法について、Gomita さんが書いています。
-
- NetUtil.jsm という JS モジュールを使ってファイル書き込みを別スレッドで行う方法について、Gomita さんが書いています。
- ブラウザウィンドウのサムネイルを描画する
- ブラウザウィンドウのサムネイル画像を描画する方法について、Gomita さんが書いています。
- タブ切り替えパネル風 の半透明ポップアップ
- panel 要素で半透明のポップアップを実現する方法について、Gomita さんが書いています。
- nsIPrefはFirefox 3.7以降では利用できません
- Firefox 3.7 以降では nsIPref インターフェイスが使用できなくなる件について、mkato さんが書いています。
- FUEL の仕様変更予定 (Application.getExtensions)
- Firefox 3.7 以降では FUEL の Application.extensions.get() が使用できなくなる件について、dynamis さんが書いています。
- 拡 張アンインストール時になんらかの処理を行う
- 拡張機能のアンインストール時に uninstall イベントハンドラで処理する方法について、mitsugu さんが書いています。
- Firefox 3.7 でのナビゲーションツールバーのアイコン画像サイズ
- Firefox 3.7 でツールバーのアイコン画像サイズが変更される件について、Gomita さんが書いています。
- Firefox 3.7でのjs-ctypes
- Firefox 3.7 以降での js-ctypes で構造体を引数に持つ関数の呼び出し方法について、mkato さんが書いています。
アドオン開発者向けツール
アドオンの開発者に役立つ拡張機能やツールなどを紹介します
エディタ / 開発環境
アドオンの開発には UTF-8 に対応したエディタと ZIP ツールがあれば必要十分です。
エディタについては使い慣れたものを自由に使ってください。参考までにいくつか例を挙げておきます。
- Windows 専用エディタ: 秀丸、サクラエディタ、TeraPad、EmEditor など
- Mac OS X 専用エディタ: Jedit X, mi, KEdit, CotEditor, LightWayText など
- マルチプラットフォーム対応エディタ: Eclipse, Netbeans, jEdit, Vim, Emacs など
- 統合開発環境: Eclipse, Netbeans, Spket IDE など
自動生成ツール
AMO – アドオンビルダー (スケルトン生成ツール)
AMO に標準で用意されている拡張機能のスケルトン生成 Web ツールです。
Firefox 拡張簡単キット “マッチ FOX”
拡張機能用のスケルトンを生成してくれるアドオンだが、install.rdf などの基本的なファイルだけでなく、汎用的な js module なども同梱してくれるのが特徴的。詳しくは作者自身の紹介記事をご覧ください。
Spket IDE の “Firefox Extension” プロジェクト
Spket IDE では拡張機能用のプロジェクトをサポートしており、スケルトンの自動生成が行われるようです。
Netbeans の foxbeans プラグイン
スケルトンを自動生成してくれるものですが、試したところ残念ながら最新の Netbeans では使えませんでした (>_<)
デバッガ、バリデータ
AMO – アドオンバリデータ (自動検証ツール)
AMO でエディタがアドオンのレビューをする際にも使用されているアドオンのコードチェックツール。パッケージングの基本的なチェックや、eval() 関数呼び出しなどセキュリティ上注意が必要なコードを検出したりしてくれる。
Firebug
Web 開発業界では標準となっているデバッガツール。基本的には Web ページなど Content 領域のデバッグ用ツールではあるが、Chromebug という拡張機能を使えば Firebug で Chrome 領域もデバッグできるようになるなど、拡張機能開発でもいろいろと役に立ちます。
- Firebug サイト (英語)
- Firebug サイト (日本語だが古い)
- Firebug Extension (英語)
- Firebug Add-ons コレクション (英語)
Venkman JavaScript Debugger
JavaScript デバッガ。Firebug でできることが増えて徐々に相対的重要度は下がってきているが、拡張機能内部の JavaScript を本格的にデバッグするには今でもこのデバッガが一番強力。但し、始めは取っつきにくいところもある。
UxU – Unit.Text.XUL
拡張機能開発用の自動テストツールキット。
開発サポートアドオン
DOM Inspector (DOMi)
XUL や HTML などの DOM オブジェクトやツリーを解析、調査するためのツール。GUI 要素の id や class をはじめとした各種属性を確認したり、XBL による無名コンテントを含んだドキュメントツリー構造を確認したりするための必須ツール。
Quick Restart
ワンクリックで Firefox を再起動できるツールバーボタンを追加する。あるいはキーボードショートカット Ctrl+Alt+R で再起動することもできる。新規ウィンドウを開くだけではキャッシュが残ったりモジュールが再読込されなかったりすることがあり
Console 2
エラーコンソールはデバッグの基本であり、それを使いやすくするのはデバッグ効率化のお約束。標準のエラーコンソールに、エラーファイルの種類 (JS, CSS, XML) やコンテキスト (Chrome, Content) で絞り込むなど、ちょっと便利な機能が追加される。Content (Web ページ) のエラーを除外して Chrome のエラーだけ表示するのは特に便利。
- mozdev.org – Console 2 ページ (英語)
Nightly Tester Tools
Nightly ビルド(最新開発版)のテスター向けのツールで、アドオンの対応バージョンチェックを無視してインストールする機能などがある。バージョンアップ対応時の強い味方。
Extension Developer
拡張機能開発者に便利なツールを色々集めた開発サポートツールキット。HTML/XUL のリアルタイム編集エディタ、JavaScript シェル、ファイルから読み込んで browser.xul などのコンテキストで実行する JavaScript Injector、正規表現や XPath のテストツールなどいろいろ入っています。
ExecuteJS
Browser.xul などのコンテキストで JavaScript を実行するコンソール。拡張機能内部で処理する JavaScript コードの部分的なテストや開発に便利。
SQLite Manager
履歴とブックマークを始めとして Firefox で広く使われている SQLite のデータベースの中身を GUI で簡単に確認できるツール。
Extdev Preferences
拡張機能開発向けのデフォルト設定値を有効に切り替えるだけの単機能アドオン。世界一単純なアドオンかも?
拡張機能パッケージスクリプト
拡張機能の xpi パッケージを作成するためのスクリプトは 拡張機能パッケージスクリプトページ で紹介しています。
開発ツール紹介リンク集
その他いろいろなツールの紹介をしているブログ投稿などを集めました。もっといろんなツールを試してみたい方はリンク先の各ページの紹介をご覧ください。
アドオン開発者向けリンク集
アドオン開発者向けの情報源となるサイトやブログなどのリンク集です。
他にもおすすめのサイトやブログなどがありましたらどんどん追加してください。自薦他薦は問いません。
note: Firefox 4 に向けた拡張機能開発情報はこちらのページでまとめています
公式サイト
- Mozilla Developer Center (MDC, DevMo)
- localmdc (MDC のスナップショット)
- Addons for Firefox (AMO)
- Firefox 用アドオン (AMJ)
- アドオン開発者センター (Developer Hub)
- Mozilla Add-ons Blog (英語)
- Mozilla Labs (英語)
コミュニティ
- MozillaZine.jp: 拡張機能フォーラム
- mixi: Firefox Extensions コミュニティ (mixi アカウントが必要)
- Moz addon はてなグループ
- Mozilla 拡張機能勉強会 [moz-addon] ML
- irc://irc.jpmoz.net/#staff
- プログラム技術@2ch掲示板: Mozilla でプログラミング (XUL) スレッド
- ソフトウェア@2ch掲示板: 拡張機能, Firefox, 初心者質問, userChrome.js スレッド
最新ニュースや動向紹介
アドオン紹介サイト
アドオンの紹介を頻繁にしているブログやサイトをリストしました。
個人のブログ
アドオン開発者自身のブログなど開発時の参考になるブログをリストしました。
- alice0755 さん: alice0755 のファイル置き場
- btm さん: すめるまん Broken Diary
- cau929_la さん: フリーフォーム フリークアウト
- Gemma さん: Genma の日記
- gomita さん: SCRAPBLOG
- H.OGI さん: h.ogi blog (jp)
- kur さん: kur.jp
- level さん: えむもじら
- mar さん: mar’s broken piece
- makoto kato さん: won’t fix
- masahal さん: Firefox アドオンとか
- masayuki さん: もずはっく日記
- nanto_vi さん: Days on the Moon
- norah さん: norah’#
- nyama (nori) さん: Another 朝顔日記
- Piro さん: outsider reflex
- secondlife さん: 微熱 everyday
- teramako さん: hogehoge, Vimple Star Sprites
- くでん さん: くでんな日記や公開どう?
- とある さん: とある Web プログラマの裏書き
- 池田 さん: Firefox Hacks 翻訳日記
開発者ブログフィード集
開発者のブログから記事を集約したフィードを紹介します。
- Yahoo Pipes: Mozilla Extension Developers
- Planet Mozilla (英語)
- Planet Firefox (英語)
開発体験談やチュートリアルなど
拡張機能の開発体験談やチュートリアル記事などを紹介します。
- Firefox 拡張機能開発チュートリアル冊子
- Firefox 3 ではじめる拡張機能開発
- Firefox 拡張入門第 1 回 (開発の準備)
- Firefox 拡張 (アドオン) 開発入門
- Firefox 拡張機能 (extension) の作り方
- Firefox 3 的な FUEL と JSM を存分に使って拡張機能開発をしよう!
- Firefox アドオン (拡張機能) の作り方
- Firefox Developer Conference 2009 – 拡張機能開発奮闘記
- Firefox 拡張開発にあたり、使った拡張や参考になった拡張など
- Developing Thunderbird Addons
イベントや勉強会
イベントや勉強会についてはイベント情報ページをご覧ください。
Firefox 本体の開発情報
Mozilla の開発情報を伝えるブログなどを紹介します。
- The Burning Edge (開発版の更新情報)
- ばぐじら救済通信
更新の停止しているサイト
最近あまり更新されていないが歴史的価値のあるサイト。
拡張機能開発入門
自分がブラウザに欲しい機能を簡単に追加できる拡張機能を作ってみようという人のため、チュートリアルやリファレンスなどのドキュメントを紹介します。
アドオン開発者ガイド
Firefox にはアドオン開発用の SDK が公開されており、SDK にはチュートリアルや API リファレンスなどの開発者ガイドも用意されています。現時点ではチュートリアル部分だけが日本語に翻訳されています。残りの部分については翻訳協力者を絶賛募集中です。
これから Firefox のアドオン開発を始める方はまずこのチュートリアルをご覧いただくことをオススメします。
Add-on SDK で始めるアドオン開発
knagato さんにがチュートリアル形式で Add-on SDK を開設した連載投稿です。
Firefox Hacks Rebooted
O’Reilly の “Firefox Hacks Rebooted” では Add-on SDK を使ったアドオン開発(3章)と、SDK を使わずに再起動不要アドオンを開発する Bootstrapped アドオンの開発手順が解説されています。
Jetpack 開発入門
Firefox 4 からは Jetpack と呼ばれる新しい拡張機能開発の仕組みが導入されます。Jetpack では JavaScirpt API を使用して JavaScirpt だけでも簡単に Firefox のバージョンが上がっても動作する拡張機能を作成できるようになります。
- Add-ons Builder を使った Jetpack 開発の手引き
- Add-on Builder チュートリアル
- Web 上で簡単に拡張機能開発をする Add-on Builder の入門
その他 Firefox 4 に向けた拡張機能開発情報はこちらのページでまとめています。
拡張機能開発ワークショップ用資料 (XUL アドオン用)
半日などの短期間で拡張機能開発を学ぶためのワークショップ用に作成された資料とサンプル拡張機能のソースコードを公開しています。
- Firefox 拡張機能開発 準備編 – SlideShare / PDF Download
- Firefox 拡張機能開発 入門編 – SlideShare / PDF Download
Firefox 3.5 以降を対象として、拡張機能開発環境の準備手順など非常に基本的なところから詳細に解説しています。ざっくりと拡張機能開発を体験して全体像が見えるようになったら、続けて他のチュートリアルや MDC のリファレンスを見ながら、自分の欲しい機能をどんどん実現していってください。
Firefox 拡張機能開発チュートリアル (XUL アドオン用)
Software Design誌2007年4月号第2特集「Firefox拡張機能開発チュートリアル」を元に、Firefox の拡張機能開発を始める方のためのチュートリアル冊子が作成されました。この冊子では JavaScript や CSS など Web 開発で一般的な基本さえ知っていれば Firefox の拡張機能開発を行えるように、XUL の書き方の基礎から XPCOM による高度な処理まで詳しく解説しています。また、デバッガの紹介や OSS ライセンスの解説も巻末付録として含められています。
当初 Firefox 2 向けに書かれ、その後 Firefox 3 向けにアップデートされています。残念ながら最新の Firefox で追加された新機能や変更点に関する説明はありませんが、拡張機能開発の基本については今でも変わりなく、最も網羅的な開発入門ドキュメントになっています。
Firefox 3 ではじめる拡張機能開発 (XUL アドオン用)
技術評論社サイトで公開されている、Scrapbook などの拡張機能作者として有名な Gomita さんによる拡張機能開発の連載記事です。
こちらもやはり Firefox 3 向けの記事ではありますが、今でも基本的なところは変わりないし、適度な分量でとても上手くまとめられています。
Mozilla Developer Center
Mozilla の開発者向け公式情報サイトは Mozilla Developer Center (通称 MDC または DevMo) と呼ばれている Wiki サイトです。
MDC には開発者向けの様々な情報が書かれており、拡張機能についてもチュートリアルや FAQ、コードサンプルなどが用意されています。
- アドオン開発者向け情報
- 拡張機能開発者向け情報
- 拡張機能作成チュートリアル (Firefox 1.5 向け)
- 拡張機能開発の準備
- 拡張機能に関する FAQ
- コードサンプル集
- FUEL (Firefox User Extension Library)
- テーマ開発者向け情報
また、Firefox 本体同様に拡張機能の中で使用する XML ベースのユーザインターフェイス言語 XUL について、XUL の特徴や利点の解説、リファレンスなどが用意されています。
localmdc
MDC のドキュメントをオフラインでも参照できるよう、Gemma さんがスナップショットアーカイブを作成してくださっています。ダウンロード可能な ZIP パッケージと、ブラウザで参照する HTML、Windows のヘルプファイル、Unix 向けに Textinfo など各種形式で公開されているので、必要に応じてご利用ください。
Addons for Firefox (AMO)
Mozilla 公式のアドオン配布サイト Addons for Firefox (AMO) では誰でも簡単に自分の作った拡張機能を登録、配布できるだけでなく、アドオン開発者向けのツールやドキュメントの紹介なども用意されています。
- アドオン開発者センター (Developer Hub)
- アドオンビルダー (スケルトン生成ツール)
- アドオンバリデータ (自動検証ツール)
- ケーススタディ (開発者インタビュー)
- 開発者向けドキュメントリンク集 (英語)
困ったときは
困ったときには他の拡張機能開発者も集まるフォーラムで質問してみるか、この modest サイトの投稿機能を使って悩みなどを書いてみてください。経験豊富な開発者達がきっとあなたの疑問に答えてくれます。
- MozillaZine.jp – 拡張機能フォーラム
- このサイトに新しいトピックを投稿 (アカウント登録または OpenID が必要)
- AMO – Developer Forum (英語)
その他
拡張機能の開発に必要な基本的情報はここまでに紹介した資料やサイトにすべて書かれています。これ以上の情報が欲しいというあなたは、もう拡張機能開発入門は卒業です。一人前の拡張機能開発者として拡張機能開発テクニックを学びながらバリバリ開発を行っていってください。