今回は,最近話題のAjaxアプリケーションをPHPで構築する。Ajaxは,JavaScriptによってWebブラウザ上でJavaアプレットやFlashのようなスマート・クライアント(リッチ・クライアント)Webアプリケーションを構築する技法だ。PHPのAjaxツールキットがいくつも公開されており,これを利用しPHPで簡単なAjaxアプリケーションを作成する。

 Ajaxの話題に入る前に,PHPのリリース関連情報について紹介する。

PHPの開発状況

 3月末にPHP5およびPHP4の最新版としてそれぞれPHP 5.0.4およびPHP 4.3.11がリリースされてから,新たなリリースは行われていない。この間も引き続き,バグ修正などの作業が行われいる。PHP 5.0.4リリース以降,本稿執筆時点までに,PHP 5.0.x系に関しては約75件のバグ修正と若干の機能追加が行われている。

 修正点の詳細については,http://cvs.php.net/co.php/php-src/NEWS?r=1.1760.2.393を参照していただきたい。

 また,旧版にあたるPHP 4系についてもバグ修正の作業が続けられており,本稿執筆時点で約30件のバグ修正が新たに行われている。PHP 4系の修正点の詳細については,http://cvs.php.net/co.php/php-src/NEWS?r=1.1247.2.909を参照していただきたい。

 現在の開発版にあたるPHP 5.1系のベータ1版のリリースが4月に予定されていたが,新しく追加されるエクステンションPDOなどの問題により延期されている模様である。

PHPでAjaxクライアント

図1●Ajaxアプリケーションと従来のWebアプリケーションの処理の違い
 AjaxとはAsynchronous JavaScript + XMLの略称であり,必要に応じてクライアント側のJavaScriptコードがサーバー側との非同期HTTP通信によりXML形式のデータを送受信する仕組みである。こうした構成自体はリモートスクリプティングと呼ばれ,従来より存在したが,JavaScript+CSSなどから構成されるDHTML (Dynamic HTML)によりインターフェイスを構成し,JavaScriptモジュールがXMLHttpRequest関数によりサーバー側のアプリケーションと非同期通信を行う仕組みが最近になってAjaxと呼ばれるようになっている。

 図1[拡大表示]にAjaxアプリケーションと従来のWebアプリケーションの処理の比較を示す。従来のWebアプリケーションでは,何らかの操作がクライアント側(Webブラウザ)で行われると,ページ全体をサーバー側で生成し,クライアント側に伝送して,再描画を行う必要があった。この構成では,ユーザーインターフェイスの応答速度は,ネットワーク伝送速度が遅かったり,サーバーの負荷が高い場合に,遅くなってしまう。

 Ajaxでは必要なデータのみを必要な時に受け渡す方式のために,ユーザーインターフェイスとネットワークやサーバーの応答との独立性を比較的高くすることができ,ユーザーインターフェイスの応答性向上やデータ伝送の効率化が期待できる。既に公開されているAjaxクライアントには,Google MapsGmailなどがある。

 では,PHPでAjaxアプリケーションを構築することを考えてみよう。