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 がうまくいかなかった原因は別にある訳ですが、暇があるときに調べてみます。
といった感じでした。まる。