futomi's CGI Cafe

郵便番号・住所検索CGI Ver 2.0



 郵便番号(7桁)から住所を検索するCGIです。ゆうびんホームページ郵便番号検索ページにて公開されている新郵便番号データ(事業所の個別郵便番号を含む)からデータベースを構築されています。日本全国すべての郵便番号に対応しております。また、郵便番号データベースは膨大ながらも、GDBM(GNUデータベース・マネージャ)を使っているため、すばやい検索を実現しております。ホームページでのご注文フォームなどで住所の入力軽減ツールとしてご利用ください。入力フォームや結果ページはテンプレート方式ですので、ご自由にカスタマイズできます。
 
■ 目次
■ 主な機能
  • 郵便番号から住所を検索します。

ゆうびんホームページ郵便番号検索ページにて公開されている新郵便番号データ(事業所の個別郵便番号を含む)に登録されている住所を検索し、ページに表示します。表示できる項目は、以下の通りです。

  • 郵便番号
  • 都道府県
  • 都道府県カナ(全角)
  • 市区町村
  • 市区町村カナ(全角)
  • 町域名
  • 町域名カナ
  • 小字名、丁目、番地等
  • 事業所名
  • 事業所名カナ(全角)
事業所郵便番号の場合にのみ検索されます。
  • テンプレート方式でデザインは自由自在。

検索結果のページは、テンプレート方式を取っておりますので、デザインは自由自在に設定できます。また、不要なデータを表示しないようにすることも自由自在です。

  • テンプレートはいくつでも利用できます。

CGIを一つセットアップするだけで、検索結果に使うテンプレートは、いくつでもご利用いただけます。

  • 入力データ補正機能

郵便番号を全角で入力しても、ハイフンを入れても入れなくても、正しく検索可能です。

 

 
■ 動作環境

このCGIは、以下の環境下で動作します。お使いのサーバが対応しているかをご確認ください。

  • サーバの OS が Linux であること。
  • Perl5 が実装されていること。
  • Perl5 の標準モジュール「CGI.pm」が実装されていること。
  • GDBM (GNU データベース・マネージャ)が利用できること。
  • サーバの空き容量が、13 MB 以上あること。
 
■ CGI利用規定の同意

CGI利用規定をご覧になり、同意した上で、ご利用ください。

CGI利用規定を読む

 
■ シェアウェア料金

【料金】

個人利用 法人・商用利用
フリー 1サイトあたり \1,000 (税別)
  • 本CGIには、テンプレートファイルに 著作権表示が記載されております。個人利用であっても、著作権表示を削除してご利用いただく場合には、シェアウェアとし「法人・商用利用」を適応いたします。
  • 個人利用であっても、個人商店など商用サイトでのご利用の場合には、「法人・商用利用」を適応いたします。
  • ホームページ作成代行業などの業者様でクライアントに対して本CGIを代行で設置提供する場合には、「法人・商用利用」を適応いたします。
  • 本CGIは、同サイト内であればいくつ設置して頂いても構いません。ただし、運営者が同じでも、主旨が異なるサイトに設置する場合には、それぞれにシェアウェア料金を適応します。
  • 本CGIは、試用期間を設けておりません。シェアウェア料金をお支払いいただく前に、十分ご試用いただき、ご納得いただいてからお支払いいただきますようお願いいたします。

【支払い方法】

Vectorにてお支払いいただけます。Vectorをご利用になる場合は、こちらからお申し込みください。

銀行振込をご希望の方は、こちらからご連絡ください。折り返し、ご案内いたします。

■ ファイルの一覧と機能

CGIをダウンロードし、解凍してください。それぞれのファイルについて解説します。

ファイル名 パーミッション1 パーミッション 転送モード ファイルの機能
 postalcode/
変更不要 変更不要 本CGI用ディレクトリ
 getaddr.cgi
704 705 [ASCII] CGI本体
 config.cgi
変更不要 変更不要 [ASCII] 設定ファイル
 form.html
変更不要 変更不要 [ASCII] 郵便番号入力フォームサンプルHTML
 result.html
変更不要 変更不要 [ASCII] 結果テンプレートサンプルHTML
 result1.html
変更不要 変更不要 [ASCII] 結果テンプレートサンプルHTML
 error.html
変更不要 変更不要 [ASCII] エラー画面テンプレートサンプルHTML
 jcode.pl
変更不要 変更不要 [ASCII] 日本語コード変換ライブラリー※1
 localcode.gdbm
変更不要 変更不要 [BINARY] データベースファイル1
 postalcode.gdbm
変更不要 変更不要 [BINARY] データベースファイル2
 ReadMe/
