Firefox拡張とGoogleChrome, Opera拡張
oh...Firefoxが拡張の始まりではなく、ActiveX導入時点で拡張できたという指摘が。たしかにそのとおりです。
Firefoxを始め、多くのブラウザが拡張機能により便利機能を付加できるようになった。
Firefoxが始まりではあるが、実のところこれは偶然の産物──サイドバーあたりを拡張できるように作ったけど、これ、いろんなところに応用できるんじゃね?みたいな──らしい(当時のことは僕は詳しくないが...)。
まあ偶然の産物であるかどうはともかく、これが大ヒット。他のブラウザも拡張機能をサポートし始めるようになる...のだが、そのアーキテクチャや方向性が全く異なるものだ。
そんな話をつらつらと書いてみたい。
Firefox拡張機能のアーキテクチャ
と、その前にMozilla系アプリケーションについて話さなければならないだろう。FirefoxもThunderbirdもあるランタイム上で動作するようになっている。実際に配布されるソフトとしては融合しているが、分離するならば、そのランタイムはXULRunnerと呼ばれるものになる。
via:Schrep's Blog » Blog Archives » Mozilla Platform
上図のThe Mozilla Platform
となっている部分がほぼXULRunnerが備えている。XULRunnerは名前のとおり、XMLでUIを作成できるXULと呼ばれるものを動かすものだ。
FirefoxやThunderbirdもGUIはXULで作られている。
XULRunnerのフレームワークを使ってFirefoxやThunderbirdは構成されている。そして、このXULRunnerの部分で拡張する機能が備わっている。
Firefox,ThunderbirdはXULRunner上に積みあがるアーキテクチャとなるが、Firefox,Thunderbirdと同列の存在としてXULRunner上に積みあがることになる。つまり、Firefox,Thunderbirdでできることは、その拡張機能でもできることであり、そこに制限はない。
また、Firefox,Thunderbird用に拡張を行えるものではなく、より一般的にアプリケーションに対して拡張を行うものなので、Firefoxならブラウジング、Thunderbirdならメール関連に特化した機能は無い。(もちろんFirefoxなどが用意した関数を使用することは可能だが、拡張機能が使うことを念頭の置いていない場合があるので注意が必要だったりする)
Firefox,Thunderbirdやその他、Mozillaプラットフォームで動作するソフトの拡張機能はこんな感じになっている。
GoogleChromeの拡張機能
次に拡張機能をサポートし始めたのはGoogleChrome(というかChromium)だろう。
この辺りは真偽が怪しい。間違いがあったら、コメント等を書いていただけると僕も勉強になります。
Chromeを作った人はMozillaの成功と課題を知っており(そりゃそうだ、Chromeを開発したのは元MozillaでFirefox開発に携わっていたのだから)、その問題を解決させた。
- 何でもできすぎる
- XULという特殊な言語などを使うなど、作成が難しい
- 拡張側の問題をアプリケーションがそのまま受け継いでしまう
これらを
- 用意したAPI経由限定にして、できることを絞る
- HTML、JavaScriptでとWeb開発者をターゲットにWeb開発で使える技術をそのまま使えるように
- それぞれの拡張機能用のプロセスを立ち上げると共に拡張機能はサンドボックスに閉じ込める
というようなことをしたわけだ。
使用できるAPIを限定したことでUIを変更するようなことはほとんどできなくなった。
その代わり、開いているコンテンツへのアクセス性は良くなっていて拡張機能のパッケージを定めるファイル(manifest.json)レベルでどのURL上でスクリプトを動かすかなどを定めることができるようになっている。
Operaの拡張機能
Operaも同様に多少作り方は違うが、Chromeと似たり寄ったりな感じだ。
ChromeよりもAPIは少ない印象で、その分できることも限られる。UserScriptの延長線上にある感じ。
特殊なイベントを取得できたりするので好きだけどね。
Firefoxとその他Chromeなどの拡張機能
Chrome登場まであまり意識することはなかったが、同じ拡張機能という名前であってもFirefoxとそれ以外とでは全然異なるものだ。
例えば、特定のページでスクリプトを動かしたいと思った時。
まとめ
- Firefox拡張機能はFirefoxというアプリケーション自身を拡張するもの
- 拡張機能の機構としてはWebに特化したものではない
- ChromeやOpera拡張機能はそのアプリケーションそのものではなく、Webコンテンツを拡張しやすくできている。
- Webに特化
- その代わり、アプリケーションとしての拡張性はほぼ皆無
そんなわけで、Webページをどうこうしたいという拡張機能であれば、ChromeやOperaが圧倒的に楽なわけで、特定Webサービスに対する拡張機能なんかはChromeとかの方が即出たりする。そりゃー、ブラウザでWebサービスを使いたい人にとってはChromeの方が便利だわね。「お前ら、Chrome使え。捗るぞ。」ってなもんですよ。
ただ、Webコンテンツというよりアプリケーションとして、カスタマイズしたいとか使い勝手を良くしたいという人にとってはMozilla系アプリケーション一択だろう。