OpenSearch
Firefox 2 は検索プラグインとして OpenSearch 記述フォーマットをサポートしています。OpenSearch 記述シンタックスを使ったプラグインは IE 7 と Firefox で互換性があります。このため、ウェブでの利用で推奨されたフォーマットです。
Firefox は検索サジェストと SearchForm
要素のような OpenSearch 記述シンタックスに含まれていない追加の検索機能もサポートします。この記事では Firefox 特有の機能をサポートした OpenSearch 互換の検索プラグインの作成にフォーカスをあてていきます。
OpenSearch 記述ファイルは検索プラグインの自動検出に書かれているように通知でき、Web ページから検索エンジンを追加するに書かれているようにプログラム的にインストールできます。
OpenSearch 記述ファイル
検索エンジンを記述した XML ファイルはとてもシンプルで、以下の基本的なテンプレートに従います。あなたが書いている検索エンジンに応じて、斜体になっている箇所をカスタマイズする必要があります。
<OpenSearchDescription xmlns="https://a9.com/-/spec/opensearch/1.1/" xmlns:moz="https://www.mozilla.org/2006/browser/search/"> <ShortName>engineName</ShortName> <Description>engineDescription</Description> <InputEncoding>inputEncoding</InputEncoding> <Image width="16" height="16">data:image/x-icon;base64,imageData</Image> <Url type="text/html" method="method" template="searchURL"> <Param name="paramName1" value="paramValue1"/> ... <Param name="paramNameN" value="paramValueN"/> </Url> <Url type="application/x-suggestions+json" template="suggestionURL"/> <moz:SearchForm>searchFormURL</moz:SearchForm> </OpenSearchDescription>
- ShortName
- 検索エンジンの短い名前。
- Description
- 検索エンジンの簡単な説明。
- InputEncoding
- 検索エンジンがデータの入力に使っているエンコーディング。
- Image
- 検索エンジンを表す Base-64 でエンコードされた 16x16 のアイコン。ここに置くためのデータを作成するのに使える便利なツールの一つはここで見付かります: The data: URI kitchen。
- Url
-
検索に使う 1 つまたは複数の URL を記述します。
method
属性は結果を得るためにGET
とPOST
リクエストのどちらを使うか指定します。template
属性は検索クエリのベースとなる URL を指定します。 -
注意: Internet Explorer 7 は
POST
リクエストをサポートしていません。
- Firefox がサポートしている URL タイプは 2 つです:
type="text/html"
は実際の検索結果そのものの URL を設定するために使われます。type="application/x-suggestions+json"
は検索サジェストを得るために使われる URL を設定するために使われます。
-
どちらの URL のタイプでも、ユーザが検索バーに入力した検索語句に置き換えられる
{searchTerms}
を使うことができます。サポートしている他の動的な検索パラメータは OpenSearch 1.1 パラメータに記述されています。
- 検索サジェストのクエリに指定された URL のテンプレートは JavaScript Object Notation (JSON) フォーマットで補完リストを取得するために使われます。サーバ上で検索サジェストのサポートを実装する方法の詳細は 検索プラグインでの検索サジェストのサポートを見てください。
- Param
-
検索クエリともに通過させるために必要なキー/値のペアのパラメータです。この値を指定する際にはユーザが検索バーに入力した検索語句を挿入するための
{searchTerms}
を使うことができます。 -
注意: Internet Explorer 7 はこの要素をサポートしていません。
- SearchForm
- プラグインのサイトの検索ページを開くための URL。これは Firefox にユーザが直接 Web サイトを訪れる方法を提供します。
-
注意: この要素は Firefox 特有で OpenSearch 仕様の一部ではないため、この要素をサポートしていない他のユーザエージェントが安全に無視できるようにするために、上の例では "
moz:
" XML 名前空間接頭辞を使っています。
検索プラグインの自動検出
検索プラグインを提供しているウェブサイトは Firefox ユーザがプラグインを簡単にダウンロードしてインストールできるように通知することができます。
自動検出をサポートするには、ウェブページの <HEAD>
セクションに単に一行追加するだけです。
<link rel="search" type="application/opensearchdescription+xml" title="searchTitle" href="pluginURL">
斜体の項目を以下で説明されているように置き換えてください。
- searchTitle
- "MDC を検索" や 'Yahoo! 検索" のような実行する検索の名前です。この値は、プラグインファイルの ShortName と一致させる必要があります。
- pluginURL
- ブラウザがダウンロードできる XML 検索プラグインの URL です。
もしあなたのサイトが複数の検索プラグインを提供しているなら、それら全ての自動検出をサポートすることができます。例:
<link rel="search" type="application/opensearchdescription+xml" title="MySite: 著者" href="https://www.mysite.com/mysiteauthor.xml"> <link rel="search" type="application/opensearchdescription+xml" title="MySite: タイトル" href="https://www.mysite.com/mysitetitle.xml">
この方法であなたのサイトは著者による検索とタイトルによる検索を行うプラグインを別々のものとしてを提供することができます。
トラブルシューティングのヒント
検索プラグインの XML に問題があると、検出されたプラグインを Firefox 2 に追加する際にエラーが発生するでしょう。エラーメッセージは完全な参考になるわけではありません、しかし、以下のヒントが問題を探す手助けになるでしょう。
- 検索プラグインが整形式 (well formed)か確認してください。
ファイルを Firefox に直接読みこませることによって確認できます。テンプレート URL の中のアンパサンド(&)は & でエスケープされている必要があり、タグは最後のスラッシュか一致する終了タグで閉じられている必要があります。
xmlns
属性が重要です。xmlns
属性無しでは "Firefox は次の場所から検索エンジンをダウンロードできませんでした:(URL)" というエラーメッセージを受け取るでしょう。text/html
URL を含めなくてはならない ことに注意してください — Atom や RSS URL タイプしか含まない検索エンジン(それは妥当なのですが、Firefox はサポートしていません) は "検索エンジンをダウンロードできませんでした"というエラーを引き起こします。
さらに、検索プラグインサービスはプラグイン開発者が使うであろうログの仕組みを提供します。about:config を使い 'browser.search.log
' を true
にしてください。検索プラグインが追加されるとログ情報が Firefox のエラーコンソール(ツール -> エラーコンソール)に表示されます。
参考資料
- OpenSearch ドキュメント
- Technorati.com には 動作する osd.xml があります。
- 自動検出の更なる問題は bugzilla バグ 340208
data:<code> URI スキーマ
- Searchy - あなた自身のを作成、あるいは検索プラグインのリストを利用する
- searchplugins.net - OpenSearch プラグインの作成(日本語不可, POSTメソッド可) 作成された検索プラグインのリスト
- Ready2Search - OpenSearch プラグインの作成(日本語可, GETメソッドのみ) Ready2Searchでの検索プラグイン作成,カテゴリー別の検索設定インデックス