要約
郵政省が提供している7桁郵便番号のCSVファイルをWnn4.2 (jserver) の辞書に変換し, mule, jvimなどWnnのクライアントで郵便番号変換できるようにする.
Linux 2.x (Slackware 3.x + JE 0.9) を前提にしてますが, まあだいたいのUNIXで同様にできるでしょう.
いるもの
- perl (4.039以降なら大丈夫でしょう. jperlじゃないほうがいいと思う. なんとなく.)
- nkf (バージョン1.5以降, -Zとか-Xオプションがあるやつ. nkf -v で確認してね.)
7桁郵便番号のデータは, 郵政省のダウンロードサービスから持ってこれます. 全国一括データ(ken_all.lzh)を取ってきてください. なんらかのLHA系解凍手段も必要でしょう.
あとはhttps://bitbucket.org/mrmt/wnn7zip/srcにあるMakefileとcsv2dic
インストール
- 必要なら,
Makefile
の設定を変更します.NKF, WNNBINDIR, WNNDICDIR
の変更が必要な環境があるかもしれません. - perlが
/usr/bin/perl
じゃない場合は, csv2dic の1行め(shell bang)も直してください. - 郵政省からとってきたken_all.lzhを解凍し, 得られたken_all.csvをこのMakefile, csv2dicと同じディレクトリに置きます.
- makeする.
- スーパユーザになってmake installする.
/usr/local/lib/wnn/ja_JP/jserverrc
を編集します.-
readfile zip/7zip1.dic readfile zip/7zip2.dic readfile zip/7zip3.dic
を追加. - /usr/local/bin/Wnn4/wnnkillでjserverを殺す. あるいは, 誰かがnemacs/muleを使ってようがお構いなしにjserverをkillする
- make touchする
- jserverを起動. 以下のように郵便番号辞書が読み込まれていればok.
Nihongo Multi Client Server (4.20) Reading /usr/local/lib/wnn/ja_JP/dic/pubdic/kihon.dic Fid = 1 Reading /usr/local/lib/wnn/ja_JP/dic/pubdic/setsuji.dic Fid = 2 Reading /usr/local/lib/wnn/ja_JP/dic/pubdic/jinmei.dic Fid = 3 Reading /usr/local/lib/wnn/ja_JP/dic/pubdic/chimei.dic Fid = 4 Reading /usr/local/lib/wnn/ja_JP/dic/pubdic/koyuu.dic Fid = 5 Reading /usr/local/lib/wnn/ja_JP/dic/pubdic/special.dic Fid = 6 Reading /usr/local/lib/wnn/ja_JP/dic/pubdic/computer.dic Fid = 7 Reading /usr/local/lib/wnn/ja_JP/dic/pubdic/bio.dic Fid = 8 Reading /usr/local/lib/wnn/ja_JP/dic/pubdic/symbol.dic Fid = 9 Reading /usr/local/lib/wnn/ja_JP/dic/pubdic/tankan.dic Fid = 10 Reading /usr/local/lib/wnn/ja_JP/dic/gerodic/g-jinmei.dic Fid = 11 Reading /usr/local/lib/wnn/ja_JP/dic/wnncons/tankan2.dic Fid = 12 Reading /usr/local/lib/wnn/ja_JP/dic/wnncons/tankan3.dic Fid = 13 Reading /usr/local/lib/wnn/ja_JP/dic/zip/7zip1.dic Fid = 14 Reading /usr/local/lib/wnn/ja_JP/dic/zip/7zip2.dic Fid = 15 Reading /usr/local/lib/wnn/ja_JP/dic/zip/7zip3.dic Fid = 16 Reading /usr/local/lib/wnn/ja_JP/dic/misc/supplement.dic Fid = 17 Finished Reading Files
can't bind inet socket
とか文句いわれたら, まだjserverが生き残っていないか,/tmp/jd_sockV4
が残っていないかをチェックする.
mule の設定
emacs 19.28ベースのmule 2.3を例に取ると, /usr/local/lib/mule/19.28/lisp/eggrc-wnn
の適切な場所に (wnn4-jserver-setup
をdefun
している中とか) 以下を追加. mule 再起動.
(add-wnn-dict "zip/7zip1.dic" (concat wnn-usr-dic-dir "/7zip1.h") 2 nil t) (add-wnn-dict "zip/7zip2.dic" (concat wnn-usr-dic-dir "/7zip2.h") 2 nil t) (add-wnn-dict "zip/7zip3.dic" (concat wnn-usr-dic-dir "/7zip3.h") 2 nil t)
バグ
141-0001を変換して東京都北品川(5, 6丁目)が出てくるのはいかにも頭がわるすぎる. csv2dicでちょびっとパーズして辞書エントリをナニしてやろう.
でも, ちゃんとやろうとすると, 「以下に掲載がない場合」なんてのもあって面倒だよ.
ぼくは現状のままでとりあえずいいや.