郵便番号(7桁)から住所を検索するCGIです。日本郵政公社のゆうびんホームページの郵便番号ページにて公開されている新郵便番号データ(事業所の個別郵便番号を含む)からデータベースを構築されています。日本全国すべての郵便番号に対応しております。また、郵便番号データベースは膨大ながらも、GDBM(GNUデータベース・マネージャ)を使っているため、すばやい検索を実現しております。ホームページでのご注文フォームなどで住所の入力軽減ツールとしてご利用ください。入力フォームや結果ページはテンプレート方式ですので、ご自由にカスタマイズできます。
サンプル1 サンプル2
サンプルでは、郵便番号を入力させ注文フォームの住所欄に自動的に結果が挿入されることを想定したものです。このサンプルは、同梱されているテンプレートファイルとは異なります。
日本郵政公社のゆうびんホームページの郵便番号ページにて公開されている新郵便番号データ(事業所の個別郵便番号を含む)に登録されている住所を検索し、ページに表示します。表示できる項目は、以下の通りです。
- 郵便番号
- 都道府県
- 都道府県カナ(全角)
- 市区町村
- 市区町村カナ(全角)
- 町域名
- 町域名カナ
- 小字名、丁目、番地等※
- 事業所名※
- 事業所名カナ(全角)※
検索結果のページは、テンプレート方式を取っておりますので、デザインは自由自在に設定できます。また、不要なデータを表示しないようにすることも自由自在です。
CGIを一つセットアップするだけで、検索結果に使うテンプレートは、いくつでもご利用いただけます。
郵便番号を全角で入力しても、ハイフンを入れても入れなくても、正しく検索可能です。
このCGIは、以下の環境下で動作します。お使いのサーバが対応しているかをご確認ください。
- サーバの OS が Linux、FreeBSD であること。
- Perl5 が実装されていること。
- Perl5 の標準モジュール「CGI.pm」が実装されていること。
- GDBM (GNU データベース・マネージャ)が利用できること。
- サーバの空き容量が、13 MB 以上あること。
CGI利用規定をご覧になり、同意した上で、ご利用ください。
CGI利用規定を読む
【料金】
| 個人利用 |
法人・商用利用 |
| フリー |
1サイトあたり
\1,050
(うち税 \50) |
- 本CGIには、テンプレートファイルに 著作権表示が記載されております。個人利用であっても、著作権表示を削除してご利用いただく場合には、シェアウェアとし「法人・商用利用」を適応いたします。
- 個人利用であっても、個人商店など商用サイトでのご利用の場合には、「法人・商用利用」を適応いたします。
- ホームページ作成代行業などの業者様でクライアントに対して本CGIを代行で設置提供する場合には、「法人・商用利用」を適応いたします。
- 本CGIは、同サイト内であればいくつ設置して頂いても構いません。ただし、運営者が同じでも、主旨が異なるサイトに設置する場合には、それぞれにシェアウェア料金を適応します。
- 本CGIは、試用期間を設けておりません。シェアウェア料金をお支払いいただく前に、十分ご試用いただき、ご納得いただいてからお支払いいただきますようお願いいたします。
【支払い方法】
クレジットカード決済、コンビニ決済、Vectorシェアレジ、銀行振込をご用意しております。シェアウェア料金のお支払はこちらからどうぞ。
|
クレジットカード決済
|
|
|
|
|
|
VISA
|
MASTER
|
Diners Club
|
|
コンビニ決済
|
|
|
 |
 |
|
|
セブン
イレブン
|
ファミリー
マート |
ローソン |
セイコー
マート
|
【CGI 本体】
このパッケージに含まれるデータベースは、日本郵政公社のゆうびんホームページの郵便番号ページにて公開されている平成17年1月31日更新版を、Linux サーバ用にデータベース化したものです。FreeBSD サーバをお使いの場合には、別途、データベースファイルをダウンロードしてください。Linux サーバをご利用の方においても、最新版のデータベースは、別途、下段のデータベースファイルをダウンロードして下さい。
| ・ 圧縮形式 |
zip |
| ・ ファイルサイズ |
5.52 MB (5,793,148 バイト) |
| ・ ファイル名 |
postalcode2_3.zip |
|

