hitode909の日記

趣味はマリンスポーツですの日記です

Google IME SKK サーバー 作った

Google CGI API for Japanese Input*1を使って変換するSKKサーバーを作った.
Googleのサーバーが高性能なので,通常のSKK辞書ではできないような変換ができる.以下は例.
手元の辞書にないが世の中にはあるような言葉を変換できる.
http://gyazo.com/aee15686613e5b9a7c288d77f8e90b3e.png
意味不明な言葉でも適当に変換できる.
http://gyazo.com/8ba6d1a3ab4fdc4a4901649dd2c1cf5b.png
一文まとめて変換できる.
http://gyazo.com/8d5a167fd6a5459b5023aae6790957df.png

インストール

gemになってるので,gem installでインストールできる.依存ライブラリは特にないはず.

% gem install google-ime-skk

追記,Ruby1.8ではgem install jsonする必要があった,Ruby1.9では不要.

実行

google-ime-skkという実行ファイルができるので実行するとサーバーが起動する.

% google-ime-skk

設定

AquaSKKでは,skkserv辞書として追加する.デフォルトで55100番のポートをlistenするので,localhost:55100とか書く.
http://gyazo.com/66a7110b4e851c9c725be753f1291a02.png

既知の問題

変換する度にGoogleにリクエストを投げるのでちょっとブロックする

ただし,中でキャッシュしているし,レスポンスは高速に返るので,そんなに気にならない

変換する度にGoogleにリクエストを投げるのでネットワークが不通な場合に変換できない,また,AquaSKKを使っているとOSがフリーズする

Rubyのプロセスが何かしたくらいではOSがフリーズしないと思うので,AquaSKKに変な入力を渡すとだめみたいだけど,よく分からなかった
(追記) このバグは直りました. Google IME SKK サーバーを更新 - hitode909のダイアリー

送り仮名付きの変換を正しく扱えない

たとえば,「飛び出す」を出したいとき,「とびだs」がサーバーへの入力として渡されるが,Googleのサーバーに「とびだs」とか渡しても,正しく変換してくれない.勝手にuをくっつけて,「とびだす」にしたら変換できるか,とか考えたけど,一概にできなさそうだったので,まだ対応できてない.

その他

SocialSKKというRubyで書かれたSKKサーバーがCodereposにあったので,それをパクってきて作った.
SocialSKKを継承して,変換部分のロジックだけオーバーロードすることによって実装できた.
http://coderepos.org/share/browser/lang/ruby/misc/socialskk/socialskk.rb

*1:[http://www.google.com/intl/ja/ime/cgiapi.html:title]