Australis アドオン互換性情報 – パート 1: ツールバー

[これは Mozilla Add-ons Blog の記事 Australis for Add-on Developers – Part 1: Toolbars の翻訳です]

新しい Firefox のテーマとなる「Australis」が 6 週間前に Nightly チャンネルへ投入されました。現在の作業はその上で行われているため、すぐに Aurora チャンネルへマージされることはなく、少なくともあと 1 回リリースサイクルが完了するまでは Nightly チャンネル のみでの公開となります。つまり、2014 年 4 月下旬に最終リリースが 予定 されているバージョン 29 より前に Australis が Firefox へ投入されることはありません。

アドオン開発者の皆さんには、最新の Nightly をダウンロード し、自作のアドオンをテストすることをお勧めします。何か問題に遭遇したらぜひ Mozilla へ報告してください。バグを登録 し、Australis の アドオン互換性に関するトラッキングバグ に依存関係を設定してください。重複報告を防ぐため、先に他の依存バグに目を通すようお願いします。あなたが開発者でなく、単に使っているアドオンの問題を報告したいときは、アドオン互換性レポーター という拡張機能をインストールし、それを使ってお知らせください。

それでは、Australis で何が変わったのか、アドオン開発者が知っておくべきことを順に見ていきましょう。まだ Nightly をインストールしていない場合は、このブログ記事 に書かれている情報を参照してください。

ツールバー

Australis のツールバーは大きく変わりました。これは、ほとんどの場合に余白となっていたクローム部分を削ることで、ユーザが利用可能なコンテンツエリアを最大化することを目的としています。余白を損なうことなくより複雑なウィジェットをツールバーやその他の部分へ追加できるようにする深部の変更も含まれています。

ウィンドウ下部のアドオンバーは削除されました。その代わり、ツールバーをボタンやウィジェットで拡張する新しいメニューパネルが用意されています。このパネルはメインツールバーの右端にあるボタンをクリックすることで表示できます。この新しいメニューに含まれるすべてのアイテムはカスタマイズ可能なので、アドオンのボタンやウィジェットをそこへ追加することもできます。

カスタマイズ UI にも待ち望まれていた刷新が行われ、以前よりはるかに使いやすく、アイテムを見つけやすくなりました。ウィンドウ全体を使った UI が採用され、ユーザは、自分が何をしているのかを直感的に理解し、より柔軟にツールバーのカスタマイズを行えるようになりました。ツールバーボタンを配置可能な場所は、メインツールバー、独自ツールバー、タブバー、そして新しいメニューパネルです。あなたのアドオンがボタンやウィジェットを提供している場合、いずれの場合でも問題なく動作するよう確認してください。今のところ新しい空白のツールバーを追加する方法はありませんが、ブックマークツールバーにボタンを追加することも可能となりました。アイコンの大小サイズ設定は廃止されました。

メインツールバー内の DOM 構造も前と変わっています。toolbar 要素とその子要素の間に中間コンテナが追加されました。nav-bar-customization-target という ID を持った hbox がそれに当たります。

ツールバーボタン

メインツールバー内のアイコンは 18 × 18 ピクセルです。ただし、周囲に 1 ピクセルの余白を含むことが想定されているので、Firefox の現行バージョンのメインツールバーで使われている 16 × 16 ピクセルのアイコンをそのまま流用できるはずです。

ボタンは、ユーザが移動したり、アドオンが新しいメニューパネルへ自動的に追加したりすることも可能なので、そうした場合についても考慮する必要があります。アイコンはメニューパネル内では 32 × 32 ピクセルで、ツールバーから削除されカスタマイズ UI に移動された場合も同様です。小さなアイコンは拡大表示されるため、16 × 16 ピクセルのアイコンを使っている場合は見た目が良くありません。

あなたのアドオンがメインツールバーへボタンを追加するもので、パレットへボタンをオーバーレイさせるための 通常のガイドライン に従い、さらに初回起動時に JavaScript を使ってツールバーへ追加する方法を採っているのであれば、CSS を以下のように編集するだけで、他のコードには一切手を加えることなく Australis へ対応できるはずです。

/* 元のスタイル */
#my-button {
  list-style-image: url("chrome://my-extension/skin/icon16.png");
}
/* Australis 対応を追加 */
#my-button[cui-areatype="menu-panel"],
toolbarpaletteitem[place="palette"] > #my-button {
  list-style-image: url("chrome://my-extension/skin/icon32.png");
}

なお、Australis テーマ内のボタンには、UI 上で配置される際に cui-areatype という属性が設定されます。取り得る値は menu-paneltoolbar のいずれかです。この toolbar という値を使って、Australis とそれ以外のテーマのボタンに別々のスタイルを指定することが可能です。

type="menu" あるいは type="menu-button" の付いたボタンの見た目と挙動には一貫性がありません。それに関してはアドオンの互換性問題がいくつか報告されていますが、Australis ではサブビューパターンが推奨されるため、それらのバグが修正されるかは不透明です。一例として、履歴ボタンがツールバー上とパネル上でどのように動作するか試してみてください。この実装方法はまだ文書化されていませんが、ソースコード を見れば把握できるかと思います。

アドオンバーボタン

上で書いたように、利用可能なコンテンツエリアを最大化するためアドオンバーは廃止されましたが、スムーズに移行できるよう、メインツールバーに後方互換コードが用意されています (古いステータスバーとの互換性まで考慮されています)。ただし現時点では機能していないようなので、この問題を追跡するための バグ を筆者 [Jorge Villalobos] が登録しました。これは確かにバグのようですが、あなたのアドオンがボタンを追加するものなら、代わりにメインツールバーへ追加することをお勧めします。

ところで、アドオンが Australis テーマの Firefox へインストールされているかどうかを判別する簡単な方法があります。それは PanelUI-menu-button というノード ID の有無を確認することです。

SDK アドオン

既にご存じかもしれませんが、SDK は Firefox へ統合されたため、SDK を使って作られたアドオンがライブラリ全体を同梱する必要はもうありません。これにより、アドオンが SDK のバージョンを気にする必要はほぼなくなりました。初期設定でライブラリ非同梱の XPI ファイルを生成する バージョン 1.15 の SDK もつい先ほどリリースされました

SDK が Firefox へ組み込まれているため、アドオンとウィジェットは自動的に Australis に対応するものと期待できます。将来的に Australis との互換性が改善された新機能が投入された場合、ウィジェットは廃止予定となる可能性がありますが、まだ議論が行われている最中なので、このブログで常に最新の情報を確認してください。

関連資料

  • CustomizableUI.jsm – このモジュールは、アドオンからツールバーやそのウィジェットを直接操作したいときに使えるツールです。ドキュメントはまだ未完成ですので、最新の情報は直接 ソースコード を参照する必要があるかもしれません。ドキュメントの執筆に協力してくれた人にはボーナスポイントを差し上げます (^^
  • Australis とアドオンの互換性 (草稿) – 今のところ互換性に関するメモの寄せ集めに過ぎません。このドキュメントもまだ未完成ですので、今後も変更が入ります。ここでも協力者募集中です (^^

記事のタイトルにあるように、これはまだパート 1 です。アドオン開発者の皆さんが遭遇した互換性問題について詳しい情報が入り次第、新しい記事を公開します。パート 2 はおそらくタブについて取り上げます。Australis との互換性について何か気付いたことがあればコメント欄でお知らせください。