|
【データベースファイル】
日本郵政公社のゆうびんホームページの郵便番号ページにて公開されている平成19年08月31日更新版をデータベース化したものです。お使いのサーバ OS にあわせて、ダウンロードしてください。解凍すると、localcode.gdbm, postalcode.gdbm が同梱されています。これらのファイルを、BINARY モードでサーバに上書きアップロードして下さい。
| ・ 対応 OS |
Linux |
| ・ ファイルサイズ |
5.51 MB (5,785,256 バイト) |
| ・ ファイル名 |
db_linux_20070831.zip |
|

|
| ・ 対応 OS |
Free BSD |
| ・ ファイルサイズ |
5.05 MB (5,305,164 バイト) |
| ・ ファイル名 |
db_bsd_20070831.zip |
|

|
とりあえず、動かしてみましょう。以下の手順に従って、サンプルを動かしてみましょう。
- 郵便番号入力フォームの修正
添付の郵便番号入力フォームHTML「form.html」をテキストエディタで開いてください。
| <form method="POST" action="getaddr.cgi"> |
「getaddr.cgi」の部分を、CGI を設置したサーバに合わせて URL を正しく書き直してください。
- Perlのパス設定
プロバイダーによって、Perlパスが異なります。デフォルトでは「#!/usr/local/bin/perl」と設定しております。プロバイダーの指示に従い、「getaddr.cgi」の1行目を書き換えてください。ほとんどのプロバイダーでは、そのままで動作します。
- サーバへアップロード
これで設定は完了ですので、サーバへアップロードしましょう。「localcode.gdbm」「postalcode.gdbm」は BINARI モードで、その他のファイルはすべて ASCII モードで転送してください。
同梱されているデータベースファイルは Linux サーバ用です。お使いのサーバが Free BSD または Solaris(Intel 版)の場合には、別途、こちらからデータベースファイルをダウンロードして、お使いのサーバにアップロードして下さい。
ホームページコンテンツとCGIのディレクトリが異なるプロバイダーをご利用の方は、「form.html」をホームページコンテンツ用のディレクトリへ、その他はCGI用のディレクトリへアップろロードしてください。転送が完了しましたら、「getaddr.cgi」のパーミッションを「704」にして下さい。もし、お使いのプロバイダーでは異なるパーミッションを指定しているようでしたら、プロバイダーの指示に従ってください。
- さぁ! 試験してみましょう
サーバへアップロードした「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> |
| フォームタグを閉じます。忘れないように最後に記述しておいて下さい。 |
サンプルの「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;
Ver 2.0 以上をお使いの方は、getaddr.cgi の Perl のパスを確認のうえ、ASCII モードで上書きアップロードして下さい。加えて、postalcode.gdbm、localcode.gdbm の 2 ファイルをバイナリーモードでサーバに上書きアップロードして下さい。
Ver 1.x をお使いの方は、お手数ながら、設定ファイル config.cgi の設定を再度行っていただき、すべてのファイルを上書きしてください。
【Ver 2.2 → Ver 2.3】 2005/02/09
- 郵便番号を全角数字で入力すると Internal Server Error となってしまうバグを改修した。
- データベースを最新版に更新。(ゆうびんホームページの郵便番号ページにて公開されている平成17年1月31日更新版をデータベース化
【Ver 2.1 → Ver 2.2】 2003/11/16
- 105-0014(東京都 港区 芝)、108-0014(東京都 港区 芝)、105-0023(東京都 港区 芝浦)、108-0023(東京都 港区 芝浦)を検索すると、「芝」が「ネ」と表示されてしまう不具合を修正した。
【Ver 2.0 → Ver 2.1】 2002/08/11
- データベースファイルを開けなかった場合のエラー表示を修正。
- データベースファイルを Linux 版に加え、Free BSD 版、Solaris(Intel 版)を追加。
【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
- データベースを最新版に更新。(ゆうびんホームページの郵便番号ページページにて、平成14年3月1日現在のデータを平成14年4月25日に掲載されたものをデータベース化
【Ver 1.0 → Ver 1.1】 2001/11/15
- データベースを最新版に更新。(ゆうびんホームページの郵便番号ページページにて、平成13年9月1日現在のデータを平成13年10月22日に掲載されたものをデータベース化