■利用規定 このプログラムはフリーウェアです プログラムを使用したことにより何らかの損害が発生しても責任は設置者・利用者にあり 製作者であるインターネットコミュニティは一斉責任を負わない事を了承した場合に限り 利用することができます。 設置した場合は了承したものとします。 利用については営利・非営利を問いませんが著作権表示のリンクは削除しないでください 再配布は元の圧縮ファイルのまま行うこと 改造については自由に行って結構ですが改造版の配布については「改造版」であることが判るようにすること ■郵便番号検索表示処理CGI(配布版) 2.2 このプログラムは郵便番号検索CGIです 日本郵政公社が配布している「郵便番号辞書」を使用します 日本郵政公社の郵便番号辞書ファイルはデータが大きいため必要なデータに整理し(約3分の1)検索に使います このプログラムはサーバへの負荷を考慮してますが取扱うデータが4MB弱と 非常に大きいので同時アクセス数が増大する恐れがある場合はサーバ保護のため 「同時アクセス数制限」を有効にしてください ※パブリックサーバへの設置はおすすめできません ※プロバイダの利用規定に反する場合は設置しないでください ■変更履歴 2002/05/24 1.0 初版公開 2002/11/12 2.0 検索該当文字を強調表示するよう変更 ファイル名を変更しても同時アクセス制限が無効にならないよう変更 2003/04/09 2.1 総務省の郵便事業が日本郵政公社に変わりJSファイルと説明文の名称・リンクを変更 2005/01/30 2.2 JSファイル内の変数宣言などを見直し ■開発構成 言語はPERL5です、その他シェルコマンドとしてGREP・HEAD・PSを使います PSコマンドは「同時アクセス数制限」が有効の場合使用します 日本語の検索を行う際SJISのままでは誤検索の可能性が高いため このプログラムでは郵便番号辞書をEUCに変換して利用します EUCでも全角1文字の場合は誤検索されてしまいますが 全角2文字以上ならほぼ問題なく検索してくれます また、GREPには日本語化されたJGREPがあり、利用できる場合はこれを使いましょう JGREPの場合は全角1文字でも正しく検索されます(とのことです) HEADは表示するデータの制限に使用しています CGIが出力するHTMLですが、実はほとんどJavaScriptという変な仕掛けです HTMLタグは添付のJSファイル内にあります なぜこんな仕掛けかともうしますとサーバ負荷の軽減とデータ転送量の節約が目的です もし閲覧できないブラウザが存在した場合はご了承ください ■ファイル構成 KEN_ALL.CSV 郵便番号辞書(日本郵政公社よりダウンロード) KEN_ALL_EUC.pl 郵便番号辞書(変換後の辞書) conversion.cgi 郵便番号辞書変換プログラム(CGI) jcode.pl 日本語ライブラリ(最新版を入手してください) zip.cgi 郵便番号検索CGI zip.js JavaScriptファイル ■CGI設置 ※CGIやPERLなどの知識を要します、わからない方は勉強してから設置いてください 郵便番号辞書ファイルの変換を行います 日本郵政公社より郵便番号辞書ダウンロードします http://www.post.japanpost.jp/zipcode/ 辞書ファイルは「全国一括」を使用します ダウンロードしたファイルを解凍するとKEN_ALL.CSVができます。 変換に使うファイルとパーミッションは次の通りです KEN_ALL.CSV 644 KEN_ALL_EUC.pl 666 (空ファイルを用意) conversion.cgi 755 jcode.pl 644 転送モードは全てアスキーモードです 転送がおわりましたらブラウザで1回だけconversion.cgiにアクセスします 辞書変換には時間がかかります、サーバスペックにもよりますが数十秒〜数分です ※この作業はサーバに負担をかけますので必ず1回だけにしてください ※もしタイムアウトになる場合はTELNET等で直接conversion.cgiを実行します 変換が終わりましたらパーミッションを変更します KEN_ALL.CSV 600(削除してもよい) KEN_ALL_EUC.pl 644 conversion.cgi 600(削除してもよい) jcode.pl 644(変更なし) 次に検索用プログラムを転送設置します zip.cgi 755 zip.js 644 転送が終わりましたらzip.cgiにアクセスして動作確認してください ・検索できた!→おめでとうございます ・動かない!?→シェルコマンドや転送モード・パーミッションなど再確認のこと ■補足 ・GREPについて サーバによってはGREPを絶対パスで指定しないと動作しない場合があります ・JGREPについて ファイル名がGREPでもJGREPの場合があります、JGREPかどうかを 見分ける方法としては、検索文字に「超」の1文字で検索して 「京都府京都市左京区超勝寺門前町」 「愛媛県宇和島市大超寺奥」 の2件(02年05月現在)がヒットした場合はJGREPです 通常のGREPだと600件以上ヒット(誤ヒット)します ■提供 インターネットコミュニティ http://www.cityjp.com webmaster@cityjp.net ハンドル:やまねこ