なんとなくAjaxネタ

なんとなくAjax
~新しくて古いXMLHttp
川合孝典(Kansai.pm)
1
2005/5/22
場面1 郵便番号で住所指定

住所を入力する

年賀状ソフトだったら?


郵便番号で検索して入力できる
Webでは?あまり一般的ではない。


郵便番号データは手に入る
画面遷移が面倒なことになるから…
2
場面2 メールアドレスのチェック

ブラウザで入力チェクできる


JavaScriptを使えば
サーバでもチェックが必要


ブラウザ以外のものを使っている
ブラウザでJavaScriptがきられている
※サーバとブラウザでチェック結果が異なるかも
JavaScriptからサーバロジックを呼べたら?
3
AJAX
=Asynchronous JavaScript+XML

ブラウザのJavaScriptからサーバの処理を
呼び出し、画面遷移なく表示を書き換える



同期的でも、HTMLやプレーンテキストでも
DHTMLで表示を切り換える
代表例:Google Maps、Google Suggest
4
AJAXとXMLHttpオブジェクト

XMLHttpオブジェクト

XML解析エンジン、HTTP通信


同期、非同期の両方をサポート
ブラウザの核になる部分

IE、FireFoxにも実装
5
AJAXのメリット(1)

ブラウザからサーバを利用できる

サーバのリソースが利用できる

データベースなど


郵便番号の例
ロジックの共通化

サーバ、ブラウザ


メールアドレスの例
異なるページ

新しいページに住所入力を入れることも簡単
6
AJAXのメリット(2)

画面遷移なしにサーバを利用できる



画面表示のスピードアップ
ロジックが簡単になる
受動的だったブラウザが能動的に


C/Sに近い記述ができる
Webアプリ特有の面倒くささが減る


データの持ちまわし
画面遷移と処理の関連付け
7
AJAXを実現するには

ブラウザ側=JavaScript


サーバ側=言語は問わない


DHTMLによる表示切替
処理ロジック
サーバ、ブラウザ間のI/F

主にデータの渡し方


テキスト、XML(XMLRPC、SOAPなど)
JavaScript: Jsolait、JSONなど
8
Perlを使うメリット

現在のWebアプリで広く使われている



CPANモジュールが利用できる


利用できる環境が多い
既存のロジックを使いまわせる
入力チェックが充実
簡単に記述できる

普通に関数を書くだけで実現

XMLRPC::Liteの実装
9
実装例
zipAddrRpc.htmlの場合
 ブラウザ:


XMLHttpをベースに自前のXMLRPC関数
サーバ:

XMLRPC::Liteを利用
10
実装上の注意点

ブラウザによってXMLHttpが若干異なる


他のサーバの処理を呼び出すとき



ライブラリが吸収するはず
→独自に書くとき注意
警告メッセージが表示される
サーバで中継すれば回避可能
漢字の文字コード、改行に注意

バイナリで扱えば問題ないか?
11
今後の期待


XMLHttp自身は新しいものではない
APサーバとしてのWeb

Webサービスが定着していない




郵便番号検索
旅行予約の実験
利用が広まる!?
キラーアプリは何か?
12