ReadMe※2
※1 jcode.pl は、歌代 和正 <utashiro@iij.ad.jp> 氏によって作成されている、日本語コード変換を行うための Perl ライブラリです。
※2 HTML形式のReadMeファイルです。このホームページが入っています。このフォルダは、サーバへアップロードする必要がありません。

■ 転送先

フォルダ「postalcode」を、転送モードに注意して、プロバイダー指定の場所にアップロードしてください。入力フォームとなる「form.html」に関しては、通常の HTML ファイルをアップロードする場所に設置してください。ただし、form タグ内の CGI の URL は書き換えてください。(後述)

また、データベースファイルは 2 つ(localcode.gdbm, postalcode.gdbm)ありあすが、これらのファイルも同じディレクトリにアップロードしてください。データベースファイルをアップロードする際には、バイナリーモードで転送してください。

■ パーミッション

これらパーミッションは、あくまでも例です。お使いのプロバイダー、レンタルサーバ業者の指示に従ってください。

上表には、パーミッションの指定が 2 種類指定しております。CGI がオーナー権限で実行されるサーバをお使いの場合には、パーミッション1の設定を使ってください。CGI が ohter 権限で実行されるサーバをお使いの場合には、パーミッション2の設定を使ってください。

CGI がオーナー権限で実行されるか、other 権限で実行されるかは、お使いのプロバイダーもしくはレンタルサーバ業者に確認してください。おおむね、CGI ファイルのパーミッションが、704 でも動作する場合には、オーナー権限で実行されると考えても結構です。CGI ファイルのパーミッションが、705 もしくは 707 でないと動作しない場合には、other 権限で実行されているとお考えください。

「変更不要」と指定しているファイルは、サーバにアップロードするだけで OK です。あえてパーミッションを変更しないでください。


■ Let's get started!

とりあえず、動かしてみましょう。以下の手順に従って、サンプルを動かしてみましょう。

  1. 郵便番号入力フォームの修正

添付の郵便番号入力フォームHTML「form.html」をテキストエディタで開いてください。

<form method="POST" action="getaddr.cgi">

getaddr.cgi」の部分を、CGI を設置したサーバに合わせて URL を正しく書き直してください。

  1. Perlのパス設定

プロバイダーによって、Perlパスが異なります。デフォルトでは「#!/usr/local/bin/perl」と設定しております。プロバイダーの指示に従い、「getaddr.cgi」の1行目を書き換えてください。ほとんどのプロバイダーでは、そのままで動作します。

  1. サーバへアップロード

これで設定は完了ですので、サーバへアップロードしましょう。「localcode.gdbm」「postalcode.gdbm」は BINARI モードで、その他のファイルはすべて ASCII モードで転送してください。ホームページコンテンツとCGIのディレクトリが異なるプロバイダーをご利用の方は、「form.html」をホームページコンテンツ用のディレクトリへ、その他はCGI用のディレクトリへアップろロードしてください。転送が完了しましたら、「getaddr.cgi」のパーミッションを「704」にして下さい。もし、お使いのプロバイダーでは異なるパーミッションを指定しているようでしたら、プロバイダーの指示に従ってください。

  1. さぁ! 試験してみましょう

サーバへアップロードした「form.html」に、ブラウザーでアクセスしてみてください。フォームサンプル画面が表示されましたね。ここに郵便番号を入力して検索ボタンを押してください。すると、該当の住所が表示されます。

いかがでしたか?ちゃんと動いたでしょうか。これからは、あなたの環境に合わせて、少しずつカスタマイズしていってください。次から、カスタマイズの方法をご案内します。

 
■ フォームの編集方法

サンプルの「form.html」を例に取り説明します。

<form method="POST" action="http://www.hoge.com/cgi-bin/postalcode/getaddr.cgi">
<input type="hidden" name="template" value="result1.html">
<table border="0">
<tr>
<td nowrap>郵便番号を入力して下さい。</td>
<td nowrap><input type="text" name="postalcode" size="20"></td>
<td nowrap><input type="submit" value="検索" name="B1"></td>
</tr>
</table>
</form>

例の赤字の部分のみが必須です。その他の部分は、自由に変更して頂いても構いません。それぞれの意味は、以下の通りです。
<form method="POST" action="http://www.hoge.com/cgi-bin/postalcode/getaddr.cgi">
Let's Get Started で説明したように、「http://www.hoge.com/cgi-bin/postalcode/getaddr.cgi」の部分は、お使いのサーバに合わせて変更してください。
<input type="hidden" name="template" value="result1.html">
ここは結果を表示するためのテンプレートHTMLファイルの指定です。指定がない場合には、「result.html」というテンプレートファイルを使います。複数のテンプレートを利用したい場合などには、ここで個別に指定して下さい。
<input type="text" name="postalcode" size="20">
name属性の「postalcode」は必須です。この名前を変更すると正しく動作しませんので、ご注意ください。size属性はご自由に変更して頂いても構いません。
<input type="submit" value="検索" name="B1">
検索ボタンのタグです。valueの「検索」や, nameの「B1」の部分はご自由に変更して頂いても構いません。
</form>
フォームタグを閉じます。忘れないように最後に記述しておいて下さい。

