読者です 読者をやめる 読者になる 読者になる

Mozilla Flux

Mozilla関係の情報に特化したブログです。

Firefoxのテーマ機能が刷新予定 JavaScript APIを通じて動的な制御も可能に

MozillaはFirefox 57のリリース(2017年11月14日:米国時間)までにテーマ機能を刷新する予定だ。その概略はImproving Themes in Firefox | Mozilla Add-ons Blogで発表されており、窓の杜でも既報ではあるが、今ひとつ具体像が見えず、当ブログでは記事にするのを躊躇していた。だが、最近になってQA/Theming/Testplan - MozillaWikiなどを通じて細部がはっきりしてきたので、ここに紹介しておきたい。

軽量・完全テーマから静的・動的テーマへ

現在、Firefoxは2種類のテーマをサポートしている。軽量テーマ完全テーマがそれだ。軽量テーマは、手軽に作成することができてFirefoxのバージョンアップに伴う互換性の問題も生じないが、Firefoxのユーザーインターフェイス(UI)のうちごく一部しか変更することができない。他方、完全テーマはUIを大きく変更できるが、作者はFirefoxのUIについて内部的な動作を把握することが求められるし、互換性の問題も頻繁に生じる。

こうした違いを反映して、本記事執筆現在、Mozilla Add-ons(AMO)に軽量テーマが42万以上登録されてるのに対し、完全テーマは500しか登録されておらず、しかもFirefoxの最新版と互換性があるのは60程度にすぎないという。同じカテゴリーの中にありながら、軽量テーマと完全テーマは差がありすぎる。そのうえ、これまではFirefoxの外観を制御するJavaScript APIも提供されてこなかった。

そこで、Mozillaは新しいテーマの仕組みを構築し、上記の問題の解決を図ろうとしている。新しいテーマの1つは静的テーマ(static theme)と呼ばれる。静的テーマの中核はJSONマニフェスト*1であり、UI要素に対応したプロパティに色や画像などを指定する。もう1つはWebExtensions APIを用いたもので、テーマ型拡張(themextension)の仮称もあるが、ここでは静的テーマと対比して動的テーマと呼ぶことにする。動的テーマがコントロールできるプロパティは静的テーマと同一だが、JavaScriptを用いて色や画像などをダイナミックに変更できる。動的テーマは実質的にWebExtensionsベースの拡張機能だが、Firefoxのアドオンマネージャでは「テーマ」として扱われる(Bug 1330349)。

MozillaはFirefox 55の時点で、Nightly/Auroraチャンネルにおいてこの新テーマ機能を有効化するとみられる(Bug 1341722)。

軽量テーマは静的テーマに変換 Chrome向けテーマの適用も

従来の完全テーマは、Firefox 57でサポートが廃止される。これは開発版も例外ではなく、Nightlyチャンネルから順に完全テーマは使えなくなっていく。

これに対し軽量テーマは、互換性の問題を気にせず使い続けることができる。ただ、インストール済みのパッケージは自動的に静的テーマへと変換される(Bug 1330338)。Mozillaは静的テーマへの一本化を目指しているのだ。おそらく、ある時期からAMOに軽量テーマを新規登録できないようにして、静的テーマへの移行を促すことだろう。

以上で見てきたように、Firefoxのテーマの仕組みはガラッと変わってしまう。だが、結局のところUI要素に対応したプロパティがどの程度細かなものになるかの問題であるともいえる。きめ細かなプロパティが用意されれば完全テーマに近いことも可能になるが、互換性の維持に責任を持つMozillaとしては、プロパティをあまり増やしたくない。とはいえ、使い勝手が悪ければ誰も新テーマに手を出さなくなってしまう。バランスを取るため、MozillaはFirefoxの開発版ではJSONマニフェスト内でUIのCSSを直接操作できるようにするという。テーマ作者が実例とともに新プロパティの実装を要請すれば、認められるかもしれない。

テーマ機能の刷新により、ユーザーは軽量テーマよりも複雑な内容のテーマを、互換性を気にせず使えるようになる。時間帯や訪問したWebサイトに合わせて変化するテーマも従来より増えそうだ。また、Chrome向けのテーマをそのままFirefoxに適用することも可能とされる。この場合、静的テーマはAMOのデジタル署名が不要なので、作者が自分のWebサイトでChrome向けのテーマを公開し、ユーザーがそれをインストールすればよい。

(17/03/14追記)
Add-ons/Firefox57 - MozillaWikiが改訂され、Nightly/AuroraチャンネルではFirefox 57以降も設定を変更することにより完全テーマを使用できることが明らかとなった。

*1:その構造についてはThe Future of Firefox Theming - Engineering Planを参照。