江村秀之 (level) EMURA HIDEYUKI
http://level.s69.xrea.com/mozilla/

はじめに

この冊子を手に取った方ならすでにFirefoxをお使いのことでしょう.Firefoxを初めて使ってみたときに,OperaやSleipnirなどの他の多機能なブラウザと比べて,驚くほどシンプルなつくりになっていることに気が付かれたと思います.

では,皆さんがブラウザに対して必要だと思う機能は何でしょうか? きめ細かいタブの制御,マウスジェスチャ,豊富なツールバーやボタン,フィードリーダ,各種ウェブアプリケーションとの連携,ウェブデザインの高度な開発サポートツール,etc. 気持ちは分りますが,もちろん,全てのユーザを満足させるようなオールインワンのブラウザを作れるはずもありません.

そこで,Firefoxが取り入れたのが拡張機能(extension)という仕組みです.本体は初心者でも容易に使いこなせる程度の基本的な機能に抑え,それ以上の機能はユーザが好みの機能を拡張機能として追加するという仕組みをとったのです.

拡張機能普及の背景

Mozilla Suiteの拡張機能

ブラウザに後付けで機能を追加できる拡張機能という仕組みは,Firefoxの前身であるMozilla Suiteの時代から用意されていました.ただ,残念ながらその管理システムはお粗末なものでした.信じられないかもしれませんが,Mozilla Suiteの時代には,拡張機能のアンインストールの仕組みも無かったのです.

また,拡張機能の品質もそれほど高いものではありませんでした.

アドオンマネージャによる管理

しかし,Firefoxではアドオンマネージャ(図1)により以下のようなの拡張機能を管理するための優れた仕組みが取り入れられており,格段に扱いやすくなっています.

図1:アドオンマネージャ
[図1]

開発環境の整備

当初はドキュメントの整備も不十分で,拡張開発者は独自でノウハウを身に着けるしかなかったのですが(▽注1),最近では各種ノウハウも蓄積されてきています.

また,Firefoxや拡張機能自体に多言語対応機能が備わっているために,海外で作成された優れた拡張機能も,すぐに有志の手によって日本語化(ローカライズ)されるようになっています.このように,拡張機能を利用することおよび,拡張機能の開発そのものの敷居が下がってきたこと,そしてなによりFirefoxの普及が進んだこと,さらにはそれらの相乗効果により,今では拡張機能の開発者と利用者は爆発的に増え,Firefox Add-onsサイト(https://addons.mozilla.org/)では2000個近い拡張機能とテーマが公開されています.

Add-onsサイトの今後

Mozilla Corporationが提供するFirefox Add-onsサイトは,従来,サイトの使用言語が英語のみのであることや,メンテされなくなった拡張機能が残っていたりと,決して使いやすいものではありませんでした.

現在,Add-onsサイトは全面的な見直し作業が行われており,日本語も含めた多言語対応も予定されています.また拡張機能の公開方法もレビュー後に一般向けに公開された安定版と,レビュー中やメンテが止まったものものを置くサンドボックス版に分離され,レビューの仕組みも改善されるようです.原稿執筆時点では,新Add-onsサイトのプレビュー版が以下のURLで公開されています.(https://preview.addons.mozilla.org/

拡張機能でできること

拡張機能でどのようなことが可能か,実際の拡張機能を例にみてみましょう.

単機能タイプ

比較的単純な単体機能を追加するタイプです.

図2:ツールバーにボタンを追加するUndo Closed Tabs Button
[図2]
図3:ロケーションバーの表示を見やすくするLocationbar
[図3]

機能補助タイプ

Firefoxの既存の機能を補助するための拡張機能です.

図4:専用のツールバーを提供するPrefBar
[図4]

ウェブアプリケーション連携タイプ

WebアプリケーションのAPIを利用してさまざまな情報を提供します.

図5:ステータスバーに天気予報を表示するForecastfox
[図5]

新機能追加タイプ

Firefoxに新たな機能を追加するタイプの拡張機能です.このクラスになると,相応の知識とプログラミング能力が必要になります.

アプリケーションタイプ

このクラスになると,それ単体でアプリケーションとして通用するほどの高度な拡張機能になります.Firefoxをアプリケーション開発プラットフォームとして利用している好例です.

図6:高機能なデバッグ環境を提供するFirebug
[図6]

一発ギャグ系

中には,あまり実用的ではない一発ギャグ的な拡張機能も存在します.

図7:中止ボタンがしいたけに見える
[図7]

以上簡単に拡張機能を紹介しましたが,このほかにもユニークな拡張機能が数多く存在しています.

表1 Firefoxの高度なカスタマイズ手法
ウェブページFirefox本体
ユーザスタイルシート
(CSSによる外観の変更)

userContent.css
Stylish

userChrome.css
Stylish
ユーザスクリプト
(JavaScriptによる外観と機能の変更)

Greasemonkey
ブックマークレット

userChrome.js
拡張機能
(なんでもあり)
テーマ(外観の変更)×

拡張機能を作ってみよう!

表1はFirefoxでユーザが自由な発想で行うことのできるカスタマイズ手法をまとめたものです.ユーザスタイルシートはCSSによって,ユーザスクリプトはJavaSciprtやDOMによってそれぞれ柔軟なカスタマイズが可能になっています(Stylish, Greasemonkey, userChrome.jsはそれらをサポートする拡張機能です).

拡張機能はCSS,JavaScriptに加えて,XULやXPCOMといった技術を用いてさらに高度な機能を実装できるようになっています.テーマはFirefoxの外観の変更に特化した特殊な拡張機能です.

ユーザスタイルシート,ユーザスクリプト,拡張機能は,後者は前者の機能を包含する形になっており,ユーザスタイルシートやユーザスクリプトの作成経験のある人は拡張機能の作成者予備軍といっても良いでしょう.

拡張機能を作成するのに必要なものは,ちょっとしたアイデアと,わずかばかりのプログラミング能力だけです.次章以降で国内の第一人者たちによる詳細な拡張機能の作成方法の解説が行われます.皆さんもぜひ,チャレンジしてみてください.

△注1本特集の著者の一人Piro氏は初期の開発者として世界的に有名です.