郵便番号辞書

郵便番号から住所に変換するための辞書です。

更新方法

Anthy の場合の例

  1. 以下のスクリプトを $HOME/bin/ に EUC-JP で保存( a.、b. の行は必要に応じてどちらかをコメントアウトするか、両方コメントアウトするかして下さい)
    1. #!/bin/sh
    2. LANG=ja_JP.eucJP; export LANG
    3. ANTHY_CONF="/etc/anthy-conf"
    4. eval `egrep '^prefix|^ZIPDICT_EUC' "${ANTHY_CONF}" | sed 's/ /=/'`
    5. DICT_DIR=`dirname "${ZIPDICT_EUC}"`
    6. cd "${DICT_DIR}" || exit
    7. # -N: リモートのファイルが更新されてなければ落とさない
    8. LANG=C wget -N http://alt-cannadic.sourceforge.jp/zipdic/zipcode.t.bz2
    9. if test zipcode.t -nt zipcode.t.bz2; then
    10. echo "zipcode.t.bz2 has not been updated." 1>&2
    11. exit
    12. fi
    13. bzcat zipcode.t.bz2 |\
    14. # a.) ↓全角英数字の候補が不要な場合
    15. gawk '$3 !~ /[0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]/{ print }' |\
    16. # b.) ↓半角英数字の候補が不要な場合
    17. #gawk '$3 !~ /[0-9a-zA-Z]/{ print }' |\
    18. cat > "${ZIPDICT_EUC}"
    ※実行前に「anthy-conf」の場所を確認し、必要なら "ANTHY_CONF" の部分を修正して下さい。
  2. 上記スクリプトに実行権限をつける(ファイル名を update_zipdic.sh にした場合の例)
    $ chmod a+x $HOME/bin/update_zipdic.sh
    
  3. 実行して郵便番号辞書を更新
    $ sudo update_zipdic.sh
    
    何かを再起動したり、再ログインしたりする必要はありません。 「0000000」を変換してみて、候補の「郵便番号辞書:201?年?月版」が現在の年月と同じなら更新成功です
  4. cron で毎月自動更新する場合
    1. /etc/sudoers を編集して、スーパーユーザー権限かつパスワードなしで実行できるようにする
      $ sudo /usr/sbin/visudo
      
      (/etc/sudoers の中身)
      ...
      # User privilege specification
      root    ALL=(ALL) ALL
      vagus   ALL=NOPASSWD: /home/vagus/bin/update_zipdic.sh  ← 追加("vagus" の部分は自分のものに変える)
      ...
      
      
    2. cron に登録
      $ crontab -e
      
      (crontab の中身)
      ...
      # 分 時 日 月 曜日  コマンド
      # 例: 毎月1日と3日の午前0時5分に実行(3日は元ファイルの更新が遅れた時のための保険)
      5 0 1,3 * * sudo $HOME/bin/update_zipdic.sh     ← 追加
      ...
      
      

…こんな感じでどうでしょうかね?