Firefox 検索プラグインの作成方法
先日Firefox 検索プラグインジェネレータを公開したついでに、検索プラグインの作成方法をご紹介しておこうと思います。それぞれのタグに関してもできるだけ詳しく書いたつもりですので、お役立てください!(^^)
- 2006/3/18 追記
- Firefox 検索プラグインの作成方法(実践編) として、Yahoo! 辞書を題材にして実際に検索プラグインを追加する手順を記事にしました。併せてご参照ください。
- 2006/7/24 追記
- Firefox 2.0 検索プラグインの作り方(基礎編)として、 Firefox 2.0 の新しい検索プラグインの作成方法を記事にしました。併せてご参照ください。
検索プラグインの保存場所
検索プラグインは、Firefox のインストールディレクトリ、もしくは各ユーザーのプロファイルディレクトリの中の "serachplugins" ディレクトリに格納されています。主にインストールディレクトリにはデフォルトの検索プラグインが保存されており、後から追加したプラグインはプロファイルディレクトリに保存されます。ただし、両者に機能的な違いは存在せず、アクセス権さえあればインストールディレクトリに検索プラグインを追加することも可能です。インストールディレクトリやプロファイルディレクトリの位置はインストール時の指定やプラットフォームによって異なります。以下に各プラットフォームのデフォルト位置を示します。
プラットフォーム | インストールディレクトリ | プロファイルディレクトリ |
---|---|---|
Windows 2000/XP | C:\Program Files\Mozilla Firefox | C:\Documents and Settings\<ユーザー名>\Application Data\Mozilla\Firefox\Profiles\xxxxxxxx.default |
UNIX/Linux | /usr/lib/firefox | ~/.mozilla/firefox/xxxxxxxx.default |
Mac OS X | ~/Desktop/Firefox.app/Contents/MacOS | ~/Library/Application Support/Firefox/Profiles/xxxxxxxx.default |
※"xxxxxxxx" はランダムに生成される文字列です。
"searchplugins" ディレクトリには、検索プラグインの本体である ".src" ファイルと、それらと同じファイル名の画像ファイル(主に .png か .gif)が格納されています。画像ファイルは検索窓に表示されるアイコンとして使われるのみで、もし存在しなくても動作に支障はありません。
検索プラグインの概要
では、例として Google 検索プラグインのソースを以下に示します。
# Mozilla/Google plug-in by amitp+mozilla@google.com # Localized by dynamis <search name="Google" description="Google Search" method="GET" action="http://www.google.co.jp/search" queryEncoding="utf-8" queryCharset="utf-8" > <input name="q" user> <inputnext name="start" factor="10"> <inputprev> <input name="hl" value="ja"> <input name="lr" value="lang_ja"> #<input name="num" value="100"> <input name="ie" value="utf-8"> <input name="oe" value="utf-8"> <interpret browserResultType="result" charset = "UTF-8" # resultEncoding = "UTF-8" resultListStart="<!--a-->" resultListEnd="<!--z-->" resultItemStart="<!--m-->" resultItemEnd="<!--n-->" > </search> <browser update="https://addons.mozilla.org/searchplugins/updates/google-jp.src" updateIcon="https://addons.mozilla.org/searchplugins/updates/google-jp.gif" updateCheckDays="7" >
一見すると XML のようですが、見た目に騙されてはいけません。XML 宣言も閉じタグもないので XML ではありませんし、search タグなどは、属性を改行で区切らないと認識されないようです(Firefox 1.5 で確認)。行頭 # でコメントになるという規則も含めて、かなり行志向の解析を行っているようです。だったらタグとか使うなよ・・・(´ー`;)。
それはともかく、それぞれのタグの属性で検索に必要な情報を与えてやることにより、検索プラグインになります。主なタグは以下の通りです。
タグ | 機能 |
---|---|
search | 検索サイトの情報の記述 |
input | クエリーのパラメータを記述 |
interpret | 検索結果の解析に使う情報の記述 |
browser | 検索プラグインの自動更新に使う情報の記述 |
最低限、search タグと適切な input タグの記述があれば検索プラグインとして動作します。interpret タグの内容は searchsidebar 拡張で使用される情報、browser タグは検索プラグインの自動更新チェックに使用される情報です。
タグリファレンス
以下、それぞれのタグの使用方法の詳細をご紹介します。
search
search タグは、検索サイトの情報を記述します。属性で検索サイトとプラグインの基本的な情報を定義し、内部のに input* や interpret などのタグを記述できます。search タグの属性には以下のものがあります。
- version
- 検索プラグインのバージョン。現在は "7.1" を指定しておけばよいと思います。
- name
- 検索窓に表示される検索プラグインの名前です。日本語を使う場合は、後述の sourceTextEncoding の指定を忘れないでください。
- description
- 検索プラグインの説明です。実際には使用されていません。
- action
- 検索クエリーを送信する URL です。検索窓から検索を実行すると、この URL に後述の intput タグなどで指定したパラメータが追加された URL のページが表示されます。
- searchForm
- 検索窓があるページの URL です。検索サイトのトップページなどを指定しておけばよいでしょう。たぶん Firefox では使用されていません。
- queryCharset
- 検索文字列をエンコードするのに使う文字コードの指定です(設定できる値のリスト)。検索窓に日本語などの ASCII 以外の文字が入力された場合、ここで指定した文字コードに変換されて送信されます。
- method
- 検索クエリーに使用する HTTP のメソッドを指定します。現在は "GET" に固定です。
- sourceTextEncoding
- ".src" ファイルの文字コードを指定。日本語の場合は "1"(Shift JIS)を指定します(設定できる値のリスト)。UTF-8 は使えないのか・・・(´ー`;
input
input タグは、検索エンジンに渡すパラメータを定義します。search タグの内部に記述されなければなりません。これらのパラメータは、検索結果ページのURL の一部として以下のように渡されます。
http://<検索ページのアドレス>?<パラメータ名1>=<値1>&<パラメータ名2>=<値2>...
このようなパラメータの渡し方を「GET メソッド」と呼びます。そのほかに「PUT メソッド」というものがあり、そちらは URL ではなく HTTP リクエストの中にパラメータを格納する方法です。ブログの書き込みや、ファイルアップロードなど、容量の大きいパラメータを渡すときに使用されます。Firefox の検索プラグインは現在のところ GET メソッドしかサポートしていないので、PUT メソッドでパラメータを渡す検索サイトは使用できません(bookmarklet を使用するトリックはあるようですが)。
input タグの書式としては以下の 2 つがあります。
<input name="パラメータ名" value="値"> <input name="パラメータ名" user>
前者は固定のパラメータを渡すための記述です。後者は検索窓に入力された検索文字列を渡すための特殊な記述で、user は value="検索窓に入力された文字列" に置き換わると考えればよいと思います。
inputnext, inputprev
このタグは searchsidebar 拡張で使用されるものだと思います。サイドバーに検索結果を表示した際に、次のページや前のページに移動する機能を提供するものです。input 同様、search タグの内部に記述されなければなりません。この指定はオプショナルで、実際標準の検索プラグインでも指定されているのは Google 用のものだけです。書式は双方とも同じで、以下の 3 つがあります。
<inputnext name="パラメータ名" factor="10"> <inputnext name="パラメータ名" value="next10"> <inputnext>
前者は表示するクエリーの番号を指定するタイプの検索エンジン(Google など)に対する記述で、各ページごとに factor 分だけ増減した値を検索エンジンに渡します。2 番目の書式は常に固定の値を渡すときの指定です。3 番目の書式は、直前の inputnext タグ(あるいは inputprev タグ)とまったく同じパラメータが使用されます。
interpret
このタグも searchsidebar 拡張で使用されるものです。サイドバーに表示するためのデータを検索結果から抽出する方法を記述します。search タグの内部に記述されなければなりません。
なお、私は searchsidebar 拡張は使っていませんので、下記の情報は検証できていません。もし間違いなどありましたら、コメントでご報告いただけると助かります。
interpret タグの属性は以下のものがあります。
- resultListStart, resultListEnd
- 検索結果を切り出す範囲の指定です。この範囲から後述の resultItemStart〜resultItemEnd などでサイドバーに表示する検索結果を抽出します。文字列のマッチングは単純な文字列比較によるもののようです。
- resultItemStart, resultItemEnd
- ひとつの検索結果を切り出す範囲を指定します。実際には、この範囲の中から <a href="〜"> のタグを探して、その中身を表示するようです。
- bannerStart, bannerEnd
- resultItemStart〜resultItemEnd で切り出した中から、バナーとして表示したい範囲を指定します。メタ検索モードで使用されるようです(?)。
- relevanceStart, relevanceEnd
- resultItemStart〜resultItemEnd で切り出した中から、各アイテムのスコアなどを切り出すためのものです。範囲の中身は必ず数値でなければなりません。検索結果をスコアでソートする、などの目的で使われるようです。
- skipLocal
- 検索サイトの内のページへのリンク(Google のキャッシュなどでしょうか)をスキップするかどうかを示すフラグです。"true", "false" のどちらかを指定します。
- charset
- 結果ページの文字コードを指定します。search タグの queryCharset と同じ指定が使用できます。
- priceStart, priceEnd
- ショッピングサイトの検索結果などから、各アイテムの値段を取得するのに使用します。中身は数値でなくてもよいようです。
- availStart, availEnd
- 同じくショッピングサイトの検索結果から、入手可能かどうか(?)の情報を切り出すために使用されます。
- dateStart, dateEnd
- 各アイテムの日付情報を抽出するために使用されます。
- nameStart, nameEnd
- 各アイテムの人の名前(著者などでしょうか?)を抽出するために使用されます。
- emailStart, emailEnd
- 各アイテムの e-mail アドレスを抽出するために使用されます。
- browserResultType
- interpret タグを複数記述するような場合に使用するようです。それがどのような意味を持つのかははっきりしません・・・orz。通常は "result" を指定しておけばよいようです。
browser
プラグインの更新チェックなどに使用される情報を記述します。このタグは search タグの中ではなく、独立したタグとして記述しなければなりません。属性は以下のものがあります。
- alsomatch
- 検索結果ページがリダイレクトされる場合に、そのリダイレクト先ページの URL を指定します。この指定があると、サイドバーに結果を表示する際にリダイレクト先のページを使用します。リダイレクト先が複数ある場合は、"'http://site1','http://site2'..." のような記述をします。本来は interpret タグに記述すべき情報のような気もしますが・・・(^^;
- update
- 検索プラグインの更新チェックをするために、プラグインのソースの URL を指定します。
- updateIcon
- update 属性と同様に、プラグインのアイコンの URL を指定します。
- updateCheckDays
- 更新をチェックする間隔を日数で指定します。
アイコンについて
アイコンとして使用できるのは、16x16 のサイズで以下の拡張子(フォーマット)のファイルです。
- gif
- jpg
- jpeg
- png
以前 Firefox 1.0 で試したところ、サイズの大きいアイコンを指定すると、縮小されずにそのままのサイズで表示されました(^^;。非常にウザいので、きちんとしたサイズにしましょう(笑)。
JavaScript による自動登録
JavaScript の window.sidebar.addSearchEngine メソッドを使用すると、Web ページ上から簡単に検索プラグインのインストールが行えます。addSearchEngine メソッドの書式は以下のようになります。
window.sidebar.addSearchEngine( <ソースのURL>, <アイコンのURL>, <プラグインの名前>, <カテゴリ名>);
- ソースの URL
- ".src" ファイルの URL を指定します。
- アイコンの URL
- 検索窓などに表示するアイコンの URL を指定します。ファイル名(拡張子を除く)はソースの URL と一致しなければなりません。
- プラグインの名前
- 確認ダイアログに表示されるプラグイン名です。
- カテゴリ名
- とりあえず、"Web" を指定しておけばよいようです。(^^;
もちろんこのメソッドは Firefox(というか Mozilla ブラウザ全般)の独自拡張なので、以下のようにしてサポートしているかを判別するのがよいでしょう。
if((typeof window.sidebar == "object") && (typeof window.sidebar.addSearchEngine == "function")) { window.sidebar.addSearchEngine(...); } else { alert("このブラウザは、Mozilla 検索プラグインをサポートしていません。"); }
以上で、検索プラグインに関する情報はじゅうぶんではないでしょうか。皆さんもお気に入りのサイトの検索プラグインをどんどん追加して、Firefox を活用しましょう!(^^)
詳しくはこちらの記事をどうぞ!
この記事にコメントする