Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

e5rijun/zip2addr

Open more actions menu
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
16 Commits
 
 
 
 
 
 
 
 

Repository files navigation

「郵便番号→住所」補完をshでやるデモ

これは何?

これは、ネット通販などでよくある「郵便番号に基づく住所補完機能」を シェルスクリプト(Bourne shell)+UNIX標準コマンド+Ajax で実装したものです。他のLL言語も、RDBMSも、jQuery等のJavaScriptライブラリーも、使っていません。

  • このプログラムは、他に curl コマンドと、漢字変換コマンド (iconv または nkf)を必要とします。
  • FreeBSD 9.1R と CentOS 6.3 で動作を確認しています。

デモを見る!

こちらでどうぞ。 さくらのクラウドいいね!(*^ー゚)b

注目すべきこと

その1.速さ

シェルスクリプトでプログラミングするなんて遅いと思い込んでいませんか?そんな方は論より証拠。このプログラムをWebサーバーにデプロイして動かしてみてください。

郵便番号は約12万レコードありますが、その中から指定された住所を探し、画面に表示するまで何秒かかりましたか?

シェルスクリプトはグルー言語。自分自身でこなそうとせずに、コマンドを呼んでそれらに任せればいいんです。UNIX標準コマンドはCで書かれているので速いですよ。

その2.難しいことも、簡単なことの組み合わせで実現できる

「シェルスクリプトって他の言語のような豊富なライブラリーないし、難しいことできないじゃない」って思い込んでいませんか?いやいや、たぶんそんなあなたの想像以上に色々なことできますよ。

例えばCSVデータの解析。そのために昔、parsrc.sh というコマンド自作しましたが、ご覧のとおり中身は AWK や sed や tr 等の組み合わせでできています。他にも、RDB 的なことをやらせたければ join コマンドなんてものがありますし、Web API を叩きたければ curl コマンドが便利ですし、メールを飛ばしたければ sendmail コマンドを使えばいいわけです。

実際、それで私はショッピングカートプログラムを作ってしまいました。(近日公開予定)

ファイル・ディレクトリー構成

.
|-- README.md ................ このファイル
|
|-- data  .................... 郵便番号辞書ファイル関連ディレクトリー
|   |
|   |-- mkzipdic_kenall.sh ... 郵便番号辞書を作成するシェルスクリプト(地域名用)
|   |-- mkzipdic_jigyosyo.sh . 郵便番号辞書を作成するシェルスクリプト(事業所用)
|   |                          ・要 zipコマンド、curlコマンド、及び iconv または nkf コマンド
|   |                          ・crontabなどから実行させるとよい
|   |
|   `-- jigyosyo.txt.sample .. 辞書ファイルのサンプル(地域名用、最初の30行を抜き出し)
|   |
|   `-- jigyosyo.txt.sample .. 辞書ファイルのサンプル(事業所用、最初の30行を抜き出し)
|
|
|-- public_html .............. Webディレクトリー(httpdでこの中を公開する)
|   |
|   |-- index.html  .......... 入力フォーム(Webブラウザーでこのファイルを開く)
|   |
|   |-- zip2addr.js .......... 郵便番号→住所 変換用クライアントサイドプログラム
|   |
|   |-- zip2addr.ajax.cgi .... 郵便番号→住所 変換用サーバーサイドプログラム
|   |                          (もちろんシェルスクリプト)
|   |
|   |-- zip2addr_xmlapi.ajax.cgi ... 郵便番号→住所 変換用サーバーサイドプログラム
|   |                               (よそのXML形式APIを叩いて検索するバージョン)
|   |
|   `-- zip2addr_jsonapi.ajax.cgi .. 郵便番号→住所 変換用サーバーサイドプログラム
|                                   (よそのJSON形式APIを叩いて検索するバージョン)
|
`-- commands ................. 自作コマンド置き場
    |
    |-- parsrc.sh ............ CSVをシェルスクリプト向けに正規化するコマンド"PARSeR-Csv"
    |
    |-- parsrj.sh ............ JSONをシェルスクリプト向けに正規化するコマンド"PARSeR-Json"
    |
    `-- parsrx.sh ............ XMLをシェルスクリプト向けに正規化するコマンド"PARSeR-Xml"
                               参考:https://gist.github.com/richmikan/3251311

About

郵便番号から住所欄を満たすアレを、シェルスクリプトでデモ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Shell 83.3%
  • HTML 12.0%
  • JavaScript 4.7%
Morty Proxy This is a proxified and sanitized view of the page, visit original site.