プログラミングの最大の楽しさは,「手作業では不可能なことが,プログラムを書くと可能になる」という快感ではないでしょうか。Part1の「Visual Basic,C#,C++でプログラムを作ってみよう」に続いて,Part2からは,12万件を超える日本全国の郵便番号データを操作するプログラムを書いてみます。手作業では時間がかかりすぎて現実的ではない大量のデータ処理が,プログラムを書くと可能になるということを体感してもらえればと思います。

 これから作るのは,郵便番号検索プログラム「yubin1.exe」(図1)です。図1の例では「富塚」という地名を入力して,それに対応する郵便番号の一覧を得ています。地名から郵便番号を検索したり,郵便番号から地名を検索したりできます。

図1●Part2とPart3で作り上げる郵便番号検索プログラム「yubin1.exe」の画面
図1●Part2とPart3で作り上げる郵便番号検索プログラム「yubin1.exe」の画面
[画像のクリックで拡大表示]

データは一括ダウンロードする

 最新の郵便番号のデータは,日本郵便(正式社名は郵便事業株式会社)のWebサイトからダウンロードできます。「住所の郵便番号」と「事業所の個別郵便番号」の2種類があり,それぞれ12万2388件,2万1174件のデータが入っています*1。さらに,住所の郵便番号には「読み仮名データの促音・拗音を小書きで表記しないもの」(例:ホツカイドウ)と,「読み仮名データの促音・拗音を小書きで表記するもの」(例:ホッカイドウ)があります。今回は後者を使います。

 住所の郵便番号のデータは,「KEN_ALL.CSV」というファイルに格納されています*2。KEN_ALL.CSVはテキスト・ファイル*3で,テキスト・エディタ*4で開くとリスト1のような中身を見ることができます。リスト1は,1行に1件のデータが入り,1行の中に複数の列があり,列と列の間は「,」(カンマ)で区切られています。こうしたファイルを「カンマ区切りテキスト」または「CSV(Comma Separated Values)ファイル」と呼びます。

リスト1●郵便番号の元データ「KEN_ALL.CSV」。2007年11月30日版は12万2388件のデータを含み,ファイルの大きさは11.5Mバイトである
リスト1●郵便番号の元データ「KEN_ALL.CSV」。2007年11月30日版は12万2388件のデータを含み,ファイルの大きさは11.5Mバイトである
[画像のクリックで拡大表示]

 リスト1のKEN_ALL.CSVをそのまま使って,図1のプログラムを作ることもできます。しかし,KEN_ALL.CSVの中には読みがなのように今回のプログラムでは使わないデータが含まれており,ムダが多くなってしまいます。そこで,リスト1の形式のデータからリスト2の形式のデータ「yubin.txt」に変換し,それを図1のプログラムで利用します。原データのKEN_ALL.CSVは11.5Mバイトの大きさがありますが,yubin.txtは3.76MBで済みます。そのぶん図1のプログラムがデータを読み込む時間が短くなり,消費するメモリーの量が少なくなります。

リスト2●リスト1を,このような形に変換する(ファイル名は「yubin.txt」とする)。郵便番号と地名の間は半角スペースで区切る。こうすると3.76Mバイトまで小さくできる
リスト2●リスト1を,このような形に変換する(ファイル名は「yubin.txt」とする)。郵便番号と地名の間は半角スペースで区切る。こうすると3.76Mバイトまで小さくできる

 このPart2では,リスト1の形式のデータから,リスト2のyubin.txtに変換するプログラムを作ります。最初に作るのは「convert1.exe」ですが,改良例として「convert2.exe」と「convert3.exe」を作ります。Part3で,図1のプログラムを作成します。言語はVisual Basicを使います。

 郵便番号を扱う方法は,様々なプログラムに応用できます。住所録,ショッピングのWebサイトなどはすぐに思い付くところでしょう。郵便番号を住所に変換してユーザーの入力の手間を軽減すればきっと喜ばれますし,誤った,または古くなった地名や郵便番号をチェックしてデータの妥当性を保つ処理にも使えます。これを機会に,ぜひマスターしておいてください。