郵便番号データ、郵便番号検索についてエントリをしてみようと思う。
この郵便番号データってやつは、様々なアプリで必要な場面が多い。
日本郵便が提供していてダウンロード可能であるが、市区町村統廃合等の理由により月1度なり最新化されるので、 ある時点で取得しても、そのうち最新データでなくなってしまう。
こういった問題の解決方法の一つとして、AjaxZip3 というプロダクトもあって メンテナンスも AjaxZip3 側でしていただけるので、 コレを使えば、郵便番号検索は凄く簡単に実装出来るし、常に最新のデータを参照出来る。
自分もこの AjaxZip3 は 5年前ぐらいから数回使っていて、 便利だなと思う。
しかし、個人的にただ一つ物足りないのは、郵便番号7ケタ入力しないと住所補完してくれない点。
Google 日本語入力 のようなサジェスト機能を用いて、インクリメンタル検索出来れば、もっと使いやすいなと個人的には思う。
AjaxZip3 が対応してくれれば嬉しいんだけど、たぶんこの先も対応されないと思うので、常に最新の郵便番号データを使いつつ(※1)、郵便番号検索する際はインクリメンタルに出来るようにする(※2)には、自分で実装するしか手立ては無さそう。
※1 はお決まりな方法やけど、実際に作ってみた。
※2 は別の機会に公開するかも。
[動作環境]
[補足・注意]
コピーして使っても構いませんが、一切責任持ちません。
動作テストはしてますが、cron 実行とかはまだ試していません。
[参考]
AjaxZip3
https://code.google.com/p/ajaxzip3/
AjaxZip3 設置サンプル(お試し出来ます)
http://ninkigumi.com/ajaxzip3/
郵便番号データダウンロード - 日本郵便
http://www.post.japanpost.jp/zipcode/download.html
この郵便番号データってやつは、様々なアプリで必要な場面が多い。
日本郵便が提供していてダウンロード可能であるが、市区町村統廃合等の理由により月1度なり最新化されるので、 ある時点で取得しても、そのうち最新データでなくなってしまう。
こういった問題の解決方法の一つとして、AjaxZip3 というプロダクトもあって メンテナンスも AjaxZip3 側でしていただけるので、 コレを使えば、郵便番号検索は凄く簡単に実装出来るし、常に最新のデータを参照出来る。
自分もこの AjaxZip3 は 5年前ぐらいから数回使っていて、 便利だなと思う。
しかし、個人的にただ一つ物足りないのは、郵便番号7ケタ入力しないと住所補完してくれない点。
Google 日本語入力 のようなサジェスト機能を用いて、インクリメンタル検索出来れば、もっと使いやすいなと個人的には思う。
AjaxZip3 が対応してくれれば嬉しいんだけど、たぶんこの先も対応されないと思うので、常に最新の郵便番号データを使いつつ(※1)、郵便番号検索する際はインクリメンタルに出来るようにする(※2)には、自分で実装するしか手立ては無さそう。
※1 はお決まりな方法やけど、実際に作ってみた。
※2 は別の機会に公開するかも。
[動作環境]
- CentOS release 6.5 (Final)
- MySQL 5.1.73
#!/bin/sh # ==================================================================== # $Id$ # # Description: # 郵政省郵便番号(zip_codes) を最新化します。 # # Usage: # ./renew_zipcodes.sh # # Date Author Description # -------------------------------------------------------------------- # 2014-10-05 Seiji Hojo 新規作成 # # ==================================================================== # 設定ファイル読み込み . "./config/renew_zipcodes.ini" # ==================================================================== # 前処理 # ==================================================================== # clean find ${TMP_DIR} \( -name "KEN_ALL.CSV" -o -name "ken_all.zip" \) -print0 | \ xargs -0 --no-run-if-empty rm 2>/dev/null # ==================================================================== # 本処理 # ==================================================================== # zip ファイル取得 wget ${ZIP_ALL_URL} -P ${TMP_DIR} # zip 解凍 cd ${TMP_DIR} unzip $(basename ${ZIP_ALL_URL}) # テーブル再作成 ${MYSQL_CMD} < ${SQL_DIR}"/drop-create-zipcodes.sql" # データ投入 ${MYSQL_CMD} <<SQL -- Shift_JIS ファイルを読み込む SET character_set_database=sjis; -- 郵政省郵便番号(zip_codes) に最新データ投入 LOAD DATA INFILE "/tmp/KEN_ALL.CSV" INTO TABLE zip_codes FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 0 LINES ; -- 「以下に掲載がない場合」は消す UPDATE zip_codes SET address = NULL WHERE address = '以下に掲載がない場合' ; SQL # ==================================================================== # 後処理 # ==================================================================== # clean find ${TMP_DIR} \( -name "KEN_ALL.CSV" -o -name "ken_all.zip" \) -print0 | \ xargs -0 --no-run-if-empty rm 2>/dev/null # end exit 0
[補足・注意]
コピーして使っても構いませんが、一切責任持ちません。
動作テストはしてますが、cron 実行とかはまだ試していません。
[参考]
AjaxZip3
https://code.google.com/p/ajaxzip3/
AjaxZip3 設置サンプル(お試し出来ます)
http://ninkigumi.com/ajaxzip3/
郵便番号データダウンロード - 日本郵便
http://www.post.japanpost.jp/zipcode/download.html