■ 検索結果テンプレートHTMLファイルの編集方法

サンプルの「confirm.html」を例にとり説明します。

<table border="1">
<tr>
<td>郵便番号</td>
<td>$POSTALCODE1$-$POSTALCODE2$</td>
</tr>
<tr>
<td>都道府県</td>
<td>$PREF$</td>
</tr>
<tr>
<td>市区町村</td>
<td>$CITY$</td>
</tr>
<tr>
<td>番地</td>
<td>$TOWN$</td>
</tr>
<tr>
<td>都道府県カナ</td>
<td>$PREFKANA$</td>
</tr>
<tr>
<td>市区町村カナ</td>
<td>$CITYKANA$</td>
</tr>
<tr>
<td>番地カナ</td>
<td>$TOWNKANA$</td>
</tr>
<tr>
<td>事業所名</td>
<td>$ORG$</td>
</tr>
<tr>
<td>事業所名カナ</td>
<td>$ORGKANA$</td>
</tr>
</table>

例えば、「$PREF$」と書かれた部分は、CGIプログラムによって「東京都」のように都道府県名に置き換えられます。その他の項目も同様で、それぞれに対応した文字列を指定して記述すれば、その部分が該当する結果に置き換えられます。対応は以下の通りです。

文字列 結果
$POSTALCODE1$ 検索のキーとなった郵便番号の上3桁です。入力された郵便番号が全角で入力されたとしてもすべて半角数字に変換されます。設定により全角数字に変換することも可能です。
$POSTALCODE2$ 検索のキーとなった郵便番号の下4桁です。入力された郵便番号が全角で入力されたとしてもすべて半角数字に変換されます。設定により全角数字に変換することも可能です。
$PREF$ 都道府県名に置き換えられます。(漢字)
$CITY$ 市区町村に置き換えられます。(漢字)
$TOWN$ 小字名、丁目、番地等に置き換えられます。(漢字)
$PREFKANA$ 都道府県名カナに置き換えられます。(全角カナ)
$CITYKANA$ 市区町村名カナに置き換えられます。(全角カナ)
$TOWNKANA$ 小字名、丁目、番地等のカナに置き換えられます。(全角カナ)
$ORG$ 事業所(会社)名に置き換えられます。
$ORGKANA$ 事業所(会社)名のカナに置き換えられます。(全角カナ)
事業所郵便番号の場合にのみ検索されます。

なお、指定文字列は、全角・半角、大文字・小文字を区別します。必ず半角・大文字で指定して下さい。
 
■ エラー画面テンプレートの編集方法

サンプルの「error.html」を例にとり説明します。

<table border="0" width="50%" bgcolor="#F1D7FF" cellpadding="10">
<tr>
<td width="100%"><font color="#990033">$EEROR$</font></td>
</tr>
</table>

このエラー画面で注意すべきところは、「$EEROR$」だけです。この部分に、エラーメッセージが表示されますので、お好きなところに、「$EEROR$」を記述して下さい。もし、個別のエラーメッセージではなく、単一のメッセージにしたい場合には、「$EEROR$」を消して下さい。

■ 機能・環境設定

すべての機能設定、環境設定は、「config.cgi」で行います。すべて重要な設定項目ですので、もれなく説明を読んでいただき、お好みにあわせて設定してください。

#--------------------------------------------------------------------
#■テンプレートファイル格納ディレクトリ
# すべてのテンプレートファイルを格納するディレクトリの指定です。ここ
# での指定は、検索結果テンプレート、エラー画面テンプレートのディレク
# トリとなります。「getaddr.cgi」と同じディレクトリに設置する場合には
# $TEMP_DIR = '.';
# として下さい。ディレクトリを指定する場合には、「getaddr.cgi」からみ
# た相対パスで指定して下さい。また、最後に「/(スラッシュ)」を入れな
# いで下さい。
#--------------------------------------------------------------------
$TEMP_DIR = '.';


#--------------------------------------------------------------------
#■デフォルトの結果表示用テンプレートHTMLファイル名の指定
# 結果表示用テンプレートHTMLは、フォームHTMLで指定されますが、もし指
# 定されなかった場合に使うデフォルトのテンプレートファイルを指定しま
# す。ここでの指定は、あくまでもファイル名の指定です。パスは加えない
# で下さい。パスの指定は、上の $TEMP_DIR で指定して下さい。
#--------------------------------------------------------------------
$ResultTemplate = 'result.html';


