目次
名称
JamPack Public DB 郵便番号データベース
概要
郵便事業株式会社が提供する郵便番号データをデータベース化してみました。
廃止データや事業所個別郵便番号が収録されていたり、郵便事業株式会社データ仕様を一般化していたりしています。
また、そのデータベースをHTTPでアクセスできるよう、API化しています。
情報源
毎月1日頃に以下のデータを元に更新を行っています。
- 郵便事業株式会社 郵便番号データ http://www.post.japanpost.jp/zipcode/download.html
- 住所の郵便番号(廃止番号データ含む)
- 事業所の個別郵便番号(廃止番号データ含む)
このDBの特徴
郵便事業株式会社 郵便番号データと異なる点
- 住所の郵便番号と事業所の個別郵便番号データを一元化して収録している。
☆住所と事業所それぞれのデータを合併する必要がありません。 - 差分データを収録している。
廃止された郵便番号や変更されたデータ(住所は2007/10/29、事業所は2007/02/27から)を含んでいる。
☆廃止されている郵便番号や住所も検索できるので、それら訂正するためにも利用できます。
☆一般に公開されていない古いデータも含んでいます。 - 分割データが統合されて収録されている。
郵便事業株式会社のデータでは長すぎる町域は2レコード以上に分割されていることがある。それらを1レコードに統合しています。
☆たとえば郵便番号「9218046」は町域が「大桑町(ア、イ、ヰ、ウ、上野、ヲ、オ乙、鐘搗山、上川原、上猫下、」「ク、ケ、御所谷、小寺山、シ、下上野、下西欠、平、チ、ツ乙、ツ丙、テ、ト、」「中上野、中尾山、中平、中ノ大平、西ノ山、猫シタイ、ノ、ハ、開、」「法師山、坊山、マ、鱒川淵、ム、元末、元涌波庚、ヤ、リ、ル、レ乙、」「レ甲、ロ乙、ロ甲、和)」の5件に分割されているが、これを1件に統合しているため、正確な形式で住所が収録されています。 - 全国地方公共団体コードをチェックデジット(CD)1桁を含めた6桁で収録している。
☆総務省全国地方公共団体コード表(JPDBではgovcode)と併用できます。
注意事項・利用許諾
本データベースの内容は自動処理で作成しております。目視確認や実在する住所との照合は行っておらず、間違い・不足・重複が含まれていることがあります。
クリティカルな業務には利用をお勧めしません。また、責任を負うことはできません。
なお、データ不備を見つけた場合はお知らせいただけると幸いです。テストしていただけるともっと幸いです。
毎月1日に更新する予定ですが、事情により遅れることがあります。ご了承ください。
(郵便事業株式会社は毎月月末頃に更新しているようです)
事情により運用を取りやめることがあります。
データの著作権は郵便事業株式会社に属します。データベースとしての著作権はすながわひろゆきが所有します。
(郵便事業株式会社は著作権を主張しないと仰っていますが、こちらとしては郵便事業株式会社を推しておきます。)
特に利用上の制限は設けませんが、データの改変は提供の趣旨を損ねるため望ましくないと思います。そのままの形でお召し上がりください。
利用・転載・紹介はご自由にして頂いてかまいません。良ければご報告頂けると幸いです。よければここで紹介させてください。
以下のページも参考情報としてご一読頂くと幸いです。
- 「郵政事業株式会社(日本郵政)郵便番号データについて、思ったこととか分かったこととか」
(https://jamfunk.jp/wp/?p=390) - 郵便番号DBを利用するときに考慮すると幸せになれること
(https://jamfunk.jp/wp/?p=417)
更新履歴
基本的にCSVとAPIは毎月1日の3時頃に更新処理を行っています。
ここには不具合や仕様変更のみ記載し、更新状況についてはAPIのversionを参照してください。
- 2012.06.25 公開しました。
- 2012.07.19 分割データを統合するようにしました。
- 2012.08.02 表記用テーブルのINSERT文と、テーブル定義(CREATE文)をアップロードしました。
- 2012.08.04 データの修正を行いました。一度も変更されたことのない郵便番号のupdate値が間違っていたため、修正しました。
- 2012.08.12 分割データの統合に不備がありましたので、修正しました。
- 2012.08.23 主に「京都府 京都市上京区」で分割データとの統合ができていない例がありましたので、修正しました。
- 2014.01.04 郵便事業株式会社からデータのダウンロードに失敗し、更新ができていませんでした。申し訳ありませんでした。
- 2014.01.05 CSVダウンロードを本体と差分データに分けました。
- 2016.03.02 Microsoft Accessのサンプルフォームを改良して検索しやすくしました。
ダウンロード・接続先
Microsoft Access
- テーブル・サンプルフォーム (Access 2007 / accdb.zip)
手動更新なので、APIよりも遅れて更新されます。
☆毎月2~3日に更新
MySQL SQL文テキスト
- テーブル定義用SQL (MySQL 5.0 UTF-8 / sql.gz)
MySQLでzipcode_f_01(郵便番号テーブル本体)をCREATEするためのSQL文です。データは含まれません。
☆公開当初から現在まで更新はありません。 - 表記用テーブルINSERT SQL (MySQL 5.0 UTF-8 / sql.gz)
MySQLで郵便番号テーブルの各フラグのコードの内容を収録した表記用テーブルのSQL文です。
☆公開当初から現在まで更新はありません。
CSV
- CSV (CSV 文字コード Shift-JIS 改行コード CR+LF / csv.zip)
☆毎月1日3時ごろ更新 - 差分CSV (CSV 文字コード Shift-JIS 改行コード CR+LF / csv.zip)
2014年データからCSVに差分を含めず、別ZIPに切り出しました。
更新履歴はAPIのversionを参照してください。
☆毎月1日3時ごろ更新
API(HTTP)
- http://db.jamfunk.jp/postcode.cgi (引数については後述の「API仕様」を参照)
☆毎月1日3時00分から約10分間更新のためサービス中断
データ構造
原則として郵便事業株式会社の郵便番号データを変換したデータになっています。
MySQLをメインのDBとして使用しているため、データ型のデータ長はUTF-8のバイト数計算です。よって、文字数とは一致しません。
AccessやCSVデータはMySQLのデータを変換して作成していますので、基本的には同じ構造ですが、型定義の方法や文字コードの違いで若干データが異なっていることがあります。
よみがなは半角カタカナ表記で、小文字はすべて大文字で表記してあります。検索などで利用する場合はご注意ください。
☆印は郵便事業株式会社の仕様と異なる点を記述している部分です。
zipcode_f_01(テーブル)
カラム | データ型 | 内容 | 文字種 | 一意 (UNIQUE) | 空(NULL) | 注記 |
---|---|---|---|---|---|---|
zipcode | char(7) | 郵便番号 | 数字7桁 | × | なし | ハイフンなし。 |
zipcode_old | char(5) | 旧郵便番号(5桁) | 数字5桁 | × | なし | ハイフンなし。 3桁番号の場合は後ろ2桁は空白(スペース)。 |
pref_jis | char(6) | 全国地方公共団体コード | ☆数字6桁 | × | なし | ☆CD(チェックデジット)付き。 総務省「全国地方公共団体コード」に基づく。 事業者によって存在しない古い値のままになっていることがある(※1) |
addr_pref_kana | varchar(40) | 都道府県名半角カタカナ | 半角カタカナ | × | 住所はNULLなし 事業所はすべてNULL |
※2 |
addr_city_kana | varchar(255) | 市区町村名半角カタカナ | 半角カタカナ | × | 住所はNULLなし 事業所はすべてNULL |
※2 |
addr_town_kana | varchar(512) | 町域名半角カタカナ | 半角カタカナ | × | 住所はNULLなし 事業所はすべてNULL |
☆町域名が長すぎて複数レコードに分割された町域は1レコードに統合済み。(※3) Access 2007版では255バイト以上のテキスト型が利用できないため、メモ型になっています。 |
addr_pref | varchar(20) | 都道府県名漢字 | 漢字 | × | なし | |
addr_city | varchar(255) | 市区町村名漢字 | 漢字、ひらがな、カタカナ※ | × | なし | |
addr_town | varchar(255) | 町域名漢字 | 全角文字 | × | 住所はNULLなし 事業所はNULLあり |
※2 ☆町域名が長すぎて複数レコードに分割された町域は1レコードに統合済み ※3 |
addr_num | varchar(255) | 小字名・丁目・番地等漢字 | 全角文字 | × | 住所はすべてNULL 事業所はNULLあり |
※2 |
office_kana | varchar(255) | 大口事業所名半角カタカナ | 半角カタカナ | × | 住所はすべてNULL 事業所はNULLなし |
※2 |
office_kanji | varchar(255) | 大口事業所名漢字 | 全角文字 | × | 住所はすべてNULL 事業所はNULLなし |
※2 |
authorities | varchar(30) | 取扱支店名漢字 | 漢字、ひらがな、カタカナ※ | × | 住所はすべてNULL 事業所はNULLなし |
※2 |
flag_1town2code | char(1) | 一町域が二以上の郵便番号で表される 0=1町域が1郵便番号で表される 1=1町域が2以上の郵便番号で表される -=該当せず(事業所番号) |
(内容参照) | × | なし | この町域に他の郵便番号も割り振られているか (丁目、町域の後ろに続く地名、番地毎に郵便番号が割り当てられているような場合) 関連テーブル: zipcodeas_1t2c |
flag_koaza | char(1) | 小字毎に番地が起番されている町域 0=町域毎に番地が起番されている町域 1=小字毎に番地が起番されている町域 -=該当せず(事業所番号) |
(内容参照) | × | なし | 関連テーブル: zipcodeas_koaz |
flag_chome | char(1) | 丁目を有する町域 0=丁目を有しない 1=丁目を有する -=該当せず(事業所番号) |
(内容参照) | × | なし | 関連テーブル: zipcodeas_chom |
flag_1code2town | char(1) | 一つの郵便番号で二以上の町域を表す 1=1つの郵便番号で2以上の町域を表す 0=1つの郵便番号で1の町域を表す -=該当せず(事業所番号) |
(内容参照) | × | なし | 関連テーブル: zipcodeas_1c2t |
flag_type | char(1) | 事業所個別番号の種別 0=大口事業所 1=私書箱 -=該当せず(住所) |
(内容参照) | × | なし | ※2 関連テーブル: zipcodeas_type |
flag_num | char(1) | 事業所複数番号 0=複数番号無し 1~3=複数番号を設定している場合の個別番号 -=該当せず(住所) |
(内容参照) | × | なし | 1事業者で複数の個別番号を持たない(0の場合)、またはこの個別番号が複数個のうちの何個目の番号であるか 関連テーブル: zipcodeas_num |
flag_update | char(1) | 更新 0=変更なし 1=変更あり(新設) 2=廃止 |
数字1桁 | × | なし | 関連テーブル: zipcodeas_upda ※現存する郵便番号を検索するはこのカラムで”2″を除外してください。 |
flag_reason | char(1) | 変更理由 0=変更なし 1=市政・区政・町政・分区・政令指定都市施行 2=住居表示の実施 3=区画整理 4=郵便区調整等 5=訂正 6=廃止 |
数字1桁 | × | なし | 関連テーブル: zipcodeas_reas flag_updateカラムが0(変更なし)の場合は0のみ、1(変更あり)の場合は1~5、2(廃止)の場合は6のみになっています。 |
serial | bigint | 主キー用一意番号 | 数値 | ○ | なし | このカラムは利用しないこと。 このカラムはデータベースの管理のために設けており、意味を持つ値ではありません。データ更新時に番号体系が変わることがあります。 |
update | date | データ更新日 | – | × | なし | 郵便事業株式会社が変更を発表した日付(本データベースへの反映日時はversionテーブルを参照) なお、一度も変更されていないデータには「2007-01-01」を代入しています。 |
※1 事業所個別番号の全国地方公共団体コードは、各事業所から日本郵便社への届け出により郵便番号データが更新されます。そのため、届け出のない事業所は廃止された全国地方公共団体コードのままになっていることがあります。(郵便事業株式会社ご担当者様から回答をいただきました)
※2 住所か事業所かの判別はflag_typeカラムを使用してください。
※3 統合するアルゴリズムは「郵政事業株式会社(日本郵政)郵便番号データについて、思ったこととか分かったこととか」(https://jamfunk.jp/wp/?p=390)に記載しました。
表記用テーブル
zipcodeas_1c2t, zipcodeas_1t2c, zipcodeas_chom, zipcodeas_koaz, zipcodeas_num, zipcodeas_reas, zipcodeas_type, zipcodeas_upda
zipcode_f_01の表記用テーブル。zipcode_f_01で数字表記を表示名に変換する際に利用できます。
各表記用テーブルのカラム名について
それぞれのテーブルとzipcode_f_01テーブルの対応は、zipcode_f_01の注記の関連テーブル欄を参照してください。
各表記用テーブルのカラム名の内容やデータ構造
カラム名 | データ型 | 内容 |
---|---|---|
*_id | char(1) | zipcode_f_01の数字 |
*_name | varchar(20) | 表示名(郵便事業株式会社の表記に基づく) |
*_show | varchar(20) | 表示名(短縮) |
zipcodeas_1t2c
一つの町域が二以上の郵便番号で表される
t1c2_id | t1c2_name | t1c2_show |
---|---|---|
– | 該当せず | – |
0 | 1町域が1郵便番号で表される | 1町域1番号 |
1 | 1町域が2以上の郵便番号で表される | 1町域複数番号 |
zipcodeas_koaz
小字毎に番地が起番されている町域
koaza_id | koaza_name | koaza_show |
---|---|---|
– | 該当せず | – |
0 | 町域毎に番地が起番されている町域 | 町域毎番地起番 |
1 | 小字毎に番地が起番されている町域 | 小字毎番地起番 |
zipcodeas_chom
丁目を有する町域
chome_id | chome_name | chome_show |
---|---|---|
– | 該当せず | – |
0 | 丁目を有しない町域 | 丁目なし |
1 | 丁目を有する町域 | 丁目有り |
zipcodeas_1c2t
一町域が二以上の郵便番号で表される
c1t2_id | c1t2_name | c1t2_show |
---|---|---|
– | 該当せず | – |
0 | 1つの郵便番号で1の町域を表す | 1番号1町域 |
1 | 1つの郵便番号で2以上の町域を表す | 1番号複数町域 |
zipcodeas_num
事業所複数番号
num_id | num_name | num_show |
---|---|---|
– | 該当せず | – |
0 | 複数番号なし | 1 |
1 | 個別番号1 | 1 |
2 | 個別番号2 | 2 |
3 | 個別番号3 | 3 |
zipcodeas_type
事業所個別番号の種別
type_id | type_name | type_show |
---|---|---|
– | 住所 | 住所 |
0 | 大口事業所 | 大口事業所 |
1 | 私書箱 | 私書箱 |
zipcodeas_upda
更新有無
update_id | update_name | update_show |
---|---|---|
0 | 変更なし | – |
1 | 変更あり | 変更 |
2 | 廃止 | 廃止 |
zipcodeas_reas (変更理由)
reason_id | reason_name | reason_show |
---|---|---|
0 | 変更なし | – |
1 | 市政・区政・町政・分区・政令指定都市施行 | 行政施行 |
2 | 住居表示の実施 | 表示実施 |
3 | 区画整理 | 区画整理 |
4 | 郵便区調整等 | 郵区調整 |
5 | 訂正 | 訂正 |
6 | 廃止 | 廃止 |
API仕様(テキスト版)
HTTPでUTF-8なtext/plainを得る方法を設けています。
文法
http://db.jamfunk.jp/jpdb/postcode.cgi?{z=(郵便番号)|p=(都道府県)&a=(住所)|q=(オプション)}{&u=1}
- z : 郵便番号 (引数zを指定した場合は郵便番号から検索する動作となる。)
- ハイフンなし。数字7ケタのみ。
- 完全一致。
- p : 都道府県名(引数pとaを指定した場合は住所の一部から検索する動作となる。)
- UTF-8でURLエンコードを行うこと。
- 「都」「道」「府」「県」まで指定すること。
- 完全一致。
- a : 住所の一部
- UTF-8でURLエンコードを行うこと。
- 市区郡町村・町域・事業所名それぞれのOR検索。
ただし「城南区南片江」のように、市区郡町村と町域をまたいだキーワードで検索することはできない。 - 部分一致。
- u : 廃止データの非表示
- 1 : flag_update=2(廃止されたデータ)を表示しない。
- 0または未指定 : 廃止されたデータを含めて表示する。
- q : その他データベース情報の表示
- ver : データベースの更新情報の表示
- 注記
- 引数zと引数p、引数zと引数aを同時に指定することはできない。
- 引数pと引数aはいずれも指定すること。片方のみを指定することはできない。
- 返値の仕様は「実行結果」もしくはWebサイトを参照すること。
- 返ってくるテキストの文字コードはUTF-8、改行コードはLFです。
返値の仕様
検索結果は1行毎に1カラムを返します。
01: ステータスコード
- 成功: 200
- 失敗(無効な処理) 400
- 失敗(検索不一致) 404
- 失敗(原因不明) 500
02: ステータス詳細
- 成功: OK
- 失敗: (理由)
03: (空行)
04: 件数(数字)
05: セパレータ(#記号)
06: 郵便番号(7桁)
07: 旧郵便番号(5桁)
08: 全国地方公共団体コード
09: 都道府県名半角カタカナ
10: 市区町村名半角カタカナ
11: 町域名半角カタカナ
12: 都道府県名漢字
13: 市区町村名漢字
14: 町域名漢字
15: 小字名・丁目・番地等漢字
16: 大口事業所名半角カタカナ
17: 大口事業所名漢字
18: 取扱支店名漢字
19: 1町域複数郵便番号
20: 小字毎番地起番
21: 丁目を有する町域
22: 1郵便番号複数町域
23: 個別番号の種別の表示
24: 複数番号の有無
25: 更新の表示
26: 変更理由
27: 主キー用一意番号
28: データ更新日
29: セパレータ(#)
(6~29行目を件数分繰り返し)
データベース更新情報の返値
01: バージョンシリアル番号(更新するたびに1増加します)
02: バージョン番号(4ケタの数字でYYmm表記。20YY年mm月末更新データ)
03: 更新日時(YYYY-mm-dd HH:MM:SS表記)
04: 更新理由(auto update: 自動更新、bugfix: 訂正など)
例
例1
http://db.jamfunk.jp/postcode.cgi?z=8140143
- 郵便番号「814-0143」を検索、住所を1件返す例。
- 引数z=8140143を指定。
例2
http://db.jamfunk.jp/postcode.cgi?p=%e7%a6%8f%e5%b2%a1%e7%9c%8c&a=%e4%b8%83%e9%9a%88
- 都道府県「福岡県」町域「七隈」を検索、住所を1件と事業所を1件返す例。
- 引数p=福岡県&a=七隈をUTF-8エンコードして指定。
例3
http://db.jamfunk.jp/postcode.cgi?z=9999999
- 郵便番号「9999999」(存在しない郵便番号)を検索、見つからなかった例。
例4
http://db.jamfunk.jp/postcode.cgi?p=%e7%86%8a%e6%9c%ac%e7%9c%8c&a=%e9%bb%92%e9%ab%aa
- 都道府県「熊本県」町域「黒髪」を検索、住所やら事業所やら廃止になった番号やら大量に返す例。
例5
http://db.jamfunk.jp/postcode.cgi?p=%e7%86%8a%e6%9c%ac%e7%9c%8c&a=%e9%bb%92%e9%ab%aa&u=1
- 例4で、廃止されたデータを表示しない例。
- 引数u=1を指定。
例6
http://db.jamfunk.jp/postcode.cgi?q=ver
- データベース更新情報を表示する例。
- 引数q=vを指定。
API仕様(JSON版)
HTTPでJSONなtext/plainを得る方法を設けています。
文法
http://db.jamfunk.jp/postcode.json?{z=(郵便番号)|p=(都道府県)&a=(住所)}
- 引数は「API仕様(テキスト版)」と同様です。
返値の仕様
JSONのオブジェクト形式で返します。
例1: 8140143で検索し、住所が1件返される例。
http://db.jamfunk.jp/postcode.json?z=8140143
{ "status":"200", "error":"OK", "rows":1, "data":[ {"zipcode":"8140143","zipcode_old":"81401","pref_jis":"401366","addr_pref_ka na":"フクオカケン","addr_city_kana":"フクオカシジヨウナンク","addr_town_kana":"ミナミカタエ","add r_pref":"福岡県","addr_city":"福岡市城南区","addr_town":"南片江","addr_num" :"","office_kana":"","office_kanji":"","authorities":"","flag_1town2code":" 0","flag_koaza":"0","flag_chome":"1","flag_1code2town":"0","flag_type":"-", "flag_num":"-","flag_update":"0","flag_reason":"0","serial":"111455","updat e":"2012-06-01"} ] }
データの内容については「データ構造」と「API仕様(テキスト版)」を参照してください。
複数件の結果が返される場合は、”data”オブジェクト({“zipcode”:”….})が複数返されます。
動作例は「API仕様(テキスト版)」の例のURLで、”postcode.cgi”を”postcode.json”に置き換えてください。
その他
APIをの関数を増やしたい