システム開発において、住所から5桁の住所コード(全国地方公共団体コード)への変換が必要となり、試行錯誤の結果断念した経験をブログにまとめます。
背景
開発中のシステムでは基幹システムを踏襲して住所コードを管理していました。
ただ、多くの人は自身の住所を知っていても、対応する住所コードを把握している人はほとんどいません(私も知らない)。
そこで、いくつかの方法で住所から住所コードに変換する方法を検討しました。
1.住所文字列からの変換
総務省が公開している都道府県・市区町村名と6桁の住所コードのマッピングを利用する方法を考えました。
https://www.soumu.go.jp/denshijiti/code.html
が、以下の問題点があり断念しました。
- 住所の入力ミス:ユーザーが住所を誤って入力する可能性があります。
- 旧漢字の使用:古い漢字や異体字が使われることがあります。
- 市区町村の入力欄にそれ以降の情報も入力される:市区町村名の欄に番地や建物名などが含まれてしまうケースです。
- メンテナンスが必要:統廃合などに伴う住所コードの変更に対応が必要です。
文字列の扱いはシステムの苦手分野ですね・・AIならよしなに判断してくれるのかもしれませんが。メンテナンスコストも見逃せないポイントです。
それならばということで数字からの変換を試みます。
2.郵便番号からの変換
郵便番号は7桁!住所コードよりも桁数が多い時点で住所コードを特定できるのでは!?と調査をすすめます。
しかし必ずしも特定できないケースが存在します。
例えば郵便番号「950-0000」はいくつかの市区町村にまたがります。
郵便番号 | 都道府県 | 市区町村 |
---|---|---|
〒950-0000 | 新潟県 | 新潟市北区 |
〒950-0000 | 新潟県 | 新潟市江南区 |
〒950-0000 | 新潟県 | 新潟市中央区 |
〒950-0000 | 新潟県 | 新潟市西蒲区 |
〒950-0000 | 新潟県 | 新潟市西区 |
〒950-0000 | 新潟県 | 新潟市東区 |
他にも、都道府県を跨いで同じ郵便番号を持つケースもあるようです。
さらに、住所コードは市区町村単位で割り当てられているため、郵便番号から直接住所コードを導き出すこともできませんでした。
3.外部変換サービスの利用
住所文字列から住所コードに変換してくれる外部サービスはいくつか存在します。
https://qiita.com/megane_/items/c8e4062697eaa785a103
しかしコストやライセンスなど検討すべき課題が多くこちらも断念。
結論
住所コードを管理するメリットを考えたときに、今回はメリットよりもデメリットのほうが大きかったため
結論としては住所コードを廃止して文字列のみ管理する方針となりました。
業務要件などによりやむをえない場合を除き、今後は住所コードの扱いは慎重にしなければと大いに反省した事案でした。