ホーム » ビジネスブログ » Ajax (システム開発) »

「つくるぶ特集 Flash|Ajax ベストサイトセレクション20」:郵便番号から住所ライブラリと、クライアント側での描画のテクニック

2007年10月10日

「つくるぶ特集 Flash|Ajax ベストサイトセレクション20」:郵便番号から住所ライブラリと、クライアント側での描画のテクニック

投稿者 竹村

SEの竹村です。
スミマセン、あいだが開いちゃいました。

今回も「つくるぶ特集 Flash|Ajax ベストサイトセレクション20」のJavaScriptの技術面をフォローしていきます。

▼Flash | Ajax ベストサイトセレクション20
http://www.tkrb.jp/modules/feature0/index.php?id=12
flash_ajax_20_vol_th.jpg

フォローを弊社のブログで行う理由は、「実際にどのように作るのか」という部分がある程度見えていた方がよいのでは?という話もあったのですが、Ajax ベストサイトセレクション20ではプログラム的な話はしていないためです。


さて、第3回は

 「お題4>ストレスなくオペレーションできるサイト」で紹介した「スコヤカ屋さん」と、
 「お題5>検索が楽しくなるサイト」「symbaloo」について、どのように実装されているのかを説明していきます。

まずは「スコヤカ屋さん」です。

▼スコヤカ屋 ― カンロの健康通販ショップ
http://www.sukoyaka-ya.com/
sukoyaka.jpg

こちらのサイトではのど飴で有名なカンロがオンラインで販売しています。
ポイントは、カートからの個人情報入力画面で実装されている「郵便番号から住所を検索」する部分です。郵便番号を入力するだけで、対応する住所が補完されるわけですね。

ライブラリ的には下記のものを利用しています。

▼ajaxな住所入力フォーム
http://www.kawa.net/works/ajax/zip/ajaxzip.html

上記サイトにも書かれていますが『日本郵便』で公開されている郵便番号ファイルを利用しています。
ただ 1点注意が必要なのは、住所(町名)が異なるのに同じ郵便番号になってしまう。という場合があります。
例えば、753-0091という郵便番号は、山口県山口市上宇野令山口県山口市天花の2つの地名がありました。

その場合でも、都道府県と市区町村までは自動入力されるのでゼロから入力する手間を考えればまだ良いと思います。また、入力フォームですから、もし間違っていてもユーザに直してもらうことができます。

少し話がそれました。
具体的にこの関数を使うには、上記サイトに書かれているようにサーバへファイルをアップロードする必要があります。そのアップロードが終わった前提で、実際に利用している箇所を見てみます。

フォームの方は↓このように作っておきます。

<form name="order_form" id="order_form" method="post" action="order_form.html">
 .
 .
 .
<th bgcolor="#ccff99">都道府県<span class="notnull">※</span></th>
<td><select name="order_pref_id">
<option value=""></option>
<option value="1">北海道</option><option value="2">青森県</option>
<option value="3">岩手県</option><option value="4">宮城県</option>
<option value="5">秋田県</option><option value="6">山形県</option>
<option value="7">福島県</option><option value="8">茨城県</option>
<option value="9">栃木県</option><option value="10">群馬県</option>
<option value="11">埼玉県</option><option value="12">千葉県</option>
<option value="13">東京都</option><option value="14">神奈川県</option>
<option value="15">新潟県</option><option value="16">富山県</option>
<option value="17">石川県</option><option value="18">福井県</option>
<option value="19">山梨県</option><option value="20">長野県</option>
<option value="21">岐阜県</option><option value="22">静岡県</option>
<option value="23">愛知県</option><option value="24">三重県</option>
<option value="25">滋賀県</option><option value="26">京都府</option>
<option value="27">大阪府</option><option value="28">兵庫県</option>
<option value="29">奈良県</option><option value="30">和歌山県</option>
<option value="31">鳥取県</option><option value="32">島根県</option>
<option value="33">岡山県</option><option value="34">広島県</option>
<option value="35">山口県</option><option value="36">徳島県</option>
<option value="37">香川県</option><option value="38">愛媛県</option>
<option value="39">高知県</option><option value="40">福岡県</option>
<option value="41">佐賀県</option><option value="42">長崎県</option>
<option value="43">熊本県</option><option value="44">大分県</option>
<option value="45">宮崎県</option><option value="46">鹿児島県</option>
<option value="47">沖縄県</option><option value="48">海外</option>
</select></td>
</tr>
<tr class="order_addr1">
<th bgcolor="#ccff99">市区町村<span class="hosoku2">(全角)</span><span class="notnull">※</span></th>
<td><input name="order_addr1" value="" size="40" type="text"><div class="hosoku01">例)中野区新井</div></td>
</tr>

そして、郵便番号入力の部分を↓このように作っておきます。

