Mozilla Flux

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

MozillaがFirefoxの新しい拡張機能APIセットを開発中

Mozillaは、WebExtensionsと呼ばれる新しい拡張機能APIセットを開発中であり、Firefox Nightly 42で実験的な実装も済ませた(Bug 1175770)。現在、Firefox Developer Edition 42でも利用可能とみられる。

WebExtensionsは、Add-on SDKとは直接のつながりがなく、一から開発が進められているもので、以下のような特長を有するという。

  • 他のブラウザからの移植/他のブラウザへの移植を容易にする。
  • addons.mozilla.org(AMO)におけるアドオンのレビューを容易にする。
  • マルチプロセス化したFirefox(Electrolysis:e10s)に対応する。
  • Firefoxの内部コードが変更されてもアドオンの互換性が損なわれにくい。
  • 既存のXPCOM/XUL APIよりも利用しやすい。

上記のe10s対応に関し、WebExtensionsベースの拡張機能は、当面chromeプロセスで動作するが、別プロセス化の計画もある(Bug 1190679)。

WebExtensionsの仕様の多くは、Blinkの拡張APIに類似している(Bug 1161828)。本記事執筆時点で、全部または一部がサポートされているAPIとして、alarms、browserAction、extension、i18n、notifications、runtime、storage、tabs、webNavigation、webRequestおよびwindowsが挙げられている。また、将来サポートされる可能性のあるAPIとして、bookmarks、commands、contextMenus、cookies、downloads、history、idle、omnibox、pageAction、permissionsおよびNative messaging(runtime.connectNative)が挙げられている。

WebExtensionsベースの拡張機能のパッケージは、従来どおりXPIだ。ただ、メタデータはChromeの拡張機能と同様にmanifest.jsonにまとめられる。

以上は、主にデスクトップ版をターゲットにしているが、Android版Firefoxでも可能な限りサポートされる見込みだ(Bug 1185785)。

従来の拡張機能APIとの関係はどうなるのだろうか。WebExtensions - MozillaWikiの"Additional APIs"の項には、既存のFirefoxアドオンの必要に基づいてWebExtensionsのAPIを追加する計画であるとの記載があり、WebExtensionsはXPCOM/XUL APIを置き換えていくものとみてよいだろう。他方、Add-on SDKについては何ら言及がなく、併存するようにも思えるが、JetpackはFirefox.nextに統合される - Mozilla Fluxを振り返ってみると、WebExtensionsのコンセプトは、6年前にAdd-on SDK(当時の名称はJetpack)が提示したものと似ている。つまり、WebExtensionsが受け入れられていくならば、Add-on SDKはその存在意義を問われることになるだろう。

気になるのは、MozillaがWebExtensionsの実装を緊急のものとして非常に急いでいる点だ。Add-on SDKが成熟までに時間を要したことからすると、本来なら年単位の開発期間になりそうなものだが、上記のBug 1175770が報告されてからステータスがRESOLVED FIXEDになるまで、わずか1か月半ほどというスピード感である。

これはただの憶測だが、MozillaがWebExtensionsの実装を急ぐのは、Microsoft Edge(以下Edge)と関係があるかもしれない。Edgeは、Windows 10の正式公開時点で拡張機能をサポートしていないものの、Frequently Asked Questions : MSEdge Devによれば、将来のアップデートで新しいモダンな拡張機能モデルを採用するそうだ。また、The Vergeなどが報じているように、EdgeがChromeやFirefoxの拡張機能をサポートするという話もある。Edgeが採用する拡張機能モデルが、WebExtensionsと同様にBlinkの拡張APIとの互換性を重視したもので、MozillaはMicrosoftの発表に合わせてWebExtensionsの開発を急いでいるとは考えられないだろうか。逆に言えば、MicrosoftもMozillaの開発予定を把握しており、Edgeがサポートを表明したFirefoxの拡張機能は、XPCOM/XUL APIベースのものでも、Add-on SDKベースのものでもなく、WebExtensionsベースのものに限られるのではないか。

仮にこの憶測が現実化した場合、Operaは既にChromeの拡張機能をサポートしているから、アドオン作者がまずはChrome/Opera向けに拡張機能を開発し、次いで簡単な手直しでその拡張機能をFirefoxやEdgeに対応させる未来も描ける。その意味でも、WebExtensionsの動きには要注目だ。

(15/08/23追記)
WebExtensionsの正式発表後の動きについては、WebExtensionsが正式発表 XUL/XPCOMベースのアドオンは将来的に非推奨へ - Mozilla Fluxを参照のこと。