トップページ

2007年06月01日

Firefox 2/IE7用、OpenSearch検索プラグイン(検索プロバイダ)作成ツール

検索バー

Firefox 2やInternet Explorer 7などの検索バーに検索サイトを追加するOpenSearch形式のプラグインを、極力簡単に作れるようにしてみました、というものです。要Cookie+JavaScript。実は随分前に作って、しかし腑に落ちないまま放置していたものを引っ張り出してきて、全面改装。

» OpenSearch検索プラグイン(検索プロバイダ)作成ツール

ものは試し。上のリンク先で、ページの右側の「ブックマークレット」欄にある、「検索プラグインの作成」というリンクを、マウスの右クリックとかでブックマーク(お気に入り)やツールバーに登録してみてくださいな。

で、例えばGoogleとかで、「TEST」を検索した結果のページでそのブックマークレットを選択してみてください。下図のような表示が出てきたら正解。以上の操作がメンドクセーひとはここをクリック(笑)。

OpenSearch検索プラグイン(検索プロバイダ)作成ツール

「検索プラグインを追加」ボタンをクリックすると、確認ダイアログが表示され、プラグインを追加できるわけですが、お気に召さない項目があれば適宜編集していただければと存じます。各項目の説明は、その入力欄をクリックすると説明が出てくる筈。編集後には「確認・更新」ボタンをクリックしてください。

「名前」は、ウェブブラウザはこれでプラグインを管理してるので、既に登録済みのプラグインと同じ名前は付けられません。

「アイコン」は、Firefox 2の検索バーに表示されるものです(IE7では利用されません)。アイコンはウェブサイトのFaviconを自動検出しますが、Faviconがないサイトや、自分好みのアイコンを使いたい場合は、画像をアップロードすることもできます。画像がJPEGやGIF、PNGなら、自動的に画像の中央部を切り出してアイコンサイズに縮小するので、あらかじめアイコンサイズの画像を用意しておく必要もありません。

なお、ここで検索プラグインを作成できるのは、GETメソッドの検索フォームのみです。つまり、検索結果のページのアドレスに、(検索キーワードである)「TEST」という文字が含まれないものは作成できません(POSTメソッドによる検索プラグインは、OpenSearchの拡張仕様のひとつとして用意されているParameter要素を使って作成できますが、IE7はこれに対応していないためPOSTメソッドのプラグインは利用できません)。

いまでは多くのウェブサイトがオフィシャルな検索プラグインを提供していますが、提供されてない(提供しそうにもない)サイトや、ありそうでなさそうなサイトや、あるいは提供されてるけど名前やアイコンが気に入らない類は、自分で(勝手に)作っちゃえばいんじゃないかと。以下は、現時点でオフィシャルが存在しないものをテキトーに見繕ってみた例。

検索プラグインを自分のサイトの利用者に提供する

さて、検索プラグインは他人様のウェブサイトのもののみならず、自前のサイトに検索機能があれば、そのプラグインも同様に作れるわけですが。自前のサイトのプラグインを作ったらば、サイトのHTMLに手を加えて、サイトの利用者がそれを登録できる仕組みを用意できます(ちなみにサイトに検索機能がなくても、例えばGoogleのサイト検索などを利用する手もアリ)。

検索プラグインの実態は、OpenSearch description documentという形式のXMLファイルです。作成ツールのページにある「XMLを表示」ボタンをクリックすると、このXMLデータが表示されるので、まずはそのソースを保存して自鯖にアップロードしといてください。

で、以下のようなLINK要素が書かれたページを対応のウェブブラウザで開くと検索プラグインが検出され、検索バーのメニューからプラグインを登録できるようになります(titleはプラグインの名前と一致させてください)。

<link
  rel="search"
  type="application/opensearchdescription+xml"
  href="XMLファイルのフルパスURL"
  title="検索プラグインの名前"
/>

リンクをクリックするなどして検索プラグインを追加させるには、例えば以下のような按配で、JavaScriptのwindow.external.AddSearchProvider()メソッドを使用します。

<script type="text/javascript">
function myAddSearchProvider()
{
  if (typeof(window.external) == "undefined"
    || typeof(window.external.AddSearchProvider) == "undefined") {
    alert("未対応!");
  } else {
    try {
      window.external.AddSearchProvider("XMLファイルのフルパスURL");
    } catch (e) {
      alert("エラー!" + e.message);
    }
  }
}
</script>

<p><a href="javascript:myAddSearchProvider()">検索プラグイン追加</a></p>

なお、ここで作成される検索プラグインは、(「極力簡単に作れるように」という本来の趣旨に則って)最低限の要素しか備えてません。追加の要素を御所望の場合は、XMLファイルをテキストエディタとかで自力で編集してやってください。OpenSearch description documentの詳細は、以下に参考として挙げてる各ページでどうぞ。

参考

同種のサービス

余談

もともとマイクロソフトの独自実装だったおかげで、Faviconの実態ってかなり出鱈目な模様で(以下の例は、どれも著名なIT系ウェブサイトのものだったりする罠)。

  • Content-Typeヘッダがtext/plain; charset=shift_jis(実態はICO形式)
  • Content-Typeヘッダがtext/plain; charset=UTF-8(実態はimage/png)
  • Content-Typeヘッダはimage/x-iconなんだけど実態はimage/bmp
  • Content-Typeヘッダはimage/x-iconで実態もICO形式なんだけど、画像データは巨大なサイズのものが1ヶだけ

で、Operaタソは(少なくとも現時点で最新のバージョン9.21では)画像をdataスキームで指定する場合、Content-Typeが間違ってるとちゃんと表示してくれないので(ちなみにFirefox 2はこれを無視する)、正しいContent-Typeを解析して指定しとく必要があるですよマンドクセー。しかしPHP標準のイメージ関数はICO形式には対応しておらず、HTTPヘッダもあてにならない現状では、.icoを名乗るファイルがホントにICO形式なのか否かの判断は、自力でやらざるを得ないのですが、以下はその参考になったページでございます。謝々。

さらにちなみにOperaタソは、image/vnd.microsoft.iconを正しいContent-Typeとは認めてくれてないので、ICO形式のContent-Typeはimage/x-iconにしとく必要があったりもします。

Category: ウェブ制作
Posted 2007年06月01日 19:22

トラックバック

このエントリーのトラックバックURL:
http://www.rcdtokyo.com/mt/mt-rcdtokyo5428-tb.cgi/821

コメント

はじめまして。
突然のコメント失礼いたします。

この度、検索プラグインの作成・掲載を行うポータルサイトとして、

「検索プラグイン・ナビ」

というサイトをオープンいたしました。

ブラウザの検索窓にあなたのお気に入りのサイトを組み込むことができるようになり、
皆様インターネット環境をより快適なものにすることができます。

一発検索が可能になる詳細は、

検索プラグインとは?
http://search-plugin.com/toha.php

検索プラグイン・ナビ
http://search-plugin.com/

どうぞよろしくお願いいたします。m_ _m

Posted by 検索プラグイン・ナビさん at 2007/12/20 02:11

コメントをどうぞ



保存しますか?


Aoaka Style Valid Aoaka