郵便番号から市区町村を特定しようとしたけど、うまくいかなかった話
はじめに
郵便番号から行政区(市区町村)、あわよくば町域まで特定できないかと考えたのですが、うまくいかなかったので備忘録として記事に残すことにしました。
なぜ郵便番号から市区町村を特定しようと考えたのか
以下のようなCSVに記載された住所から市区町村を特定したいと考えていました。
例えばこのようなケースです。
- CSVをデータベースに取り込んでレコードを作成する
- レコードには市区町村コードを付与する。例:
神奈川県横浜市西区
であれば1401
元になるCSV
郵便番号,都道府県,市区町村,町域以下,建物名,...
2200011,神奈川県,横浜市西区,高島2丁目,横浜駅,...
作成したいレコード
ID | 郵便番号 | 都道府県 | 市区町村 | 町域以下 | 建物名 | 市区町村コード |
---|---|---|---|---|---|---|
1 | 2200011 | 神奈川県 | 横浜市西区 | 高島2丁目 | 横浜駅 | 1401 |
このCSVはユーザーが作成するため、特に市区町村カラムには様々な入力値が想定されます。
ぱっと考えつく限りでも、以下のようなパターンが考えられます。
- 郡を省略して記載(
和歌山県有田郡湯浅町
/和歌山県湯浅町
) - 漢字の表記が複数ある(
宮城県塩竈市
/宮城県塩釜市
) - ケ、ノの表記(
佐賀県神埼郡吉野ヶ里町
/佐賀県神埼郡吉野ケ里町
/佐賀県神埼郡吉野里町
)
そこで住所テキストではなく郵便番号を使って市区町村を特定しようという発想に至ったのですが、結論として郵便番号は市区町村の特定に有効ではありませんでした。
なぜ郵便番号から市区町村を特定できなかったのか
県、市区町村をまたいで同じ郵便番号をもつケースがあるため。
webサイトのように、入力された郵便番号を元に候補となる県・市区町村・町域をユーザーに選択・入力してもらうようなUIがあれば、この問題はクリアできそうです。
郵便番号は行政区・町域を特定するためのものではない
郵便局Webサイトに書いていました。
郵便番号制の目的
郵便番号の導入は郵便物処理の機械化の範囲を拡大し、人力に依存する割合の極めて高い郵便事業の効率化を推進することによって、将来にわたってなるべく安い料金で良質な郵便サービスを安定的に御利用いただくことを目的とします。
複数の市区町村で同じ郵便番号を持つ例
郵便局Webサイトからダウンロードした郵便番号データを元に検証しています。
郵便番号データダウンロード
県をまたいで同じ郵便番号を持つケース
郵便番号,都道府県,市区町村,町域以下
4980000,愛知県,弥富市,以下に掲載がない場合
4980000,三重県,桑名郡木曽岬町,以下に掲載がない場合
郵便番号,都道府県,市区町村,町域以下
6180000,京都府,乙訓郡大山崎町,以下に掲載がない場合
6180000,大阪府,三島郡島本町,以下に掲載がない場合
郵便番号,都道府県,市区町村,町域以下
8710000,福岡県,築上郡吉富町,以下に掲載がない場合
8710000,大分県,中津市,以下に掲載がない場合
地図で見てみると納得
緑:愛知県弥富市、赤:三重県桑名郡木曽岬町
ベース地図:OpenStreetMap
ポリゴン:e-Stat 境界データを加工
市区町村をまたいで同じ郵便番号を持つケース
政令指定都市で区をまたぐ例 その1
町域以下が以下に記載がない場合
のパターン
郵便番号,都道府県,市区町村,町域以下
9500000,新潟県,新潟市北区,以下に掲載がない場合
9500000,新潟県,新潟市東区,以下に掲載がない場合
9500000,新潟県,新潟市中央区,以下に掲載がない場合
9500000,新潟県,新潟市江南区,以下に掲載がない場合
9500000,新潟県,新潟市西区,以下に掲載がない場合
9500000,新潟県,新潟市西蒲区,以下に掲載がない場合
郵便番号,都道府県,市区町村,町域以下
4320000,静岡県,浜松市中区,以下に掲載がない場合
4320000,静岡県,浜松市東区,以下に掲載がない場合
4320000,静岡県,浜松市西区,以下に掲載がない場合
4320000,静岡県,浜松市南区,以下に掲載がない場合
4320000,静岡県,浜松市北区,以下に掲載がない場合
4320000,静岡県,浜松市天竜区,以下に掲載がない場合
政令指定都市で区をまたぐ例 その2
もともと同じ町だったのが市区町村の統廃合などで分割されたのかなというパターン
郵便番号,都道府県,市区町村,町域以下
4328053,静岡県,浜松市中区,法枝町
4328053,静岡県,浜松市南区,法枝町
郵便番号,都道府県,市区町村,町域以下
7000941,岡山県,岡山市北区,青江
7000941,岡山県,岡山市南区,青江
市町村をまたぐ例
郵便番号,都道府県,市区町村,町域以下
9070000,沖縄県,石垣市,以下に掲載がない場合
9070000,沖縄県,八重山郡竹富町,以下に掲載がない場合
郵便番号,都道府県,市区町村,町域以下
0350000,青森県,むつ市,以下に掲載がない場合
0350000,青森県,下北郡東通村,以下に掲載がない場合
町域をまたいで同じ郵便番号をもつケース
せいぜい2~3市区町村で重複するくらいだろうと思ったら989-2351
を使用している町域が36個もありました
郵便番号,都道府県,市区町村,町域以下
9892351,宮城県,亘理郡亘理町,旭
9892351,宮城県,亘理郡亘理町,旭山
9892351,宮城県,亘理郡亘理町,油田
9892351,宮城県,亘理郡亘理町,五日町
9892351,宮城県,亘理郡亘理町,祝田
9892351,宮城県,亘理郡亘理町,裏城戸
9892351,宮城県,亘理郡亘理町,江下
9892351,宮城県,亘理郡亘理町,上中野地
9892351,宮城県,亘理郡亘理町,上浜街道
9892351,宮城県,亘理郡亘理町,上茨田
9892351,宮城県,亘理郡亘理町,亀井戸
9892351,宮城県,亘理郡亘理町,上町
9892351,宮城県,亘理郡亘理町,北新田
9892351,宮城県,亘理郡亘理町,北新町
9892351,宮城県,亘理郡亘理町,狐塚
9892351,宮城県,亘理郡亘理町,旧舘
9892351,宮城県,亘理郡亘理町,境堤
9892351,宮城県,亘理郡亘理町,桜小路
9892351,宮城県,亘理郡亘理町,芝西
9892351,宮城県,亘理郡亘理町,下小路
9892351,宮城県,亘理郡亘理町,下浜街道
9892351,宮城県,亘理郡亘理町,下茨田
9892351,宮城県,亘理郡亘理町,新町
9892351,宮城県,亘理郡亘理町,台田
9892351,宮城県,亘理郡亘理町,道田中
9892351,宮城県,亘理郡亘理町,道田東
9892351,宮城県,亘理郡亘理町,道田西
9892351,宮城県,亘理郡亘理町,中町
9892351,宮城県,亘理郡亘理町,中町東
9892351,宮城県,亘理郡亘理町,新井町
9892351,宮城県,亘理郡亘理町,西郷
9892351,宮城県,亘理郡亘理町,茨田後
9892351,宮城県,亘理郡亘理町,東郷
9892351,宮城県,亘理郡亘理町,見田内
9892351,宮城県,亘理郡亘理町,南町
9892351,宮城県,亘理郡亘理町,南町東
補足
「以下に記載がない場合」とは
例えば北海道奥尻郡奥尻町の郵便番号は以下ですが、目的の町域がこの中にない場合に043-1400
が用いられるようです。
郵便番号,都道府県,市区町村,町域以下
0431400,北海道,奥尻郡奥尻町,以下に掲載がない場合
0431521,北海道,奥尻郡奥尻町,青苗
0431402,北海道,奥尻郡奥尻町,赤石
0431405,北海道,奥尻郡奥尻町,稲穂
0431401,北海道,奥尻郡奥尻町,奥尻
0431403,北海道,奥尻郡奥尻町,球浦
0431522,北海道,奥尻郡奥尻町,富里
0431523,北海道,奥尻郡奥尻町,松江
0431404,北海道,奥尻郡奥尻町,宮津
0431525,北海道,奥尻郡奥尻町,湯浜(神威脇、幌内)
0431406,北海道,奥尻郡奥尻町,湯浜(その他)
0431524,北海道,奥尻郡奥尻町,米岡
郵便局のWebサイトではこのように説明されています。
"以下に掲載がない場合"とは、お探しの町域が見つからない場合にお書きいただく番号であり、町域を特定するものではありませんのでご注意ください。
「以下に記載がない場合」の郵便番号は実際に使われている?
浜松市の432-0000
で検索してみると、この郵便番号を使用している住所がヒットしました。ユースケースによりますが、以下に記載がない場合
の郵便番号は実際使われていないだろうと判断するのは少々危険かもしれません。
おまけ
事業所固有の郵便番号というのもある
配達物が多い事業所には1事業所あたり最大2個まで固有の郵便番号を与えることができるそうです。ユースケースによっては大口事業所の郵便番号も網羅しておく必要がありそうです。
Discussion
「都道府県コード及び市区町村コード」が使えそうな場面ですね!!
全国地方公共団体コードというのがあるのですね!
こちらの都道府県コード及び市区町村コードをCSVに記載するようなイメージでしょうか??
住所から市区町村コードを特定してCSVに記載することが許容されるケースでは、とても有用な方法となりそうです。
ありがとうございます!
自分が直接かかわってないので「面白い(興味深い)」と思うけど、実際に使おうと検討してコレでしたら、煙噴きそうですね…。
それと、市外局番 06 に兵庫県尼崎市がまじってるのを思い出しました。