<input name="order_zip" value="" size="10" maxlength="8" 
 onkeyup="getAddress('order_form','order_zip','order_pref_id','order_addr1');" type="text">

この getAddress で郵便番号を取ってきて該当フォームに住所を表示します。

order_formは、<form>のid属性名です。
order_zipは、郵便番号の入力フィールド名です。
order_pref_idは、都道府県のプルダウン名です。
order_addr1は、市区町村名の入力フィールド名です。


JSONを使った新バージョンも用意されているようなので、今ならこちらを利用する方が良さそうです。

▼AjaxZip 2.0 - Ajax郵便番号→住所自動入力フォーム(CGI不要版)
http://www.kawa.net/works/ajax/ajaxzip2/ajaxzip2.html


つぎは「symbaloo」について見ていきます。

▼symbaloo - start simple
http://www.symbaloo.com/us/search/
symbaloo_01.jpg

このサイトは百式で紹介されたサイトです。

▼iPhoneっぽいインターフェースの検索エンジン『Symbaloo』 - 百式
http://www.100shiki.com/archives/2007/07/iphonesymbaloo.html

特徴はやはりiPhone風のインタフェースであるということですね。
アイコンがかわいくて、あちこち押したりドラッグして移動したくなる、と社内でも評判でした。このサイトでは、JavaScriptによるドラッグ&ドロップのテクニックが特徴的ですね。

以前、tkrb.jpでベストサイトセレクション20のために調査した時は、Fork JavaScript というフレームワークを使っているようでした。

▼Fork JavaScript
http://forkjavascript.org/

Ruby on Railsのプラグインとして動作可能なフレームワークのようです。

▼Fork JavaScript - JavaScript統合ライブラリ - あるSEのつぶやき
http://fnya.cocolog-nifty.com/blog/2007/01/fork_javascript_166d.html

こちらでもおっしゃっているように、「Cookieを簡単に操作できる機能」によって
アイコンの配置をcookieで記憶させている形でした。

…が!

現状ではjQueryに転向したようです。
また、Cookieを覗いてもセッションIDなどのみでした。

そして、ロードの際に様々な値をサーバからAjaxでロードしています。

symbaloo_02.jpg
▲これはロード後のFireBugのConsole状態です。

最初にサーバから描画するのは、ロゴと(+)(-)[default]等が書いてある上のバーと、languageのある下のバーだけであとは全てAjaxによるクライアントサイドでの描画を行っています。

WindowsXP+IE7(CPU 2.8GHz, MEM 1GB)で描画に10秒程度を要します。
# 転送速度の問題が若干あるかもしれません...

クライアントサイドの描画時間が気になるところですが、サーバ側はAPIを用意してクライアントからAPIを利用して画面描画を行い、ドラッグ&ドロップで配置が変わったらそれもAPIでサーバに通知する。
というような作業切り分けをしておくと、サーバ側はAPIに専念できるし、クライアント側はJavaScriptに専念できるので分業しやすい効果もあると思います。


次回は、下記の2つのお題について説明する予定です。

「お題6>検索が楽しくなるサイト」
「お題7>写真/動画で魅せるサイト」

それでは、次回もがんばります!

投稿者 竹村 : 2007年10月10日 11:57

カテゴリー: Ajax (システム開発)

タグ: Ajax , API ,  つくるぶ , アイコン , 郵便番号検索 , Fork JavaScript , JavaScript , jQuery


Movable Type用高機能メールフォーム生成プラグイン A-Formの詳細へ
Movable Type用会員限定サイトプラグイン A-Memberの詳細へ
Movable Type用予約サイト構築プラグイン A-Reserveの詳細へ
ARK-Web×CSR(企業の社会的責任)

アークウェブの本

Zen Cartによるオンラインショップ構築・運用テクニック―オープンソース徹底活用

Zen Cartによるオンラインショップ構築・運用テクニック―オープンソース徹底活用

内容充実のZen Cart公式本(v1.3対応)がついに発表です。アークウェブのスタッフをはじめZen-Cart.JPの中心メンバーが共著で執筆しました。続きを読む

Movable Type プロフェッショナル・スタイル

Movable Type プロフェッショナル・スタイル

ビジネスサイト構築におけるCMSとしてのMTの活用方法について、豪華執筆陣による実践的MT本です。八木が共著で執筆しました。続きを読む

Web屋の本

Web屋の本

Web 2.0時代の企業サイトの構築・運用などの戦略を考える「Web屋の本」 (技術評論社)を、中野・安藤が執筆しました。続きを読む

新着はてブ

Loading

アーカイブ

応援しています

  • キッズ・セーバー
  • ソロモン・リリーフ ─ソロモン諸島を応援する有志による、震災復興支援プロジェクト─

    (終了しました)

RSS配信

 

サービスおよびソリューション一覧


最新情報・投稿をチェック


このページのトップに戻る

Photo by A is for Angie

Powered by Movable Type Pro 6.3.8