WebAPI(郵便番号から住所を取得する)を作ってみた。

WebAPI(郵便番号から住所を取得する)を作ってみた。

//どう実装するか?
Webフォームなんかによくある郵便番号を入力すると、自動的に都道府県&市区町村名が入るようなプログラミングを組もうと調べてみたら2通りのやり方があるらしい。
方法その1,郵便局のHP(http://www.post.japanpost.jp/zipcode/download.html)からCSVファイルでダウンロードして、検索プログラムを自分で作る。
自分で実装しないといけない上に、郵便番号は毎月新しいデータが出てくるらしいのでパス!

方法その2,外部のWebAPIを使って実装する。
そのWebサービスが終了したら使えなくなるが、メンテナンスの必要もないので楽。
ただ、SSL(https)に対応、商業フリー、ヨミガナ付きのWebサービスがなかったので、最終的には自分で作る事にしました。

//データベースの構造
郵便番号のデータは、12万3423件もあるので流石にCSVファイルのままで利用するのは無理!
なので、フリーのMySQLというデータベースを使う。テーブルの基本構造は、郵便局からダウンロードしたCSVファイルのまま。
(主キーとして、auto_incrementなidフィールドを追加)

//レコードの挿入
テーブルが出来たら、12万3423件の郵便番号データを打ち込む。ポイントはauto_incrementのフィールドは指定しない事!
あと、注意するのは一行目はヘッダー情報なので、ignore(無視)オプションを付ける必要がある(手動で一行目を削除してもいい)

コマンドライン接続が出来ない場合には、phpmyadminからインポートする。

//PHPコーディングについて
次は、処理を行うPHPのコーディング
今回のPHPでWebAPIを作る時に特筆すべきなのは、Ajax+JSONPでデータをやりとりするという事です。
と言っても、実装としては簡単で、配列データをjson_encode()でエンコードして、callback関数名を前につけるだけ!

//このWebAPIの使い方
https://example.co.jp/zip/zip.php?zipcode=1050001&callback=a

zipcode=の部分に知りたい郵便番号を入れる。
callback=にはコールバック関数(住所を取得した後に実行したい関数)を入れる。

戻り値は配列で、
arr[0]=郵便番号
arr[1]=都道府県名
arr[2]=市区名
arr[3]=町名
arr[4]=都道府県名カタカナ
arr[5]=市区名カタカナ
arr[6]=町名カタカナ
となります。

//HTMLファイルからの使い方
javascriptだけなので、ローカルでも実行できます。