PySocialSKKServ を試してみました

引き続き Social IME がらみの話題です。

Social IMEskk サーバに見立てるものとしては

があるようです(他にもあるかも)。

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

といった感じでした。まる。