SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

Firefox拡張機能の基礎を実例で学ぶ

TouchUpWebを題材にしたFirefox拡張機能の開発入門


  • X ポスト
  • このエントリーをはてなブックマークに追加

Firefoxの拡張機能は数多くありますが、いざ自作しようと思っても、日本語の情報が少なくあきらめてしまった方も多いのではないでしょうか。本記事では、TouchUpWeb拡張機能の一部を題材にして、その仕組みを解説します。扱う機能はシンプルですが、一通りの技術・Tipsを使い、Firefox拡張機能の開発の基礎を押さえた内容となっています。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 Internet Explorer(以下、IE)が主流のブラウザ市場の中で、Firefoxはシェアを伸ばしています。Firefoxがシェアを拡大している理由の一つに、拡張機能の存在があるでしょう。非常に多くの拡張機能が世界中の人々によって開発されています。これらの拡張機能を組み合わせることによって、Firefoxを自分の好みのブラウザにカスタマイズできるのです。

 とはいえ、他人が作った拡張機能がぴったり自分に合っているとは限りません。幸いなことにFirefoxの拡張機能は、XML言語の一種でUI部分を規定するXUL、動作を規定するJavaScript、そしていくつかの設定ファイルから構成されています。これらはいずれもごくありふれた開発言語であり、特別な知識は必要ありません。しかも、エディタとFirefoxがあれば高価な開発環境をそろえる必要もありません。他人の作った拡張機能を自分の好きなように改造することが簡単にできるのです。

 しかし、問題もあります。残念ながら拡張機能の開発に関する情報は、まだまだ不足しているのです。ごく簡単なサンプルを作成するチュートリアルやリファレンス(英文)はありますが、これでは拡張機能をいじりたくても二の足を踏んでしまっている方も多いのではないでしょうか。

 本記事では、『不完全なHTMLを動的にタッチアップ』でも扱っているTouchUpWeb拡張機能を題材に、拡張機能の仕組みを紹介します。実際に動作している拡張機能をベースにしていますので、仕組みや開発のコツが理解しやすいことと思います。

対象読者

 Firefoxの拡張機能をいじりたい、あるいは、新しく開発したいと考えている方。

 なお、本記事では拡張機能開発の基礎(xpiファイルの構成やHello World!を表示する拡張機能)についての知識をお持ちであることを前提としています。これらの情報は、Firefoxまとめサイトによくまとまっています。

必要な環境

 Firefox 1.5以上が動作する環境であればプラットフォームは問いません。拡張機能はエディタがあれば開発できますので、開発環境も特に問いません。

TouchUpWeb拡張機能とは

 解説に入る前に、まずTouchUpWeb拡張機能の簡単な説明をしましょう。Firefoxでネットサーフィンをしていると、時折ページのデザインが崩れたり、正常に動作しないページに遭遇することがあります。多くの場合、これらのページはIEでの閲覧を前提として作られています。つまり、Firefoxなど他のブラウザでの表示や動作のチェックを行っていないのです。しかし、ブラウザの種類によってHTMLやCSSなどの解釈は異なるため、IEではデザイナが意図したとおりに見えても、他のブラウザで見ると表示が崩れてしまうことがあるのです。

 TouchUpWebシステムはこのような問題を修復する仕組みであり、独立行政法人 情報処理推進機構(IPA)の2005年度下期オープンソースソフトウェア活用基盤整備事業の一環として開発されました。システムは、フィルタ(TouchUpWebプロジェクトでは修正スクリプト、あるいは、TouchUpスクリプトと呼んでいます)を使ってブラウザ側で問題を修復するTouchUpWeb拡張機能と、修復するためのフィルタを配信するTouchUpWebサーバから構成されています。動作の仕組みや画面イメージなど、より詳しい情報はTouchUpWebのプロジェクトサイトをご覧ください。

レポート機能の概要

 TouchUpWeb拡張機能の仕組みをすべて解説するのは困難ですので、本記事ではTouchUpWeb拡張機能のうち、レポート作成機能に焦点をあてて解説します。レポート作成機能とは、次のような機能です。

 TouchUpWeb拡張機能は、ユーザーの求めに応じてTouchUpWebサーバへ修正スクリプトの有無を問い合わせ、ウェブページへ修正スクリプトを適用します。これらの処理はウィザード形式で進められます。修正スクリプトを適用後、ウィザードは下図のようにレポートを表示するかを尋ねてきます。

レポート表示をするかどうかを尋ねるダイアログ
レポート表示をするかどうかを尋ねるダイアログ

 ここで[詳細レポート表示]ボタンをクリックすると、現在のウェブページに適用された修正スクリプトの内容や、HTMLソースに対して施された修正状況が表示されます。

レポート例
レポート例

 修正した内容は下図のように見やすく色分けして表示されます(赤字がオリジナルのソース、青字が修正後のソース)。この機能は修正スクリプトの開発者やウェブサイトの作成者に対して有効です。たとえば、修正スクリプトの開発者は自分の作成したスクリプトが正しく動作していることを確認できますし、ウェブサイトの作成者は自分のウェブサイトのどこに問題があるかがわかるのです。

修正内容の表示
修正内容の表示

TouchUpWeb拡張機能のディレクトリ構成

 それではさっそくTouchUpWeb拡張機能の構成を見てみましょう。

 TouchUpWebのサイトから拡張機能(touchupweb-version.xpi)をダウンロードしてください。xpiファイルはzip形式で圧縮されていますので、zip形式の展開ツールを使って展開できます。すると、次のような構成になっていることが分かります(※冒頭の「+」はディレクトリ、「-」はファイルを表し、一部のファイルは省略しています)。

ディレクトリ/ファイル名説明
+ chrome
  + content
    - installer-1.js修正スクリプトをサーバからインストールするスクリプト
    - installer-2.js同上
    - options.jsオプション設定用のスクリプト
    - options.xulオプション設定ダイアログ
    - overlay.jsFirefoxのメニュー等から各処理を呼び出すスクリプト
    - overlay.xulFirefoxに追加するメニューなどのUIの設定
    - wizard.jsウィザードの処理を行うスクリプト
    - wizard.xulウィザードのUIの設定
    + diff
      - diff.js2つのファイルの差分を作成するスクリプト
      - report.jsレポートを作成するスクリプト
      - template.htmlレポートの雛形
  - localeUIなどに表示する文字列を指定したファイル
  - skinアイコンなどの画像ファイル
- chrome.manifestインストール用の設定ファイル
- install.rdf同上
+ META-INF

 拡張機能の核となる部分は「chrome/content」以下に格納され、レポート作成に関する部分は「chrome/content/diff」以下にまとめられています。

レポート機能の解説

 レポート機能は主に以下の3つの部分から構成されています。

  1. ウィザードからレポート機能を呼び出すための設定
  2. レポートのテンプレートの読み込み
  3. 差分の作成とレポート出力処理

 では、これらの処理を順番に見ていきましょう。

次のページ
レポート機能を呼び出す設定をする

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
特集記事連載記事一覧

もっと読む

この記事の著者

清水 浩行(シミズ ヒロユキ)

1978年生まれ。株式会社三菱総合研究所 情報技術研究センター 研究員。入社以来オープンソースの普及啓発活動に携わってきたが、TouchUpWebプロジェクトを機にWeb標準化の活動にも関わるようになる。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/679 2006/11/09 11:30

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング