PR

Ajaxではできないことを知る

 Ajaxをフルに活用すれば,デスクトップ・アプリケーションと同様の使い勝手を備えたWebアプリケーションを構築できる。ただし,AjaxがWebアプリケーションであるが故に,できないことがある。

 その一つが,ローカル・ファイル・システムへのアクセス。いくらAjaxを駆使しても,WebブラウザからJavaScriptだけでローカル・ファイル・システムにアクセスすることは不可能だ。セキュリティ上の観点からできないようになっている。

 また,同様の理由により,クライアントPCに接続されているデバイスを制御するのは不可能だ。例えば,PCに接続されたカメラで動画を撮り,そのまま動画共有サイトの「YouTube」にアップロードする,といったWebアプリケーションは,Ajaxだけでは実現できない。このような機能を実現するには,OSネイティブな開発環境を使って,ActiveXコンポーネントなり,ブラウザのプラグインなりを開発する必要がある。こうなると,もはやWebアプリケーションではなく,デスクトップ・アプリケーションの範囲と言える。

Ajaxアプリケーションのアーキテクチャ

 Ajaxアプリケーションは,今までのWebアプリケーションと大きく異なるアーキテクチャを採用しているのだろうか? 答えは「ほとんど変わらない」だ。図3-1をご覧いただきたい。これは,J2EEで作成するWebアプリケーションの典型的な構造だ。Ajaxを利用するアプリケーションでも,基本的な構造はこれとまったく同じだ。異なるのは図3-2で示した部分だ。

図3-1
図3-1●J2EEアプリケーションの基本的な構造
 
図3-2
図3-2●Ajax部分のアプリケーション構造

 前述の通り,Ajaxではページを部分的に更新する。このため,Ajaxからのリクエストを受け付けたServletはその結果としてXMLでデータを返すことになる (注1)。ここが大きく異なる部分だ。また,HTMLの作成もXMLを受け取ったブラウザ側でJavaScript/DHTML/CSSを駆使してページを部分的に書き換えることになる。普通のWebアプリケーションではすべてサーバー側が担っていたHTMLの作成は,Ajaxアプリケーションでは部分的にクライアント側で実行する。

(注1)厳密に言えば,AjaxアプリケーションであってもXMLでデータを返す必要はない。アプリケーションの都合によって決めればよい。実際,XMLよりもJSON(JavaScript Object Notation)の方がJavaScriptでは都合が良い場合が多い。もちろん,プレーン・テキストを使っても構わない。


「本当にAjaxを使うべきか」を問え

 Ajaxの利用を検討する際,ぜひ「本当にAjaxを使うべきなのか?」と自らに問いかけてほしい。

 繰り返し述べているように,Ajaxは今までのWebアプリケーションでは不可能だったことを可能にする技術である。技術者やユーザーにとっては「福音」となったAjaxだが,“弊害”と言うべきだろうか,本来であればAjaxを使わなくても済みそうな部分にまでAjaxを適用している例が散見される。

 まずはAjaxを使う必然性が本当にあるのかどうかを十分に考えるべきだ。これを怠ると,Ajaxを適用するために工数が増えた割には,ユーザーから見たメリットが一切ないというアプリケーションを作ってしまうおそれがある。ページ遷移を伴う画面更新で十分であれば,無理にAjaxを使う必要はない。

 ユーザーの利便性を追求するためにAjaxをうまく使った例を一つ示そう。図4をご覧いただきたい。これは,YouTubeのコメント機能を使った際のスクリーンショットである。コメントを投稿したり削除したりする処理にAjaxが使われている。画面遷移なしにコメント機能を使用できる。仮にAjaxを使わない場合,コメントを投稿したり削除したりするリクエストをサーバーに送るために,ページの遷移が発生してしまう。ページを遷移させると,せっかく観賞していた動画は,再度先頭から再生し直すことになってしまう。このような挙動は,動画を観ることを目的としたサイトでは許容しがたいものだろう。YouTubeを利用するユーザーの立場で考えると,コメント機能にAjaxを利用することは非常に理にかなったものと言える。Ajaxをうまく活用している好例である。

図4
図4●「YouTube」のコメント機能に見るAjaxの理想的な適用例