2008-03-16

Firefox Addon Operator のユーザスクリプトを作ってみました

Operator 0.8 は、(X)HTML コンテンツ中の Microformats というメタデータ記述を検出し、そのメタデータを使って、利用者にアクションを導くための Firefox Addon です。なお、Operator は、次期バージョンである Firefox 3 の標準機能になるといわれています。

例えば、このブログを Operator を組み込んだ Firefox 2 で表示すると、次のように、エントリの投稿者(連絡先)を検出し、その投稿者の情報を使って、様々なアクションを実行できます。



さらに、次のように、エントリのタグ(タグ空間)を検出し、そのタグを使って、様々なアクションを実行できます。



このブログ(Blogger)のコンテンツは、連絡先とタグ空間のメタデータ記述を含みますが、Operator はもっと多くの Microformats のメタデータ形式をサポートしていますので、Microformats 対応のサイトやサービスを試してみるとよいでしょう。

Operator のアクションは、あらかじめ用意されたものを使うほかにも、自らアクションを開発たり、第三者が開発したアクションを登録できます。そのアクションは、ユーザスクリプトと呼ばれ、JavaScript を使って記述します。

そこで、そのユーザスクリプトとやらを、さっそく開発してみました。

ここでは、タグ空間を題材としました。(X)HTML コンテンツから検出したタグから BLOGRANGER TG を開いて、そのタグに関連するタグとブログを探すというアクションを開発しました。

ユーザスクリプトは、次のとおりです。次のリンクからユーザスクリプトをダウンロードして、Operator のオプションダイアログから登録してください。Firefox を再起動してから使えるようになります。

operator.ranger.labs.goo.ne.jp.js

次のように、タグ空間から "BLOGRANGER TG でブログを探す" というアクションが実行できるようになります。



また、Operator のオプションを変更して、"BLOGRANGER TG でブログを探す" というアクションからタグ空間を選択する使い方もできます。



"BLOGRANGER TG でブログを探す" というアクションをクリックすると、次のように BLOGRANGER TG を表示します。このとき、仮想地図の中心が、タグ空間で選択したタグになります。



ユーザスクリプトのソースコードを簡単に説明しておきます。
SemanticActions.add('operator.ranger.labs.goo.ne.jp', {
description: 'BLOGRANGER TG \u3067\u30D6\u30ED\u30B0\u3092\u63A2\u3059',
shortDescription: 'BLOGRANGER TG',
icon: 'http://ranger.labs.goo.ne.jp/favicon.ico',
scope: {
semantic: {
tag : 'tag'
}
},
doAction: function(semanticObject) {
return 'http://ranger.labs.goo.ne.jp/TG/?MT=&tag='
+ encodeURIComponent(semanticObject.tag);
}
});
まずはじめに、ユーザスクリプトは JavaScript ファイルとして提供するのですが、そのファイル名は、他のユーザスクリプトと重ならない名前にしておくのが無難です。

というのは、ユーザスクリプトのファイルは、Operator のオプションダイアログから登録するのですが、そのとき、同じファイル名を登録しようとすると、上書きしてもよいですか?というメッセージが表示されるためです。ユーザスクリプトを上書きする(されない)ようにという心配りです。

登録したユーザスクリプトのファイルは、C:\Documents and Settings\nakajiman\Application Data\Mozilla\Firefox\Profiles (環境によって違います) といったように、Firefox が管理するディレクトリにコピーして保存されるので、ダウンロードしたオリジナルのファイルは削除しても大丈夫です。

JavaScript 自体はとってもシンプルです。前述のスクリーンキャプチャと比較するだけで、大部分の意味がわかると思いますので、いくつかポイントだけ説明しておきます。

SemanticActions.add メソッドの第1引数は、ユーザスクリプトの識別子を表すものです。ですので、この識別子は、他のユーザスクリプトと必ず異なるものを指定しなければなりません。

どのメタデータ形式を扱うのか、そのメタデータをどのようにアクションにマッピングするのかは、scope プロパティで決まります。

詳しくは Mike’s Musings » Operator User Scripts を見てください。Operator のユーザスクリプトの開発方法や実例がたくさん掲載されています。

Microformats: Empowering Your Markup for Web 2.0Microformats: Empowering Your Markup for Web 2.0
John Allsop

Prototype and Scriptaculous in Action Programming Collective Intelligence: Building Smart Web 2.0 Applications Bulletproof Ajax (Voices That Matter) Restful Web Services Visualizing Data

by G-Tools

0 件のコメント: