Help us understand the problem. What is going on with this article?

KEN_ALL.CSV (郵便番号検索)の落とし穴

More than 3 years have passed since last update.

KEN_ALL.CSV の話題 でやたら盛り上がってるから... というわけでもないけれど, 仕事絡みで調べる機会があったので, まとめてみました.

2行に跨がってる

KEN_ALL.CSV の悪名高き「2行に跨がっている」データの一部です. しかも, 勝手に省略されてたりします.

028-5102 岩手県岩手郡葛巻町葛巻(第40地割「57番地125、176を除く」~第45地割)
826-0043 福岡県田川市奈良(青葉町、大浦、会社町、霞ケ丘、後藤寺西団地、後藤寺東団地、希望ケ丘、松の木、三井後藤寺、緑町、月見ケ丘)

同じ郵便番号で別の都道府県

郵便番号では都道府県を特定できません...

498-0000 三重県桑名郡木曽岬町, 愛知県弥富市
618-0000 大阪府三島郡島本町, 京都府乙訓郡大山崎町
871-0000 大分県中津市, 福岡県築上郡吉富町

重複データ

これは同じ住所が2行ある郵便番号. 残しておいてもあまり意味は無いと思うんですけど, 直せないんですかね.

581-0027 大阪府八尾市八尾木
673-0012 兵庫県明石市和坂

長い住所

並ぶと圧巻ですね!
これらの住所, KEN_ALL.CSV には「京都府京都市上京区上塔之段町」といった, 「通り」を省略した住所が登録されています.
しかし,以下のような「通り」を含めた住所が正式のようです.
また, 「町名」が「通り」を跨いでいたりして前方一致で検索できなかったりする技術屋泣かせの住所です.
宅配便などでも, 町名だけでは判断できず, 「通り」がわからないと配達できないこともあるみたいです.

602-8303 京都府京都市上京区寺之内通千本東入1丁目下る姥ケ寺之前町
602-8413 京都府京都市上京区大宮通寺之内下る東入2丁目大北小路東町
602-0834 京都府京都市上京区寺町通今出川下る1筋目西入大原口突抜町
602-0861 京都府京都市上京区河原町通丸太町上る2筋目西入新烏丸頭町
602-0833 京都府京都市上京区寺町通今出川下る1筋目西入真如堂突抜町
602-0898 京都府京都市上京区烏丸通寺之内上る1筋目西入相国寺門前町
602-0898 京都府京都市上京区烏丸通寺之内上る2丁目東入相国寺門前町
602-0898 京都府京都市上京区烏丸通寺之内上る2筋目東入相国寺門前町
602-0898 京都府京都市上京区烏丸通寺之内上る東入1筋目相国寺門前町
602-0898 京都府京都市上京区烏丸通寺之内上る東入2丁目相国寺門前町
602-0898 京都府京都市上京区烏丸通寺之内上る東入2筋目相国寺門前町
602-0898 京都府京都市上京区烏丸通寺之内上る東入3丁目相国寺門前町
602-0097 京都府京都市上京区大宮通寺之内上る4丁目西裏西若宮北半町
602-0097 京都府京都市上京区大宮通寺之内上る5丁目西入西若宮北半町
602-0097 京都府京都市上京区大宮通寺之内上る5丁目西裏西若宮北半町
602-0096 京都府京都市上京区大宮通寺之内上る4丁目西入西若宮南半町
602-0096 京都府京都市上京区大宮通寺之内上る4丁目西裏西若宮南半町
602-8387 京都府京都市上京区今小路通七本松西入2丁目上る東今小路町
602-8387 京都府京都市上京区今小路通七本松西入下る2丁目東今小路町
602-0806 京都府京都市上京区寺町通上立売上る2筋目西入上る藪之下町
605-0032 京都府京都市東山区三条通白川橋東4丁目黒谷道西入柚之木町
600-8257 京都府京都市下京区岩上通木津屋橋下る3丁目西入三軒替地町
602-0813 京都府京都市上京区今出川通寺町1筋西入上る2丁目上神輿町
605-0015 京都府京都市東山区三条通南裏二筋目白川筋西入二丁目南側南木之元町
602-0898 京都府京都市上京区今出川通烏丸東入上る二筋目東入下る相国寺門前町
605-0014 京都府京都市東山区三条通南裏二筋目白川筋西入二丁目北側北木之元町
602-0815 京都府京都市上京区寺町通今出川上る一丁目西入三筋目上る上塔之段町

同じ町に複数の郵便番号

京都市中京区亀屋町の住所は, 2行に跨っている上に複数の郵便番号にも跨がってます...
住所自動入力などでも, 正確に入力されず, 結局入力し直す羽目になったりすることも.

京都市中京区亀屋町

604-0094 (釜座通竹屋町下る、釜座通夷川上る、夷川通釜座西入、夷川通釜座東入、夷川通西洞院東入、夷川通新町西入)
604-0811 (堺町通夷川下る、堺町通二条上る、夷川通堺町西入、夷川通堺町東入)
604-0865 (竹屋町通烏丸西入、竹屋町通両替町東入、竹屋町通両替町西入、竹屋町通室町東入、両替町通室町下る)
604-0941 (御幸町通御池上る、御幸町通押小路下る、御幸町通押小路西入、御幸町通押小路東入、押小路通寺町西入、御池通御幸町西入、御池通御幸町東入)
604-8253 (蛸薬師通堀川東入、堀川通蛸薬師下る、蛸薬師通油小路西入)

こんな素晴しい parser もあります

https://github.com/yappo/p5-Parse-JapanesePostalCode

よりよい UX を提供するために

多くの開発者が KEN_ALL.CSV の問題に取り組んで、多くの郵便番号検索 API がリリースされています。
しかし、前出の京都の一部の住所のように、郵便番号のみでは的確に住所入力できない場合があるのも事実です。

実は、町・字、丁目までを収録された住所マスタが国土地理協会より販売されています。
このような、町・字、丁目まで収録したデータベースと、郵便番号検索を的確に組み合わせることによって、さらに高いレベルのユーザーエクスペリエンスを提供できると思います。

こちらも参考に

nanasess
Emacs のアイコンを作った人です
https://skirnir.co.jp
ec-cube
日本No.1ECオープンソースのEC-CUBEのコミッターやユーザーのコミュニティです。
http://www.ec-cube.net
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away