Ajaxに関して

"Asynchronous JavaScript + XML"と言うことで、基本的にはDinamic HTMLやJavaScriptCSSやDOMを基本とした、クライアントサイドでの動的なプレゼンテーション層のインターフェイスの生成の技術に、そのプレゼンテーション層の生成に必要なデータの取得を非同期なXMLHttpRequestによるXMLの取得によって行うということ。それぞれの技術の各パーツに関しては旧来から存在していたものの、それを統合してよりリッチなクライアント操作環境をブラウザの上に作り出すことができる。


詳しくは、ここなんかが良いだろう。旧来型のリクエスト-レスポンスでの画面遷移によるインターフェイスの動きとは違ったパラダイムであることがわかる。


定義としては下記が参考になる。

  • XHTMLCSS を用いた、Web 標準に基づくプレゼンテーション
  • Document Object Model によるダイナミックな表示と相互作用
  • XMLXSLT による、データの変換や操作
  • XMLHttpRequest による、データの非同期的な取得
  • それらを JavaScript によって結びつける



ユーザがリクエストしてからやっとデータを取得して画面をレンダリングするのではなく、ユーザがリクエストしているいないに係わらず、Ajaxエンジンは先読みしてデータをXMLとして取得している。ユーザの画面からの操作リクエストはAjaxエンジンに対して行われ、すでに取得しているデータであれば即座にインターフェイスに反映させることが出来る。そういったことの組み合わせで、非常にサクサクとした操作感を画面遷移無しに行うことが出来る。


そういった意味では、これは非同期通信してデータ取得するタイミングやそれと操作体系との綿密な設計が必要になってくると思う。


代表的なものとしては、Googleが多く使っており、Gmailは前の日記にも書いた通り、ほとんどこれで作られているようだし、最近だと、Google MapsGoogle Suggestなんかが代表例。Frickrなんかもこれらの技術を多用しているらしい。


私も、かなり昔に管理画面系で同様の発想で構築をしてみたことがある。但し、かなり前だったのでXMLデータではなくJavaScriptの配列としてデータを持ったりして。また、その頃はブラウザの性能のこともありWINのIE専門だった。
時代は変わり、今はGoogleの上記のサービスでもFirefoxでも問題なく使える。技術の進化が感じられる。


Webアプリケーションのリッチクライアント化が叫ばれて久しいが、これもある一つの選択肢として興味深く追って行きたい熱い技術である。