郵便番号データベース


名称

JamPack Public DB 郵便番号データベース

概要

郵便事業株式会社が提供する郵便番号データをデータベース化してみました。
廃止データや事業所個別郵便番号が収録されていたり、郵便事業株式会社データ仕様を一般化していたりしています。

また、そのデータベースをHTTPでアクセスできるよう、API化しています。

情報源

毎月1日頃に以下のデータを元に更新を行っています。

このDBの特徴

郵便事業株式会社 郵便番号データと異なる点

  • 住所の郵便番号と事業所の個別郵便番号データを一元化して収録している。
    ☆住所と事業所それぞれのデータを合併する必要がありません。
  • 差分データを収録している。
    廃止された郵便番号や変更されたデータ(住所は2007/10/29、事業所は2007/02/27から)を含んでいる。
    ☆廃止されている郵便番号や住所も検索できるので、それら訂正するためにも利用できます。
    ☆一般に公開されていない古いデータも含んでいます。
  • 分割データが統合されて収録されている。
    郵便事業株式会社のデータでは長すぎる町域は2レコード以上に分割されていることがある。それらを1レコードに統合しています。
    ☆たとえば郵便番号「9218046」は町域が「大桑町(ア、イ、ヰ、ウ、上野、ヲ、オ乙、鐘搗山、上川原、上猫下、」「ク、ケ、御所谷、小寺山、シ、下上野、下西欠、平、チ、ツ乙、ツ丙、テ、ト、」「中上野、中尾山、中平、中ノ大平、西ノ山、猫シタイ、ノ、ハ、開、」「法師山、坊山、マ、鱒川淵、ム、元末、元涌波庚、ヤ、リ、ル、レ乙、」「レ甲、ロ乙、ロ甲、和)」の5件に分割されているが、これを1件に統合しているため、正確な形式で住所が収録されています。
  • 全国地方公共団体コードをチェックデジット(CD)1桁を含めた6桁で収録している。
    ☆総務省全国地方公共団体コード表(JPDBではgovcode)と併用できます。

注意事項・利用許諾

本データベースの内容は自動処理で作成しております。目視確認や実在する住所との照合は行っておらず、間違い・不足・重複が含まれていることがあります。
クリティカルな業務には利用をお勧めしません。また、責任を負うことはできません。
なお、データ不備を見つけた場合はお知らせいただけると幸いです。テストしていただけるともっと幸いです。

毎月1日に更新する予定ですが、事情により遅れることがあります。ご了承ください。
(郵便事業株式会社は毎月月末頃に更新しているようです)

事情により運用を取りやめることがあります。

データの著作権は郵便事業株式会社に属します。データベースとしての著作権はすながわひろゆきが所有します。
(郵便事業株式会社は著作権を主張しないと仰っていますが、こちらとしては郵便事業株式会社を推しておきます。)

特に利用上の制限は設けませんが、データの改変は提供の趣旨を損ねるため望ましくないと思います。そのままの形でお召し上がりください。

利用・転載・紹介はご自由にして頂いてかまいません。良ければご報告頂けると幸いです。よければここで紹介させてください。

以下のページも参考情報としてご一読頂くと幸いです。

更新履歴

基本的に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

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 統合するアルゴリズムは「郵政事業株式会社(日本郵政)郵便番号データについて、思ったこととか分かったこととか」(http://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件返される例。

{
  "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をの関数を増やしたい