ATOKダイレクトについていろいろ考えてみる

本来は、Wikiかなにかでまとめサイトができれば(というか作れば)いいのかもしれないけれど、とりあえずその前につらつらとまとまりのないことを書いておこう。

現状

ATOKダイレクトでメニューみたいなものを作ることは(荒削りながら)できました。メニュー定義XMLを食わせて、それを解釈させています。
簡単にいえば「あいうえお」という文字列を入力してATOKダイレクトプラグインに食わせると「検索/Googleブログ」のようなメニュー階層が順番に登場し、最下層の「ブログ」では「Googleで『あいうえお』という文字列でブログ検索してくれる」とういものとなります。*1

で、そのメニューを次のような(これはいい加減ですが)XMLによって定義しております。(あと、書いていませんが階層をひとつ上にあがる「キャンセル」メニューはデフォルトで出てくるようにしようと思っています。)

スキーマとか要素名は適当にその場で決めたものですが、ローカルでしか使わないのでそんなにまじめに考えなくてもいいかも。

<AtokPluginMenu>
  <MenuList>
    <Menu>
      <pattern type="regex">検索|Search</pattern>
      <comment>コメント</comment>
      <alternative type="url">URL...</alternative>
      <match>
        <MenuList>
          <Menu>
            <pattern type="string">Google</pattern>
            <comment>コメント</comment>
            <alternative type="url">URL...</alternative>
            <match>
              <MenuList>
                <Menu>
                  <pattern type="string">ブログ</pattern>
                  <comment>コメント</comment>
                  <alternative type="url">URL...</alternative>
                  <match>
                    <invoke type="localplugin" name="google_blog_search.rb"/>
                  </match>
                </Menu>
                ...
              </MenuList>
            </match>
          </Menu>
          <Menu>
            <pattern type="string">Yahoo!</pattern>
            ....
          </Menu>
        </MenuList>
      </match>
    </Menu>
    <Menu>
      <pattern type="string">RSS</pattern>
      <comment>コメント</comment>
      <alternative type="url">URL...</alternative>
      <match>
        <MenuList>
          <Menu>
            <pattern type="string">朝日新聞</pattern>
            <comment>コメント</comment>
            <alternative type="url">URL...</alternative>
            <match>
              <invoke type="rss" name="http://rss.asahi.com/f/asahi_newsheadlines"/>
            </match>
          </Menu>
        </MenuList>
      </match>
    </Menu>
    ...
  </MenuList>
</AtokPluginMenu>

まだ作ってないけど

まだ作っていませんが、メニューの最下層には「ローカルプラグイン」と(私が勝手に)名付けた、ローカルにあるRubyプラグイン*2の他に次のものをサポートしたいと思っています。type属性でこれを指定する。

後者に関しては、私が作るプラグインがメタプラグインとして動作するので、その下で動くプラグインは、そこから呼び出すことも可能とするということになります。

メニュー定義をいじるのは、XMLをいじることになりますが、これもプラグインからやるんでしょうかね。「管理」みたいなメニューを作って。でも、限界があると思うので別ツールというのがいいのかもしれません。

私は、ウェブ上の情報は「RSSに対応」ということでいいと思うんですよね。企業がやると、独自の「ATOKダイレクトウェブサービススキーマ」とかそういうのを独自に定義しはじめて「ウェブサービスはこのスキーマで情報を発信してください」とかやりはじめるので勘弁*3

要望

ATOKって、日本語入力ソフトだよね」という当り前のツッコミはとりあえずおいといて、「ATOKダイレクトでいろいろやりたい」という観点に特化すると、次のようなことを要望したいと思います。

  • ATOKダイレクト解説」の部分にHTMLを出したい
  • どんなに少なくともコピペしたい
  • 候補文字列に多彩な装飾などをしたい(例えば、背景色、前景色、強調など)
  • 候補文字列先頭にアイコン画像を出せるようにしたい

*1:ちなみに、Googleブログ検索のプラグインを私は実装していません。これは単なる例です。

*2:いや、別にPerlでもいいけどさ。私はPerlも好きですよ。Pythonとかもここで対応することもできますが…。

*3:いや、「RSSに対応」だったら成功するのかっていうと、それはそれで微妙ですが、その場合の失敗の原因はRSSのせいじゃなくて、ATOKダイレクト自体の限界だと思うな。