日本郵便様が公開している郵便番号データを利用しやすくするには、複雑な加工処理が必要になります。
ケンオール通信では、過去数回に渡り、郵便番号データの処理方法を解説してきました。
本シリーズの締めくくりとして、今までの解説をまとめて紹介します。
データは、記載がない限り2021-11-30のデータを用いています。
郵便番号データの処理方法まとめ
郵便番号データを処理するには、以下の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サービスです。 サービスを試してみたい方はこちらから:
(Shodoで執筆されました)