#--------------------------------------------------------------------
#■エラー画面テンプレートファイル名の指定
# エラー画面用のテンプレートファイル名の指定です。ここでの指定は、あ
# くまでもファイル名の指定です。パスは加えないで下さい。パスの指定は
# 上の $TEMP_DIR で指定して下さい。
#--------------------------------------------------------------------
$ERROR_TEMP = 'error.html';


#--------------------------------------------------------------------
#■郵便番号全角変換機能
# 検索結果に表示する郵便番号を全角、半角どちらで表示するかを指定しま
# す。半角の場合には「0」を、全角の場合には「1」を指定して下さい。
#--------------------------------------------------------------------
$ZENKAKU_FLAG = 0;


#--------------------------------------------------------------------
#■外部サーバからの利用禁止設定
# このCGIを使って、まったく別のページから勝手に利用されないように、
# フォームのURLを限定することができます。CGIの利用を許可するフォーム
# のURLを指定して下さい。指定がない場合には、制限は一切かかりません。
# ここで指定するURLのパターンマッチは、すべて前方一致です。
#
# 例:
# フォームのURLが、http://www.hoge.com/form.html の場合、
# @AllowFormUrls = ('http://www.hoge.com/form.html');
#
# 複数のフォームが存在し、それがすべて http://www.hoge.com/ 内にある
# 場合には、
# @AllowFormUrls = ('http://www.hoge.com/');
# これで、http://www.hoge.com/配下のページからのアクセスはすべて許可
# します。
#
# 複数のドメインからの利用を許可する場合には、
# @ALLOW_FORM_URLS = ('http://www.foo.com/', 'http://www.bar.com/');
# のように指定します。
#
# 【制限事項】
# この機能は、ブラウザーが送ってくる参照元URL(HTTP_REFERER)を使っ
# ています。もしこの機能を使った場合、HTTP_REFERERを送信しないブラ
# ウザーからアクセスした場合、エラーとなってしまいますので、ご注意
# ください。(i-modeなど)
#--------------------------------------------------------------------
@ALLOW_FORM_URLS = ();


#--------------------------------------------------------------------
#■検索結果がヒットしなかった場合の動作設定
# 入力フォームから入力された郵便番号から検索した結果、該当する住所が
# なかった場合にどうするかを設定します。
# エラー画面を表示する場合には「1」を、そのまま結果ページを表示する
# 場合には「0」を指定して下さい。
#--------------------------------------------------------------------
$NO_HIT_FLAG = 0;




#--------------------------------------------------------------------
# これ以降は、決して削除しないで下さい。
#--------------------------------------------------------------------
return 1;

■ 制限・注意事項
  • 本CGIは、SJISで作成されており、それが前提で動作します。他の文字コードに変換すると動作しなくなりますので、ご注意ください。
  • 各種テンプレートはすべてSJISで作成されていることを前提に動作します。他の文字コードで作成されますと、正しく動作しませんので、ご注意ください。
  • 外部サーバからの利用禁止設定機能は、ブラウザーが送ってくる参照元URL(HTTP_REFERER)を使っています。HTTP_REFERERを送信しないブラウザーからアクセスした場合、エラーとなってしまいますので、ご注意ください。(i-modeなど)
  • サーバに、GDBMが実装されていないと動作しません。お使いのプロバイダーもしくはレンタルサーバ業者にお問い合わせください。
■ バージョンアップ方法

Ver 1.x をお使いの方は、お手数ながら、設定ファイル config.cgi の設定を再度行っていただき、すべてのファイルを上書きしてください。

 
■ バージョンアップ履歴

【Ver 1.2 → Ver 2.0】 2002/07/24

  • GDBM がサーバに実装されていない場合、その旨、エラー表示するようにした。
  • getaddr.cgi, config.cgi のソースコードを書き直した。
  • データベースを最新版に更新。(ゆうびんホームページ郵便番号検索ページにて、平成14年6月1日現在のデータを平成14年7月23日に掲載されたものをデータベース化

【Ver 1.1 → Ver 1.2】 2002/06/16

  • 一部海外サーバにおいて文字化けする現象を回避するよう改善。
  • データベースを最新版に更新。(ゆうびんホームページ郵便番号検索ページにて、平成14年4月1日現在のデータを平成14年5月29日に掲載されたものをデータベース化

【Ver 1.1 → Ver 1.2】 2002/05/20

【Ver 1.0 → Ver 1.1】 2001/11/15

 

 

futomi's CGI Cafe