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。