Mozillaソフトウェアにおける拡張機能
Mozilla FirefoxやThunderbirdといったMozilla Foundation製のソフトウェア、そして
SeaMonkeyなどの関連ソフトウェアの機能性を向上させるための仕組みとして、拡張機能が存在します。これらはソフトウェアの機能追加や既存機能の改変を可能にするアドオンの一種です。テーマ(スキン)の提供にも用いられており、
セキュリティ修正や多言語化への対応など、幅広い用途で使用されています。
拡張機能の歴史
初期のFirefox(2015年以前)では、XULやXPCOMといった技術を用いた「寛容なアドオンモデル」が採用されていました。このモデルは高い柔軟性を提供する反面、Firefoxの内部構造への依存が強く、バージョンアップによる互換性の問題やクラッシュ、パフォーマンス低下などのリスクを伴っていました。また、マルチプロセス化(e10s)といった新技術の導入を妨げる要因にもなっていました。
こうした問題点を解決するため、Mozillaは2015年にWebExtensionsへの移行を発表。WebExtensionsは、Blinkのアドオンとの高い互換性を持ち、移植が容易な技術です。Firefox Quantum(バージョン57)のリリース(2017年11月)をもって、従来のレガシーアドオンは廃止されました。延長サポート版のFirefox ESRも2018年9月にレガシーアドオンのサポートを終了しています。ただし、WaterfoxやPale MoonといったFirefox派生ブラウザでは、レガシーアドオンのサポートが継続されています。Thunderbirdも同様に、当初はレガシーアドオンをサポートしていましたが、Thunderbird 78以降はMailExtensions(WebExtensionsをThunderbird向けに拡張したもの)の利用が推奨され、レガシー機能のサポートは終了しました。
拡張機能の技術
WebExtensions移行以前は、XUL/XPCOMオーバーレイ、ブートストラップ型拡張機能、Add-on SDKといった開発方法がありましたが、現在はWebExtensionsが標準となっています。WebExtensionsはクロスブラウザ対応を重視した設計で、Google Chromeや
Operaのextension APIとの互換性が高く、わずかな修正で様々なブラウザへの移植が可能です。
JavaScript、HTML、CSSといったWeb開発で一般的な技術を使用でき、Web APIに加え、拡張機能独自の
JavaScript APIにもアクセスできます。
拡張機能のインストールと管理
拡張機能は、Mozilla Add-onsなどのサイトからダウンロード、インストールします。XPInstallモジュールにより、ユーザーによる許可操作のみで自動インストールが実現されています。アドオンマネージャを用いた管理が可能で、アップデートの自動チェックや、ブラウザバージョンアップ時の互換性チェックが行われます。互換性のない拡張機能は自動的に無効化されます。アドオンマネージャからは、Mozilla Add-onsに登録されている拡張機能を直接検索、インストールすることも可能です。インストールには、拡張機能とブラウザのバージョン互換性が必須ですが、対応バージョン情報を改竄することで、公式にサポートされていないブラウザでも動作する可能性があります。
拡張機能が登場した背景
Firefox以前のMozilla Suiteでは、ソフトウェア本体に多くの機能が追加された結果、ソフトウェアの肥大化や
バグ増加といった問題が発生していました。FirefoxやThunderbirdでは、拡張性を維持しつつソフトウェアサイズを抑えるため、機能拡張は拡張機能で行う設計に変更されました。
拡張機能とプラグインの違い
拡張機能はブラウザの機能自体を拡張するのに対し、プラグインはFlashなどの特定
フォーマットの対応を強化するもので、ブラウザの機能には直接影響を与えません。
用語の混乱:「プラグイン」問題
2005年、窓の杜の記事で拡張機能が「プラグイン」として紹介されたことが、ユーザーの混乱を招きました。この問題は、拡張機能とプラグインの明確な区別、用語の統一といった議論を経て解決に向かいました。その後、Mozillaは拡張機能とテーマをまとめて「アドオン」と呼ぶようになりました。
主な拡張機能の種類
拡張機能は、機能追加・向上、ブラウジング性能向上、データ同期、検索、ツールバー、開発・デバッグツール、見た目変更など、様々な種類があります。中には、ジョーク的な要素を含むものも存在します。
他のブラウザとの互換性
WebExtensionsは、Google Chrome、
Opera、Microsoft Edgeなど、他のブラウザの拡張機能APIとも互換性があります。
関連情報
Greasemonkey(スクリプト実行環境)、addons.mozilla.org(Firefoxアドオン)、Mozilla Developer Center(拡張機能開発情報)などが関連情報として挙げられます。