Google日本語入力で日本語入力

正確には「Google CGI API for Japanese Input」を使って、かな漢字変換ローマ字入力をシミュレートしたもの。


このAPIが発表されたときに思いついたのだけれども、結果を受け取るのがjsdo.itでは難しいので保留してた。ところがjsonpも非公式だけど使えるということなので(参考:http://www.google.com/buzz/112245923840161001043/Sd1YxcNoCoU/Google-%E6%97%A5%E6%9C%AC%E8%AA%9E%E5%85%A5%E5%8A%9B-Google-CGI-API-for)ちょっとやってみた。

まず、ローマ字入力のシミュレート。これはローマ字のテーブルを作っておいて、ひらがなの文からリストを生成しておいて、順次表示するだけ。例えば、「わがはい」ならこんなリストができる。

w
わ
わg
わが
わがh
わがは
わがはい

続いて、かな漢字変換。これはGoogleAPIの方で文節区切りなんかもうまくやってくれる(明示的にする方法もあるけど)ので、適当に文を投げるだけ。ただし、一度に送ることができる文字数には限界があるっぽいので、てきとうに区切ってわたすようにした。

APIからの結果は配列で得られるので、そこから候補を表示しつつ、確定させる。ただ、確定させるためには、変換結果を持っておいて比較する必要があるし、変換候補に一致するものが見つからない場合もあるので、結構面倒くさい。結局、indexOf使って適当に検索してやることにした。なので、同じような単語が続く文ではうまく動かないと思う。

デコレーションはspan要素を使ってクラスを切り替える形で。スタイルシートをいじればATOK風の配色とかにできるようにしたつもり。

最大の問題は、あらかじめ文章をひらがなとかな漢字で用意しておいて、さらに適当なところで切っておかないといけない点。ここはかな漢字の文からひらがなに変換+文節区切りをして自動生成するようにすれば手間がだいぶ省けるはず。Yahooの日本語関連のAPIを使えればなんとかなりそうだけれども、jsonpに対応してないっぽいので面倒くさくなってやめた。

というか今見たら変換がうまくいってないところがちらほら。あとで時間があったら直そう。