郵便番号検索サービス構想~住所データの仕様~

前回はサラッと流しましたが、改めて郵便番号データの説明 – 日本郵便のサイトより、郵便番号データの仕様を確認したいと思います。
●先ずは前提条件(データの範囲)

1.郵便番号は、町域(町名から○丁目を除く部分、および大字)に設定しており、小字または通称には原則として設定していない。
2.また、大口事業所、私書箱および料金受取人払等へ個別の郵便番号を設定している。

日本郵便のサイトには上記の2点が「郵便番号の設定範囲」として記載されています。
※それぞれの意味はこちらを参照して下さい。大字小字
>>1については、このデータを元に検索エンジンを作るので、この仕様は受け入れざるを得ません。
しかしそもそも「小字または通称」にも郵便番号って設定されているのでしょうか?
調べていたら、郵便番号制マニュアル - 郵便番号にその答えがありました。
このサイトの「(3) 郵便番号で表す範囲(図1参照)」の「イ」に記載されている内容を見ると、そもそも「小字又は通称」には郵便番号を設定していないそうです。
ふ~~~ん。。。なるほど!
という事は、「小字または通称」は住所データに含まれていないのではなく、そもそも存在しない事になるので、1については問題ありません。
>>2については日本郵便より提供されている郵便番号データは大きく分けて2種類存在します。

1.事業所の個別郵便番号
2.一般的な住所の郵便番号

今回作成する郵便番号検索サービスは「住所の郵便番号」に対して行います。
「事業所の個別郵便番号」は現時点では対応の予定はありませんが、時間があれば対応していきたいと思います。
更に、「住所の郵便番号」は以下の2種類が存在します。

1.読み仮名データの促音・拗音を小書きで表記しないもの(ホツカイドウ)
2.読み仮名データの促音・拗音を小書きで表記するもの(ホッカイドウ)

これらの内容をまとめると、住所データは以下の様な構成になっている事になります。
住所データ
┣事業所の個別郵便番号
┗一般的な住所の郵便番号
┣読み仮名データの促音・拗音を小書きで表記しないもの
┗読み仮名データの促音・拗音を小書きで表記するもの(★)
今回は★のデータを使用しようと思います。
それは何故かって?
検索結果に読み仮名を表示する時に、正しい読み仮名で表示させたいからです。
その他細かな説明は郵便番号データの説明 – 日本郵便にて確認できます。
●次に住所データの仕様
住所データの各カラムの仕様は以下の通りです。 (一部注意事項は省略しています)

1.全国地方公共団体コード(JIS X0401、X0402)……… 半角数字
2.(旧)郵便番号(5桁)……………………………………… 半角数字
3.郵便番号(7桁)……………………………………… 半角数字
4.都道府県名 ………… 半角カタカナ
5.市区町村名 ………… 半角カタカナ
6.町域名 ……………… 半角カタカナ
7.都道府県名 ………… 漢字
8.市区町村名 ………… 漢字
9.町域名 ……………… 漢字
10.一町域が二以上の郵便番号で表される場合の表示(「1」は該当、「0」は該当せず)
11.小字毎に番地が起番されている町域の表示(「1」は該当、「0」は該当せず)
12.丁目を有する町域の場合の表示 (「1」は該当、「0」は該当せず)
13.一つの郵便番号で二以上の町域を表す場合の表示(「1」は該当、「0」は該当せず)
14.更新の表示(「0」は変更なし、「1」は変更あり、「2」廃止(廃止データのみ使用))
15.変更理由 (「0」は変更なし、「1」市政・区政・町政・分区・政令指定都市施行、「2」住居表示の実施、「3」区画整理、「4」郵便区調整等、「5」訂正、「6」廃止(廃止データのみ使用))
※別途細かな注意事項がありますが、詳細は郵便番号データの説明 – 日本郵便にて確認できます。
いくつかある注意事項の中で、特に注意すべき内容が以下の通り。
1.文字コードには、MS漢字コード(SHIFT JIS)を使用している。
※文字セットとして、JIS X0208-1983を使用し、規定されていない文字はひらがなで表記している。
2.全角となっている町域名の文字数が38文字を超える場合、また、半角カタカナとなっている町域名のフリガナが76文字を越える場合には、複数レコードに分割している。

