【3/18〜】Amazon、VMwareが語る『クラウドの未来』 スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷



連載:AjaxとPHPでリッチクライアント(1)

Ajaxを使ったamazon検索をPHPで作ろう


上鍵 忠志
日本PHPユーザ会
2005/10/4

Ajaxは今年非常にホットな話題の技術である。
@ITをはじめ、さまざまなところでもAjaxについての記事が目立つようになってきた。
ここでは、筆者が携わっているPHPかいわいでのAjaxの動きについて紹介していきたい。


 
 注目のAjax

- PR -
 Aajaxとは「Asynchronous JavaScript + XML」の略である。JavaScriptはいわずと知れたクライアント(通常ウェブブラウザ)サイドの技術であり、そこからXMLHttpRequestというものを利用し、ページ推移をせずにサーバ/クライアント間でどんどんデータ交換をしていく技術である。これとDHTMLを併用することでいわゆるAjaxになる。

 この辺りの詳しい内容はAjax推進委員会による「古くて新しいAjaxの真実を見極める」を参考にするといいだろう。

   PHPとAjaxの関係

 PHPはサーバサイド技術、前述のとおりAjaxで用いられるJavaScriptはクライアントサイド技術である。通常の処理ではJavaScriptに処理が推移するとサーバ側では次のページに推移するまで何もできなかった。

 例外的に「0ピクセルフレーム」と呼ばれる、いわば「見えないフレーム」を用いて隠しフレームを使ってサーバ間通信をし、実際に使用するフレームの表示に反映するという「なんちゃってサーバ/クライアント間同期」などの手法も古くからあったが、フレーム故の問題(URLの問題など)も少なくなかった。

図1 0ピクセルフレームの概要

 AjaxはXMLHttpRequestというものを用いてサーバと非同期通信を行う。そのため、無駄なフレームも必要なくリロードレスなコンテンツを作成することができる。

 ただしAjaxに問題点がないわけではない。Ajaxの問題は以下のような点が挙げられるだろう。

・XMLHttpRequestはブラウザ依存である(Internet ExplorerとMozillaしか対応していない場合が多い)
・DHTMLを使わなければ画面内容を変更できないので若干テクニカル
・XMLでのデータ渡しになるので処理が比較的重い

 しかし上記の問題はXMLHttpRequestやDHTML描画をラッピングするライブラリやフレームワーク、などの登場で徐々に解決しつつある問題でもある。

   Ajaxを使ったウェブアプリケーションの例

 Ajaxを使用したウェブアプリケーションはすでにいくつかあり、@ITでも紹介されているが、もう1度、下記に挙げておこう。

●gmail

http://gmail.google.com/

 おそらくAjaxのはしりになるウェブアプリケーションで、Googleが開発したものだ。いままではクリックするたびに画面の切り替えがあったウェブメールがほぼそのままの状態でどんどん内容が切り替わっていく斬新なものだった。

●Google マップ

http://maps.google.co.jp/

 これもAjaxの可能性を示したウェブアプリケーションの1つであろう。gmailと同じくGoogleが開発したものだ。

●フォト蔵

http://photozou.jp/

 いわゆる誤解を恐れずにいうと「日本のFlickr」である。このウェブアプリケーションでは通常画像のアップロードにはファイル選択を行うが、ファイル選択をするだけでプレビューが表示されるようになっている。この技術にはAjaxも併用されている。

●ajax ssh

http://ajaxssh.bz2.jp/
http://ajaxssh.bz2.jp/demo

 若干強引だがAjaxを用いてssh環境を構築する。HTTPは通常1リクエストごとに処理を終了するが、sshはsshとしてセッションを切断するまで永続的に接続しているため、その問題解決などにテクニックが使われている。


   Ajaxを用いたアプリケーションの可能性

●グループウェア
グループウェアほど個人ごとに画面をカスタマイズしたくなるアプリケーションも少ないだろう。いままでのウェブアプリケーションでは困難だった個人別の画面カスタマイズがより高度にできる可能性があるだろう。

●ウェブメール
gmailをはじめすでにいくつかのAjaxウェブメールが出現しているが、今後も徐々にウェブではない通常のメーラーに近い操作感のウェブメールが出現するだろう。

●ウェブチャット・掲示板
いままでのウェブチャットは送信するたびに画面が切り替わっていた。もしくはFlashやJava Appletなどを使用せざるを得なかった。これらがAjaxで別の切り口を見いだすことができるかもしれない。

