» アドオン開発
Mozilla Add-on Builderによる拡張機能開発の入門
Add-on Builderについてあまり日本語の情報が見つからなかったので、「Mozilla Add-on Builderによる拡張機能開発の入門」として
を作成しました。
拡張機能開発の参考にしていただけると嬉しいです。
Firefox 14 のアドオン互換性に関わる修正のまとめ
[これは Mozilla Add-ons Blog の記事 Add-on Compatibility for Firefox 14 の抄訳です]
Firefox 14 がベータ版になってしばらく経ってしまい、今回も予定より少し遅れての記事公開となりました。いつも通り、アドオンの互換性に影響を及ぼす可能性のある Firefox 14 の変更点をまとめました。Firefox 14 for Developers により詳しい情報が載っていますので、こちらも併せてご覧ください。
一般
- サイト識別情報のデザインが変更されます。サイト情報が大幅に見直されました。テーマ作者はこの点に注意し、必要な変更を行ってください。サイト情報が適切に表示されない場合、レビュー申請が却下されます。(参考: Mozilla Japan ブログ – Firefox のサイト識別情報のデザインが変わります)
- (新しい) ダウンロードパネルが実装されました (ただし現時点では無効化されています)。もうひとつ大きな見直しが行われました。こちらはダウンロードマネージャです。新しいコードは Firefox 14 に投入されていますが、まだ正式公開には時期尚早として、設定で非表示にされています。ダウンロードマネージャにオーバーレイしているテーマと拡張機能の作者はこの点に注意し、今後行われる変更を事前に確認してください。新しいパネルは Firefox 16 までは公開されない見込みです。この機能に関する最新情報は ステータスページ を見るのが良いでしょう。
- ツールバーボタンが規定の状態でボーダーなしになりました。もうひとつテーマに関する変更です。これは Windows 向けにツールバーボタンを用意している拡張機能の作者に影響します。自作拡張機能のボタンがどの状態でも適切に表示されるよう、必ずテストしてください。
- ナビゲーションツールバーに
tabsontop
属性が設定され、CSS セレクタが簡素化されました。テーマ作者には便利な機能かも知れません。 - HTML5 パーサを使用して
bookmarks.html
パース処理の再実装が行われました。これによりnsIPlacesImportExportService
からimportHTMLFromFile
とimportHTMLFromURI
が削除されました。BookmarkHTMLUtils
モジュール内の同等の機能で代用してください。 - Places 内の旧スタイルの GUID が非推奨化・削除されました。これに関してはしばらくの間 議論されており、影響を受けるすべての開発者に対して事前に通知を行いました。このため皆さんが後で驚くことにはならないと思います。もしあなたがこの機能について調べている最中で、ブックマーク・履歴サービスを使おうとしているのであれば気を付けてください。
- リダイレクトと読み込みエラーの処理が改善されました。Places に行われたもうひとつの変更です。履歴からエラーページと
redirectsMode
フラグが削除されました。 - サニタイズされたフラグメントパース結果のサニタイザフラグを取得できるようになりました。
nsIParserUtils
にparseFragment
メソッドが追加されました。nsIScriptableUnescapeHTML
の同等のメソッドよりこちらを使用することが推奨されます。 MozBlobBuilder
が非推奨になりました。MozBlobBuilder
とBlobBuilder
は廃止予定です。代わりにBlob
コンストラクタを使用してください。- 位置情報の住所が削除されました。位置情報データの
address
属性が削除されました。
XPCOM
nsILocalFile
とnsIFile
インタフェースが統合されました。nsILocalFile
は引き続き利用できますが、今後は後方互換性のためだけに残されます。拡張機能を Firefox 14 以前のバージョンに対応させない場合は、代わりにnsIFile
を使ってください。ImportHTMLFromFileToFolder
が削除されました。nsIPlacesImportExportService
から削除されました。nsIAccessible
のinnerHTML
メソッドが削除されました。このメソッドは常にその要素自体のinnerHTML
の値を返していました。このため、それ自体何の役割も果たしていませんでした。- 使い道のない
queryCommandText
/execCommandShowHelp
メソッドが削除されました。nsIDOMHTMLDocument
から削除されました。 getFaviconURLForPage
とgetFaviconDataForPage
が常にnsIFaviconDataCallback
を呼び出すようになりました。onFaviconDataAvailable
関数がonComplete
に改名され、挙動が若干変わりました。
新機能
- 変異イベント (mutation events) の代替機能が実装されました。これらは当初
moz
接頭辞付きで導入されましたが、今回 接頭辞が外されました。つまり、変異イベント を置き換える適切な方法が提供されたのです。それは DOM 変異オブザーバ と呼ばれるものです。ドキュメントはまだ少ししか書かれていません。なお、これらのオブザーバはページ内のイベント処理速度を極端に低下させるため、本当に必要な場合に限って使用してください。 - 拡張機能からツールバーカスタマイズウィンドウへのオーバーレイが簡単になりました。カスタマイズパネルに便利な ID がいくつか追加されました。
- JavaScript から Windows ショートカットを作成する機能が実装されました。これは Windows 限定ですが、間違いなく重宝するものでしょう。
この一覧に載っていない変更点や間違いを見つけたらコメント欄でお知らせください。もしあなたのアドオンが Firefox 14 で動かなくなった場合は、筆者の方でも調査したいと思います。
AMO では、Firefox 13 と互換性のあるアドオンについて、近日中に 自動互換性テストと対応バージョンの更新 を行います。
Firefox 13 のアドオン互換性に関わる修正のまとめ
[これは Mozilla Add-ons Blog の記事 Add-on Compatibility for Firefox 13 の抄訳です]
Firefox 13 がベータ版になってからしばらく時間が経ち、またこの記事の公開も遅くなってしまいました。申し訳ありません。いつも通り、アドオンの互換性に影響を及ぼす可能性のある Firefox 13 の変更点をまとめました。Firefox 13 for Developers により詳しい情報が載っていますので、こちらも併せてご覧ください。
一般
- 新しいタブページが実装されました。これは Firefox 13 の主な新機能 のひとつに挙げられていますが、
about:blank
にオーバーレイしているアドオンがそのままでは動作しなくなります。ただ、開発者にとっては朗報でもあります。この機能によって、今までよりも簡単に独自の新しいタブページを作れるようになったのです。アドオン側でbrowser.newtab.url
設定の値を任意のchrome
URL に変更するだけで済み、オーバーレイは不要となります。 setTimeout
/setInterval
の「遅延」引数が削除されました。これは、setTimeout
やsetInterval
のコールバックハンドラに渡され、そのハンドラが実際に呼び出されるまでの待ち時間を示す追加引数で、非標準の機能でした。例えばsetTimeout
の待ち時間を0
として呼び出しても、数ミリ秒の最小待ち時間が設定されているため、そのコールバック関数は即時には呼び出されません。globalStorage
のサポートが廃止されました。window.globalStorage
は今後使用できません。代替機能については ローカルストレージの記事 を参照してください。- ライブブックマークの読み込みが非同期・オンデマンドになりました。
nsILivemarkService
は非推奨となりました。今後はmozIAsyncLivemarks
を使ってください。 excludeItemsIfParentHasAnnotation
のクエリオプションが削除されました。これは Places のクエリに使用できるものでしたが、Firefox 13 以降では使用できません。- HTML からプレーンテキストへの変換が DOM ウォーカーとして実装されました。
nsIScriptableUnescapeHTML
は非推奨となりました。今後は新しいnsIParserUtils
を使ってください。 - CSS
border-radius
とbox-shadow
のベンダー接頭辞サポートが廃止されました。今後-moz-border-radius
(各角の個別指定も含む) や-moz-box-shadow
プロパティは使わないでください。後方互換性のために残す場合でも、接頭辞なしの標準プロパティを必ず併記してください。 Places
ポップアップビュー内のマーカーが壊れていた問題が修正されました。これにより、Places ポップアップの内部処理にいくつか大幅な変更が行われました。あなたのアドオンでポップアップにオーバーレイもしくはオーバーライドしている場合は、変更点を確認し必要な対応を行ってください。
XPCOM
nsIPrefBranch2
がnsIPrefBranch
と統合されました。非常によく使われていたnsIPrefBranch2
が非推奨となりました。このインタフェースは設定オブザーバなどの実装に使われているはずです。Firefox 13 ではこれまで通り動作しますし、近い将来削除される予定もありませんが、今のうちから置き換えておくことをお勧めします。- Windows でバイナリコンポーネントの ASLR 対応が必須となりました。バイナリコンポーネントを使っているアドオン作者にとっては非常に重要なポイントです。筆者 [Jorge Villalobos] の理解では、ASLR は既定のコンパイルオプションに含まれていますが、自分のアドオンに含まれるコンポーネントが正しく読み込まれるかどうか、念のため確認してください。詳しくは Kyle Huey のブログ記事 をご覧ください。
nsIAccessNode
がnsIAccessible
と統合されました。nsIAccessNode
は削除されました。FileError
が削除されました。nsIDOMFileError
は今後使用できません。
新機能
about:compartments
ページが追加されました。これによって ゾンビコンパートメント (未解放メモリ領域) の発見が容易になりました。アドオンをテストする際には必ずこのページを確認した方が良いでしょう。非常に冗長なabout:memory
の代わりに、新しいabout:compartments
では既存コンパートメントの単純な一覧が表示されるので、追跡と把握がとても簡単になります。- スクラッチパッドとスタイルエディタのソースコードエディタにテーマを適用できるようになりました。
- 既存の
-no-remote
フラグから-new-instance
フラグが分離されました。これは、Firefox の別インスタンスを開始し、起動後にそのインスタンスがコマンドライン入力を受け付けられるようにと考案されたものです。バグに投稿された最新のコメントに寄れば、この機能はまだ完成していないようです。 - Canvas の画像データを
nsIInputStream
として取得できる内部 API が実装されました。Canvas から画像データを取り出せる便利な ショートカット が新たに追加されました。
この一覧に載っていない変更点や間違いを見つけたらコメント欄でお知らせください。もしあなたのアドオンが Firefox 13 で動かなくなった場合は、筆者の方でも調査したいと思います。
AMO では、Firefox 12 と互換性のあるアドオンについて、今後 2 週間以内に 自動互換性テストと対応バージョンの更新 を行います [訳注: Firefox 11 の互換性情報 では、こうした対応は今後行わないと書かれていましたが、Firefox 本体の互換性改善 と併せて継続されているようです]。筆者は Firefox 14 の互換性情報についても確認を進める予定で、今回の記事ほど公開が遅くならないよう努力したいと思います。
Firefox 12 の主な新機能を紹介します
今週リリースされた Firefox 11 に続き、今日 Firefox 12 ベータ版 がリリースされました。ベータ期間中は安定性や互換性の修正が行われるのみで、基本的には新機能の追加はありません。Firefox 12 のリリースは 4/24 を予定していますが、機能がほぼ確定するベータ版リリースの一足先に主な新機能と改良点をご紹介します。
Firefox 12 のアドオン互換性に関わる修正のまとめ
[これは Mozilla Add-ons Blog の記事 Add-on Compatibility for Firefox 12 の抄訳です]
Firefox 12 は今日深夜 (日本時間) にベータ版となります。互換性情報の提供が遅れて申し訳ありません。Firefox 13 の情報は通常通り事前にまとめるつもりです。
Firefox 11 のアドオン互換性に関わる修正のまとめ
[これは Mozilla Add-ons Blog の記事 Add-on Compatibility for Firefox 11 の抄訳です]
Firefox 11 が数週間前に Aurora チャネルへ移行し、Firefox 12 もまもなく後に続きます。ここで、本来もっと早く投稿するはずだった、アドオンの互換性に影響を及ぼす可能性がある Firefox 11 の変更点をまとめたいと思います。下の Firefox 10 の説明に書きましたが、最近様々なことに取り組んでいたため、記事の公開が遅くなってしまいました。申し訳ありません。
Firefox 10 のアドオン互換性に関わる修正のまとめ
[これは Mozilla Add-ons Blog の記事 Add-on Compatibility for Firefox 10 の抄訳です]
Firefox 10 が数週間前に Aurora チャネルへ移行しましたので、またいつも通り、アドオンの互換性に影響するバグをまとめたいと思います。今回挙げたリストは若干長めですが、ほとんどは無名で滅多に使われていない XPCOM や DOM インタフェースの削除です。
Firefox 10 に関するより包括的な情報については、MDN の Firefox 10 for Developers を参照してください。
Firefox 9 のアドオン互換性に関わる修正のまとめ
[これは Mozilla Add-ons Blog の記事 Add-on Compatibility for Firefox 9 の抄訳です]
Firefox 9 が最近 Aurora チャネルへ移行しましたので、いつも通り、アドオンの互換性に影響を与えるすべての変更点をまとめます。今回筆者 [Jorge Villalobos] が見つけたバグで厄介かと思われるものはごくわずかでしたが、言及すべき小さな変更点は多々あります。このバージョンに関する包括的な情報は、MDN の Firefox 9 for Developers を参照してください。
それではさっそく見ていきましょう。
アドオンの対応バージョン自動更新と互換性チェックツール
更新: Firefox 10 でアドオンの互換性が改善され、バイナリコンポーネントを含まない拡張機能は自動的に新バージョンへ対応するようになったため、対応バージョンの自動更新は廃止されました。
4 月に投稿した「アドオンの互換性と高速リリースサイクル」以降、一連の記事で説明しているように、高速リリースサイクルが採用された Firefox/Thunderbird 5 から、AMO に登録されているアドオンは基本的に対応バージョン (互換性情報) が自動的に更新されています。これによってアドオン作者の負荷は大幅に軽減されますが、この仕組みを知らずに手作業で更新作業をしている方もまだ少なからずいるようですので、改めて説明しておきたいと思います。
Firefox 8 のアドオン互換性に関わる修正のまとめ
[これは Mozilla Add-ons Blog の記事 Add-on Compatibility for Firefox 8 の抄訳です]
この記事は本来もっと早く公開するはずでしたが、ずっと先延ばしになっていました。遅れて申し訳ありません。AMO では先週金曜日 (8 月 26 日) に Firefox 8 へ向けた互換性情報の更新を行いました。このシステムにはまだいくつか修正すべきバグがありますが、検証はほぼ成功し、約 3,000 個のアドオンが自動的に Firefox 8 対応となりました。
以下、現在 Aurora として公開されている Firefox 8 に投入された、アドオンの互換性に影響する変更点を、筆者 [Jorge Villalobos] が分かる範囲でまとめました。