徹底解説!郵便番号データの処理方法

日本郵便様が公開している郵便番号データを利用しやすくするには、複雑な加工処理が必要になります。

ケンオール通信では、過去数回に渡り、郵便番号データの処理方法を解説してきました。

本シリーズの締めくくりとして、今までの解説をまとめて紹介します。

データは、記載がない限り2021-11-30のデータを用いています。

郵便番号データの処理方法まとめ

f:id:kenall:20220112114413p:plain
郵便番号データ処理で押さえるポイントは4つ

郵便番号データを処理するには、以下の4つのポイントを押さえてください。

  • 複数行に分割されたレコードを1行にまとめる
  • 括弧つきのレコードを括弧の外側と内側で分割する
  • 括弧内の文字列を処理する
  • ビル郵便番号を処理する

複数行の結合

郵便番号データでは、1レコードが複数レコードに分割されて格納されている場合があります。

一般的なテーブル形式で扱うために、まず複数レコードを結合します。

詳細は複数行のレコードの結合処理を参照してください。

括弧つきのレコードの分割

郵便番号データ120,372件のうち全体の8.2%、10,551件に括弧がついています。

括弧つきの住所は以下の5パターンがあります。

  • 町名 + 括弧(丁目、小字、番地など)
  • 町名 + ビル名 + 括弧(階層)
  • 町名 + 番地 + 括弧
  • 町名、町名 + 括弧
  • 町名 + 地割 + 括弧

上記パターンのうち町名 + 番地 + 括弧町名、町名 + 括弧町名 + 地割 + 括弧は例外的なパターンです。

処理方法の詳細はケンオール通信第11号:括弧つきの町域(1) 括弧の内側と外側の分割を参照してください。

括弧内の処理

ケンオールでは、括弧内の丁目、小字、京都の通り名は可能な限り保持します。

範囲が指定されている場合や複数併記される場合は複数レコードに展開します。

丁目

2080032 東京都 武蔵村山市 三ツ木(1~5丁目)

「丁目」の他、「丁」「地割」などが出現した場合はそれらを複数レコードに展開します。

詳細はケンオール通信第12号:括弧つきの町域(2) 丁目や番地の処理を参照してください。

小字

0580343 北海道 幌泉郡えりも町 東洋(油駒、南東洋、132~156、158~354、366、367番地)

括弧内に「数字でない、かつ京都の通り名でない文字」が出現した場合は基本的に「小字」として保存します。

ただし、(丁目)(その他)といったコメント文字列は除外します。

詳細はケンオール通信第13号:括弧つきの町域(3) 小字、かぎ括弧、区切り文字の処理を参照してください。

京都の通り名

京都府京都市の一部の郵便番号レコードには、京都の通り名が付与されています。

6028064 京都府 京都市上京区 一町目(上長者町通堀川東入、東堀川通上長者町上る、東堀川通中立売通下る)

ケンオールではこれらの通り名を展開し、可能な限り上記のような元データに記載されている住所を復元できるようにしています。

詳細はケンオール通信第14号:括弧つきの町域(4) 京都の通り名を参照してください。

(その他)

ケンオールでは、意図しない小字・丁目が表示されてしまう場合に備え、小字を含まないレコードも出力するようにしています。

しかし、(その他)が含まれている町域の場合、(その他)をそのまま削除してしまっては小字なしのレコードが二重に出力されてしまいます。

そうした問題を避けるため、(その他)を含む郵便番号を持つ町域については小字なしのレコードを出力しないようにしています。

詳細はケンオール通信第9号:(その他)の処理を参照してください。

かぎ括弧

郵便番号データ内の括弧は丸括弧()だけではありません。かぎ括弧「」や甲括弧〔〕も存在します。

9996652 山形県 鶴岡市 添川(渡戸沢「筍沢温泉」)

ケンオールでは、「」内が数字以外で始まっている場合は便宜上小字の一部として残し、その他のケースは全て削除しています。

詳細はケンオール通信第13号:括弧つきの町域(3) 小字、かぎ括弧、区切り文字の処理を参照してください。

区切り文字

住所を併記する場合、ほとんどのケースでは読点「、」を区切り文字としていますが、中黒「・」や「及び」を使う場合もあります。

9401172 新潟県 長岡市 釜ケ島(土手畑・藤場)

詳細はケンオール通信第13号:括弧つきの町域(3) 小字、かぎ括弧、区切り文字の処理を参照してください。

ビル郵便番号

郵便番号データの大半は、ある郵便区画に対して番号を割り当てたレコードとなっていますが、一部の高層ビルでは階層ごとに郵便番号が割り振られています。

ケンオールではこのような郵便番号をビル郵便番号と呼んでいます。

ビル郵便番号は町名 + ビル名 + 括弧(階層)のパターンで記載されています。

1066101 東京都港区六本木六本木ヒルズ森タワー(1階)

このレコードを町名六本木とビル名六本木ヒルズ森タワーに分割する場合、データを遡って以下のレコードを見つけ出し、町名を抽出する必要があります。

1060032 東京都 港区 六本木(次のビルを除く)

詳細はケンオール通信第8号: ビル名の処理を参照してください。

まとめ

郵便番号データは複雑ですが、一つ一つ丁寧に処理していけば決して難しいものではありません。

是非皆さんも挑戦してみてください。

「自分では難しい!」と思った人は、ぜひケンオールを使ってみてください。 60日間無料で試せます。アカウント登録はこちらから!

ケンオールについて

「かゆいところにケンオール」 ケンオールは、郵便番号住所検索APIをはじめとした、システム開発を加速する高品質で安全なAPIサービスです。 サービスを試してみたい方はこちらから:

kenall.jp

Shodoで執筆されました