PySocialSKKServ を試してみました
引き続き Social IME がらみの話題です。
Social IME を skk サーバに見立てるものとしては
- Ruby による実装 by id:shunirr さん
- Python による実装 by kobun さん
- Perl による実装 by id:antipop さん
があるようです(他にもあるかも)。
なにか面白い発見があるかもと思い、server completion に対応しているという PySocialSKKServ を試してみました。
Debian で動かすので http://sourceforge.jp/projects/pysocialskkserv/releases?package_id=9074 から最新版の 0.5 をダウンロードします。
む、ファイル名が pysosicalskkserv.zip になってますね。
適当にディレクトリを掘ってその下で展開(でないとカレントにファイルがばらまかれちゃうので)。
まずはいきなり起動してみます。
% ./pysocialskkserv.py ./pysocialskkserv.py Traceback (most recent call last): File "./pysocialskkserv.py", line 660, in <module> main() File "./pysocialskkserv.py", line 630, in main (options, args) = parseoptions() File "./pysocialskkserv.py", line 98, in parseoptions d = conf.getint('server', 'port') File "/usr/lib/python2.5/ConfigParser.py", line 321, in getint return self._get(section, int, option) File "/usr/lib/python2.5/ConfigParser.py", line 318, in _get return conv(self.get(section, option)) File "/usr/lib/python2.5/ConfigParser.py", line 511, in get raise NoSectionError(section) ConfigParser.NoSectionError: No section: 'server'
Config がおかしいと言われます。シュア。なにも作っていませんからね。お試しなので起動オプションで指定するとしましょう。-h をつけてオプション一覧を見ます。ショウミーオプションヘルプミー。
% ./pysocialskkserv.py -h ./pysocialskkserv.py Traceback (most recent call last): (略) ConfigParser.NoSectionError: No section: 'server'
うーん。設定ファイルは pysocialskkserv.cfg という名前のようなので作ってみます。何書けばいいのか判らないので中身は空で。だってヘルプ見たいだけですし。ヘルプミーアゲイン。
% touch pysocialskkserv.cfg % ./pysocialskkserv.py -h ./pysocialskkserv.py Traceback (most recent call last): (略) ConfigParser.NoSectionError: No section: 'server'
…頑固です。ここは素直に設定ファイルを書くことにしましょう。
(愚直にトライ&エラーでやったので全略)
どうやらこのような設定ファイルでよいようです。
[server] port=1183 debug=false pidfile=/home/hoge/var/run/pysocialskkserv.pid daemon=true [log] filelog=true syslog=false
% ./pysocialskkserv.py -h ./pysocialskkserv.py Usage: pysocialskkserv.py [options] Options: -h, --help show this help message and exit -p PORT, --port=PORT サーバー待ち受けポート番号 -d, --debug エラーログへデバッグ情報を記録する -f, --filelog ファイルへログを記録する -r RUN, --pidfile=RUN プロセス番号保存ファイル -s, --syslog syslogへログを記録する
ようやくヘルプが見れたやったー…ってなんか本末転倒のような気がしますが、とりあえず起動が出来るようになりました。
早速 Emacs 上の SKK から使ってみます。ノーマルな変換は問題なく動作しますが、目的の server completion がうまく補完してくれないようです。
以前やったように PySocialSKKServ さんと直接話をしてみましょう。
予測変換の候補を検索
% echo "4なすび~ "|nkf -e| netcat -q 2 skkserver 1183|nkf -w 1 茄子 茄子の 茄子と 茄子、 ナスビ 茄子を 茄子は 茄子が 茄子・ 茄子」 茄子( 茄子。 茄子アンダルシアの夏 茄子に 茄子アンダルシアの 茄子アンダルシア 茄子も 茄子とトマト 茄子の揚げ 茄子で 茄子さん 茄子や
ひらがなだけの予測変換候補を検索
% echo "4そし "|nkf -e| netcat -q 2 skkserver 1183|nkf -w 1 そして そしたら そしてその そしてこの そしてそれ そしてまた そしてお
む。これは。
普通に検索したときの返答
% echo "1なすび "|nkf -e| netcat -q 2 skkserver 1183|nkf -w 1/茄子/なすび/ナスビ/
server completion の場合は各候補が / でなく SPC 区切りで返ってきてしまっている、ということのようです。
まとめると、
- アーカイブのファイル名が typo ってます
- アーカイブはディレクトリごと固めてもらえると嬉しいな
- 設定ファイルが存在しなくてもヘルプは見れるほうが便利かと
- 設定ファイルのサンプルが同梱されているとありがたい
- 予測変換の場合の区切り文字が不正みたい
[追記: 2009-07-11]
「区切り文字はスペースで正解」というコメントを頂きました。感謝。
また、誤った指摘をしてしまい大変失礼致しました > kobun さんさて、そうすると server completion がうまくいかなかった原因は別にある訳ですが、暇があるときに調べてみます。
といった感じでした。まる。
予測する SKK
GW の習作として、Social IME の予測変換 API を利用した「予測する SKK」を作ってみました。
Social IME を skk サーバに見立てるものは既にあるようですが、それらとは違ったアプローチ。
- 直接 Social IME とお喋りする
- ターゲットはかなモードでの予測機能
で、使ってみた感想ですが、やっぱり反応がワンテンポ遅れますね。キャッシュをファイルに保存する機能もつけたので、一度索いたものはなんとかなるんですけど。
作ったばかりであまりテストできていませんが、暫く触ることが出来そうにないので取り敢えずここに転がしておきます。よろしければ遊んでみて下さい。
[追記: 2009-05-09]
バグ取りとかオプション追加とかでちょっとだけ変更しました。
※注: キャッシュファイルへの格納条件を(無条件に格納するように)変更しました。気になる方は申し訳ありませんが以前のキャッシュファイルを一旦削除下さい。
[追記: 2009-07-11]
また触れなくなるので、ちょっと機能追加した現状版をアップロードしておきます。
[Emacs][Jinnavi] Jinnavi
コメントがうまく投稿できなかったのでこちらで。
Jinnavi (人狼BBS Navigator for Emacs)
http://dundubhi.blog118.fc2.com/blog-entry-117.html
もし実用的なら強力かも(笑)。ログ見る専用として、「仕事してると見せかけて人狼見てる」的な使い方もアリ?
あれは長いこと放置しちゃってて動かなくなってますね…。ごめんなさい。人狼から離れて久しいので、直す予定もいまのところなかったりします。久々にBBSを見に行ったら知らないキャラとか増えてるし…。
AZIK+英語キーボードで促音の送り仮名
SKK+AZIK+英語キーボードで「使った」など、送り仮名が「っ」から始まる単語に変換したい場合に、「Tuka;ta」と入力すると、「つかった」とそのまま表示されてしまっていた。
http://cocoa.jpn.org/archives/54
その場合は、「TukaT;ta」と入力すると、正しく変換される。
これで、今までより5%ほど入力効率が上がる(当社比)かと。
普通(?)に「Tuka:ta」だと8%ほど上がるような。
縦型インライン表示の不具合
これがまた特定の場面で上手くいかないのさ.
主に以下のような場合.
ex ex ex[EOB][EOB]は, ファイルの終わり. End of buffer このとき,一番したのexの補完表示は上手くいくけど, その上や, その1つ上なんかは駄目なんだよね.
http://d.hatena.ne.jp/khiker/20080101
こちらを読んで不吉な予感がしたので SKK でも試してみる。あー、ホントだ、駄目じゃん。
viper を常用してると上記のような位置に EOB がくることは滅多にないので気付かなかった…などととりあえず言い訳しておいて。
えーと、これでいいんじゃなかろうか。