Leopardの「辞書」アプリで郵便番号辞書を使う


Mac OS X v10.5 “Leopard”の辞書(Dictionary.app)が面白くて仕方がない。control+command+Dを押していれば、どんどん自動的に辞書を引いていってくれるのは、思っていた以上に快適だ。 先の記事では、英辞郎の変換方法を紹介したが、ほかのデータでも辞書アプリを活用したい。そこで、日本郵便が公開している郵便番号データを辞書アプリ用に変換してみた。これから年賀状のシーズンだし。 この辞書では、郵便番号から住所を、あるいは逆に住所から郵便番号を引ける。読み方のわからない住所を調べるのにも役立つかもしれない。

使い方は以下の通り。

・Leopardのインストールディスクに含まれる開発ツールをインストールする(「Optional Installs」→「Xcode Tools」→「XcodeTools.mpkg」を実行) ・「/Developer/Exmaples/Dictionary Development Kit/project_templates」フォルダを適当な場所にコピーする ・日本郵便の郵便番号データダウンロードページから全国一括の郵便番号データをダウンロードして、コピーした「project_templates」フォルダに解凍する ・ここから「zip_conv???.zip」をダウンロードして、上と同じフォルダに解凍(同じファイル名は上書き) ・「ユーティリティ」フォルダの「ターミナル」アプリケーション(Terminal.app)を起動して、「cd」コマンドで(コピーした)「project_templates」フォルダに移動する ・「ruby zip_conv.rb > MyDictionary.xml ; make ; make install」と入力する(「Duplicate index. Skipped……」というメッセージがずらずら表示されるが、重複しているインデックスをスキップしているということなので心配する必要はない……と思う) ・「辞書」アプリケーション(Dictionary.app)を起動する ・郵便番号、住所(漢字/読み)から検索できる。町名だけでも可

使用する上での注意点: ・使用はあくまでも自己責任で。このツールを利用して生じたいかなる損害についても作者は責任を負わないものとする。 ・住所から検索する場合、同じ町域であっても異なる郵便番号が割り当てられていることがあるので注意(1丁目と2丁目で郵便番号が違うなど)。特に、「辞書」アプリのポップアップ機能を使っている場合は、最初に合致した候補しか表示されない。「詳細」をクリックして、すべての候補を表示した方がいいだろう ・日本郵便が提供しているデータを変換しているだけなので、元データにない表記では引けない。例えば、「恵比寿ガーデンプレイス」の町域は「恵比寿恵比寿ガーデンプレイス」であり、「恵比寿ガーデンプレイス」だけではヒットしない(Leopardの「辞書」アプリが前方一致にしか対応していないため)

本当は丁目までも認識するようにしたかったのだけど、かなり面倒くさい処理になりそうだったので諦めた。それにしても、町域名の文字数が38文字を超える場合は複数レコードになるとか、なかなか素人には厳しいデータ形式になっているなあ(愚痴)。

(2007年11月21日追記) 事業所の個別郵便番号も引けると便利だろうと思い(変換も簡単そうだし)、調べてみて愕然。本来音引き(ー)にすべきデータがマイナス記号になっている。しかも、マイナス記号で表記すべきところも混在していて、データ上区別できない。Webページの郵便番号検索サービスでも同様のようだ。例えば、「株式会社トーメン 新潟支店」(当然本来「ー」は音引き)は「ト?メン」(表示は同じように見えるが、音引きとは別の記号)でないと検索できなかったりするのだ。よくこれまで問題にならなかったなあ……。

コメント

Tats_y
スクリプトを書き換えるより、RVM(Ruby Version Manager)を使って、古いバージョンのRubyを動かした方がいいかもしれません。私もRVMを使ったことはないのですが、"rvm mac"で調べるといろいろ情報が出てくると思います。
Y. Takahashi
OS X 10.9.2 (Mavericks) の環境のもと,郵便番号データの辞書化をやって見ました。 記事:Leopard の「辞書」アプリで郵便番号辞書を使う に従って処理しています。残念ながら次のようなエラーが出てうまく変換してくれま せん。 当方は Ruby のことを知らないので,手が出せないのが残念です。行頭の数字は行番号 です。2 行目は "\" 記号の部分で折り返しています。このエラーのうち,$KCODE の部 分については,Web 上の情報を参考に対応できましたが,2 行目の部分は歯が立ちま せん。 こちらの Ruby の環境は ruby 2.0.0p247 (2013-06-27 revision 41674) と表示され ます。ruby 2 の環境で郵便番号辞書化に成功なさった例をご存じでしょうか。 -------------- エラー・ログ ------------------------- [project_templates]> ruby zip_conv.rb > MyDictionary.xml ; make ; make install 1 zip_conv.rb:6: warning: variable $KCODE is no longer effective; ignored 2 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/\ rubygems/core_ext/kernel_require.rb:45:in `require':\ cannot load such file -- iconv (LoadError) 3 .......... 7 Makefile:36: *** missing separator. Stop. 8 Makefile:36: *** missing separator. Stop.