最強のKEN_ALL.csv

正規化されてそうで正規化されてないちょっと正規化されたブログ

KEN_ALL.csv のどこがだめなのかまとめてみる

KEN_ALL.csv はだめだとよく言われます。では何がだめなのでしょうか。 Blogや Twitterなどでよく語られているので、その内容を紹介してみたいと思います。

Blog 「ぐるぐる〜 」

まず、かなり網羅的にまとまっていたのが、下記の ブログ「ぐるぐる〜 」のエントリです。

bleis-tift.hatenablog.com

項目としては、下記のようなものが上げられています。あるあるですね…

  1. 単一レコードの複数行分割
  2. 「以下に記載がない場合」、「次のビルを除く」を含むレコード
  3. 「〜」で範囲を示すレコード
  4. 「〜」や「以上」、「以下」を含むレコード
  5. 「以外」「を除く」を含むレコード
  6. 「その他」を含むレコード
  7. 「全域」を含むレコード
  8. 「(丁目)」、「(郡)」、「(番地)」などを含むレコード
  9. 「を含む」を含むレコード
  10. 「地階・階層不明」を含むレコード
  11. 複雑な、としか言い表せないレコード
  12. その他

一番くそだと思うのが、 1. 単一レコードの複数行分割 これに尽きます。 CSVの概念を覆してきます。固定長 CSVかよ。 これがある時点で、CSVを1行ずつ処理して… というのができなくなります。

Blog 「my-hobby」

こちらは、実際に zipnavi というサービスを作るにあたって直面した問題についてまとめられてます。

Blog「Studio JamPack」

郵便番号データについて思ったこと – Studio JamPack

大口事業所はまた別データになってるんですよね(JIGYOSYO.CSV

郵便番号DBを利用するときに考慮すると幸せになれること – Studio JamPack

  • 1つのクエリに2つ以上のレコードが返ってくる
  • 町域がやたら長い(括弧表記されている)
  • 廃止レコードが複数ある
    • 8191131 福岡県
  • 同じ町域でも郵便番号が異なる
    • 8190166 福岡県 福岡市西区 横浜(1~2丁目)
    • 8190366 福岡県 福岡市西区 横浜(3丁目)
  • やたら大量の件数を返す

サイト 「Qiita」

エンジニアのノウハウがつまったサイト Qiita でも時々話題になっています。

qiita.com qiita.com

感想

本当につらいですね。日本郵便さん、元データ、なんとかならないものでしょうか。

世の中には同じような苦労をしてきている方がたくさんいらっしゃいます。その方々の先人の成果がOSSソフトウェアや、サービスとして存在していますので、次にはそのあたりも紹介してみたいと思います。

また、そもそもこの KEN_ALL.csvを使わなければこのような苦労はないわけで、KEN_ALL.csv 以外に、信頼できるデータがないものか、調査してみたいと思います。