コマンドにメタデータを付与する

コマンドには、さらに作者やライセンス、ホームページ、ヘルプや説明などの情報を付与することができる。指定方法は以下のコードを見れば一目瞭然だろう。

CmdUtils.CreateCommand({
  name: "hello2", // コマンドの名前
  homepage: "http://www.ayuta.co.jp", // ホームページ
  author: { name: "Shumpei Shiraishi", email: "xxx@xxx.com"}, // 作者の情報
  contributors: ["Masakatsu Mouri"], // 貢献者の名前
  license: "MPL", // ライセンス
  description: "Greeting for you", // コマンドの簡単な説明
  help: "When you input your name, this command greets you!", // コマンドの説明

  takes: {"あなたのお名前": noun_arb_text},
  preview: function(previewBlock, name) {
    previewBlock.textContent = "こんにちは!" + name.text;
  },
  execute: function(name) {
    displayMessage("こんにちは!" + name.text);
  }
});

コマンドを配布する

こうしてコマンドが完成したら、拡張子jsのファイルに保存して、インターネットを介して配布することができる。

配布するには、以下のようなlinkタグを埋め込んだWebページを用意するだけだ。ただしUbiquityのドキュメントによると、jsファイルのmime typeは"application/x-javascript"でなくてはならない、とされている。

<html>
<head>
<link rel="commands" href="hello.js" name="Helloコマンド" />
</head>
<body>
コマンド配布テスト
</body>
</html>

上のHTMLファイルをWebサーバ上におき、ブラウザからアクセスすると、Webページの上部に「このコマンドを導入するか?」という旨のメッセージが表示される。

ここで「subscribe」を押すと、「信頼されていないWebサイトからのコマンド配布である」ことを警告するページにリダイレクトされる(バージョン0.1では、全てのWebサイトが「信頼されていない」という扱いになる)。このページの下部にあるボタンを押せば、コマンドをインストール可能だ。

まとめ

今回はUbiquityの紹介と簡単なコマンド作成、コマンド配布までを紹介した。この記事では紹介できなかったが、UbiquityにはJQueryも同梱されているため、Ajaxを用いてWeb APIのマッシュアップを行うようなコマンドを簡単に書くことができる。またコマンドの内部では、Firefoxアドオンと同じAPIを用いてFirefoxを制御できるため、簡易アドオン作成ツールとしても非常に威力を発揮しそうだ。

そしてUbiquityの操作性は、全く新しいWebブラウジング体験をもたらすことは間違いない。現時点でもこれほどの利便性を持ったUbiquityが、正式リリースされる頃にはどのように成長しているか、今から考えても楽しみで仕方ない。