●ゲーム
いままではFlashに頼っていたようなゲームやそれらよりさらに凝ったゲームが実現できるかもしれない。

 そのほかアイデア次第でいろいろ使い道はあるだろう。

   Ajaxを扱うためのPHPライブラリたち

 現在、インターネット上で公開されているPHPで用いることができるAjaxライブラリを紹介したい。筆者自身、このライブラリの便利さには驚かされたので、まだ触っていなかったという場合、この機会に確認されてはいかがだろうか。

●SAJAX http://www.modernmethod.com/sajax/
 比較的古くからあるライブラリである。クラス化されておらず汎用性に乏しい。残念ながら「PHPでも扱える」ということを初期のころに広めた時点で役割を終えたといえよう。

●AjaxAC http://ajax.zervaas.com.au/
 夏ごろに初めてリリースされたライブラリである。比較的違和感なく使えるライブラリである。サンプルを実行してみると、Google Suggestのようなサイトを簡単に構築できることを示してくれた。

●PEAR::HTML_Ajax http://pear.php.net/package/HTML_AJAX/
 8月になってPEARに正式追加されたパッケージ。PEARなのでインストールも容易でライブラリとしての質も注目度も高い。

●php-jsons http://www.aurore.net/projects/php-json/
 これは正しくはAjaxライブラリではなく、JavaScriptのオブジェクトを扱うためのPHP拡張モジュールである。いままでのライブラリと違い、C言語でビルドをするPHP拡張モジュールである。
 このライブラリを用いることでJavaScriptの配列とPHPの配列を相互交換することができ、XMLではなくJavaScript配列でサーバ/クライアント間の通信を行うことが容易にできるようになる。XMLへの変換がないため、メリットが若干高速な処理を行うことができるにとどまっているのが残念。

●NAJAX http://najax.sourceforge.net/dev/
 9月になって出てきたライブラリだ。まだ詳細は分からないが、公式ページにいくつかのサンプルが掲載されている。

●Echo2 http://www.nextapp.com/products/echo2/
 比較的早くから存在したAjaxフレームワークで、すでに多くのサンプルが掲載されていることから多くの可能性を感じさせる。オンラインデモを見てみると非常に多彩なことができることが分かるだろう。

1/3

 INDEX

Ajaxを使ったamazon検索をPHPで作ろう
Page1<AjaxとPHPの関係>
PHPとAjaxの関係/Ajaxを使ったウェブアプリケーションの例/Ajaxを用いたアプリケーションの可能性/Ajaxを扱うためのPHPライブラリたち
  Page2<AjaxACを使う>
サンプルを使用し、改造してみる/CountryRegionCityJax/GoogleSuggestCloneJax
  Page3<Amazon商品検索フォームにGoogleSuggestCloneJaxを改造する>
AmazonSuggestCloneJax

ホワイトペーパーTechTargetジャパン

リッチクライアント & 帳票 フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

スキルアップ/キャリアアップ(JOB@IT)

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  TomcatやJBossなどAPサーバ環境に関する
情報を集約! “業務”用APサーバ大百科

New!
  一気に解説! 最新のクラスタストレージ
「RAIDを超えたストレージ基準」……など

New!
  クラウド的ユーザー体験の変化は脅威か?
仮想化技術を使いこなす運用管理術を紹介

New!

  上司や部下、部署内メンバーとの情報共有
を“ガラッ”と変えるコラボツールとは?

New!
  おばかアプリ選手権、第4弾開催中!!
ムダにカッコよくてくだらない作品求ム!

  社内ファイルサーバを“クラウド”に統合
VPN直結「クラウド型ストレージ」を紹介

  Twitterのアカウントはなぜ突破された?
メールによる新手の攻撃手法とその対策

  もう仮想化のお試しフェイズは終わりだ!
Hyper-V 2.0が基幹システムも仮想化

  美人!? まあまあ? 気になる いやし系!!
PV急増で「美人時計」がとった手段とは?

  クライアント企業から求められる人材
⇒IT技術と経営戦略を併せ持つ「戦略家」

  .NET編集長が実践する「技術情報検索術」
サンプル・コードを簡単に探す“技”は?

  業務効率と情報セキュリティ対策を両立!
手間なく確実に機密情報を守る方法とは?

  進化を続ける富士通ストレージETERNUS DX
製品開発者の自信を裏付けるものとは何か

  運用管理の課題を“2つの観点”から分析
ユーザー満足度の高い「仮想環境」とは?

  【CTC事例】約30の基幹システムを統合!
膨大なバッジジョブを制御した方法は?

  仮想化すればコストは削減できるか?
仮想化に必要な「3つの視点」を解説する

  その数、なんと400台以上! グループ内
サーバの「統合管理」によるメリットは?