短期集中連載 速報!Ubiquityのポテンシャルを探れ

第3回 Ubiquityでオリジナルコマンドを作ろう(応用編)

この記事を読むのに必要な時間:およそ 3.5 分

今回は,前回に引き続き,実際に自分のコマンドを作ってみます。サンプルとしてgotoコマンドを例に挙げ,応用して利用する方法について紹介します。

gotoコマンド - シンプル版

開きたいサイトが明確にわかっている場合,ブックマークやポータルサイト,ソーシャルブックマークは操作性が遅い場合があります。ブックマークツールバーに登録しておいてボタン1つで飛ぶようにしておいても,対象が増えてくるとスクロール操作が必要になるなど煩雑です。コマンドとキーワードで特定のサイトにジャンプできるようになると便利です。

ここでは,Ubiquityを使ってキーワードから特定のURLにジャンプするコマンド「goto」を作成しながら,Ubiquityコマンドの作成方法や,より実用的な実装方法を説明します。

リスト1 gotoコマンド - シンプル版

CmdUtils.CreateCommand({
  name: "goto",
  takes: { "argv": noun_arb_text },

  author: { name: "Daichi GOTO" },
  license: "BSD",

  execute: function( argv ) {
    var href = "";

    switch ( argv.text ) {
      case "reader":
        href = "http://www.google.com/reader/";
        break;
      case "mixi":
        href = "http://mixi.jp/";
        break;
      case "twitter":
        href = "http://twitter.com/home";
        break;
      case "calendar":
        href = "http://www.google.com/calendar/";
        break;
      case "gmail":
        href = "https://mail.google.com/mail/";
        break;
      case "home":
        href = "http://www.google.com/ig";
        break;
      default:
        href = "http://www.google.com/ig";
        break;
    }

    displayMessage( "going to " + href );
    Utils.openUrlInBrowser( href );
  },
});

引数に任意の文字列を指定し,execute: function()で引数をチェックします。特定のキーワードに一致した場合はdisplayMessage()でメッセージを出力してから,対応するURLをUtils.openUrlInBrowser()で開きます。

たとえば「goto reader」でGoogle Readerにジャンプし,「goto mixi」でMixiにジャンプします。最低限の機能としてはこれで十分であるため,あとはキーワードとURLを追加していくことでより多くのサイトにジャンプできるようになります。

gotoコマンド - カスタム名詞型で補完入力

Ubiquityのコマンド入力を効率的に実施するには補完機能の活用が欠かせません。先ほど作成したgotoコマンドに,静的なカスタム名詞型を使って入力補完機能を実施してみます。任意の文字列名詞型(noun_arb_text)だったところをカスタム名詞型で置き換えます。

リスト2 gotoコマンド - カスタム名詞型で入力補完機能を有効化

noun_type_sitekey = new CmdUtils.NounType(
  "sitekey",
  [ "reader", "mixi", "twitter", "calendar", "gmail", "home" ]
);

CmdUtils.CreateCommand({
  name: "goto",
  takes: { "argv": noun_type_sitekey },

  author: { name: "Daichi GOTO" },
  license: "BSD",

  execute: function( argv ) {
    var href = "";

    switch ( argv.text ) {
      case "reader":
        href = "http://www.google.com/reader/";
        break;
      case "mixi":
        href = "http://mixi.jp/";
        break;
      case "twitter":
        href = "http://twitter.com/home";
        break;
      case "calendar":
        href = "http://www.google.com/calendar/";
        break;
      case "gmail":
        href = "https://mail.google.com/mail/";
        break;
      case "home":
        href = "http://www.google.com/ig";
        break;
    }

    displayMessage( "going to " + href );
    Utils.openUrlInBrowser( href );
  },
});

図1 入力候補が表示される

図1 入力候補が表示される

これでキーワードの入力補完が有効になります。またカスタム名詞型に含まれていないキーワードが指定された場合には,gotoコマンドで処理する内容ではないとしてデフォルトの検索エンジンを使った検索へ処理が切り替わります。

バックナンバー

短期集中連載 速報!Ubiquityのポテンシャルを探れ

コメント

コメントの記入