※その他注意事項については、こちら
1について、今どき「SHIFT JIS」は厳しい。せめてUTF-8にしてほしい感じです。
しかも、「SHIFT JIS」で記載できない文字は「ひらがな」になってしまうとの事。
つまりブラウザを「UTF-8」対応しても、住所データは「ひらがな」なので、「SHIFT JIS」で表現できない住所が存在した場合に検索にヒットしないことになります。
件数は少ないと思いますが、解決すべき課題が1つ増えました。
次に2について・・・
これも今どき38バイトはある意味スゴイ!
このデータを管理しているシステムは、それなりに古い仕様で作られていると予想されます。
そんな事は良いとして、これでは正しく検索できないので、複数レコードを1レコードにまとめないといけません。
実際のデータを見てみると、複数レコードの場合は、同じ郵便番号(0660005)で連続してデータが存在しています。
実際のデータはこんな感じ↓(色字の部分です)
01224,”066 “,”0660005″,”ホツカイドウ”,”チトセシ”,”キヨウワ(88-2、271-10、343-2、404-1、427-“,”北海道”,”千歳市”,”協和(88-2、271-10、343-2、404-1、427-“,1,0,0,0,0,0
01224,”066 “,”0660005″,”ホツカイドウ”,”チトセシ”,”3、431-12、443-6、608-2、641-8、814、842-“,”北海道”,”千歳市”,”3、431-12、443-6、608-2、641-8、814、842-“,1,0,0,0,0,0
01224,”066 “,”0660005″,”ホツカイドウ”,”チトセシ”,”5、1137-3、1392、1657、1752バンチ)”,”北海道”,”千歳市”,”5、1137-3、1392、1657、1752番地)“,1,0,0,0,0,0
であれば仕様は簡単で、郵便番号が連続して複数存在した場合は、前のレコードを繋げる様な処理にすれば、1つのレコードに収まります。 (以下の様な感じ)
01224,”066 “,”0660005″,”ホツカイドウ”,”チトセシ”,”キヨウワ(88-2、271-10、343-2、404-1、427-“,”北海道”,”千歳市”,”協和(88-2、271-10、343-2、404-1、427-3、431-12、443-6、608-2、641-8、814、8425、1137-3、1392、1657、1752番地)“,1,0,0,0,0,0
※1つのレコードの収めないと、例えば「北海道千歳市協和427-3」の郵便番号を検索する際に、ものすごく複雑な処理を書かなければいけなくなってしまいますので・・・
ただ気になるのが、No13の「一つの郵便番号で二以上の町域を表す場合」です。
これに該当する(値が1になっている)データを見てみると、以下の様な感じになっています。(赤字の部分です)
07408,”96931″,”9693102″,”フクシマケン”,”ヤマグンイナワシロマチ”,”ニシミネ”,”福島県”,”耶麻郡猪苗代町”,”西峰“,0,0,0,1,0,0
07408,”96931″,”9693102″,”フクシマケン”,”ヤマグンイナワシロマチ”,”ネコイシヤマ”,”福島県”,”耶麻郡猪苗代町”,”猫石山“,0,0,0,1,0,0
07408,”96931″,”9693102″,”フクシマケン”,”ヤマグンイナワシロマチ”,”ハヤマ”,”福島県”,”耶麻郡猪苗代町”,”葉山“,0,0,0,1,0,0
このデータは見るからに1行のデータとして独立しています。
これは郵便番号が同じだからと言って、連続したレコードを繋げる事は出来ません。
よってこれらのケースは除外しつつ、複数行データを単一データに加工します。
●最後に
郵便番号データの説明 – 日本郵便の一番下に以下の様な記載があります。

郵便事業株式会社は著作権を主張しません。自由に配布していただいて結構です。

という記載があります。
なんと寛大な・・・
要はこのデータを煮ようが焼こうが好きにしてよいという事です。
そういう事であれば、自由に使わせて頂きます!
とりあえず他にも色々と課題が出てきそうですが、日の目を見るまで頑張ります。

カテゴリー: flashcast, zipnavi, 郵便番号検索 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です