Wnn+mule/jvim で7桁郵便番号を変換する

要約

郵政省が提供している7桁郵便番号の CSV ファイルを Wnn4.2 (jserver) の辞書に変換し, mule, jvim など Wnn のクライアントで郵便番号変換できるようにする.

Linux 2.x (Slackware 3.x + JE 0.9) を前提にしてますが, まあだいたいの UNIX で同様にできるでしょう.

無保証

ちゃんと動いて誰かが便利になるといいなと思ったがゆえにここにありますが, 私および私の所属組織, 私の家内や息子は明示的暗黙的を問わずいかなる動作保証もいたしません.
すべてあなたご自身の責任で行ってください.

いるもの

7桁郵便番号のデータは, 郵政省の ダウンロードサービス から持ってこれます.
全国一括データ(ken_all.lzh)を取ってきてください.
なんらかの LHA 系解凍手段も必要でしょう.

あとはここにある Makefilecsv2dic.
EUC のまま保存してね.

インストール

  1. 必要なら, Makefile の設定を変更します.
    NKF, WNNBINDIR, WNNDICDIR の変更が必要な環境があるかもしれません.
  2. perl が /usr/bin/perl じゃない場合は, csv2dic の1行め(shell bang)も直してください.
  3. 郵政省からとってきた ken_all.lzh を解凍し, 得られた ken_all.csv をこの Makefile, csv2dic と同じディレクトリに置きます.
  4. make する.
  5. スーパユーザになって make install する.
  6. /usr/local/lib/wnn/ja_JP/jserverrc を編集します.
    readfile zip/7zip1.dic
    readfile zip/7zip2.dic
    readfile zip/7zip3.dic
    を追加.
  7. /usr/local/bin/Wnn4/wnnkill で jserver を殺す.
    あるいは, 誰かが nemacs/mule を使ってようがお構いなしに jserver を kill する :-)
  8. make touch する
  9. 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-setupdefun している中とか)
以下を追加. 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 でちょびっとパーズして辞書エントリをナニしてやろう.
でも, ちゃんとやろうとすると, 「以下に掲載がない場合」なんてのもあって面倒だよ.
ぼくは現状のままでとりあえずいいや.

morimoto@mrmt.net

適宜もくじへ戻る/飛ぶ
$Id: index.html,v 1.5 2006-03-25 14:07:15 morimoto Exp $