Ajaxの裏の本質
研究ねたは堅苦しいので、一休み。
まだはやりものですし、Ajaxについて書いておこうかと思います。すでにいろいろな人がAjaxについて書いているので、いまさらと思われるかもしれませんが、どうやらこれについてはまだ誰もきちんと明文化していないように思えるので。
Ajaxがはやった理由は、ブラウザに何もプラグインを足さない状態で、ユーザーインターフェースを劇的に向上させたからであると説明されることが多いのですが、私は少し違った見方が重要なのではないかと思っています。
Ajaxの裏の思想は、JavaScriptに出来ないことなら、サーバー側でやってしまえというところにあります。同期通信でこんなことをやってしまうと、とてもユーザーインターフェースとしては使い物にならないのですが、最近のリッチなネットワーク環境のおかげで、非同期通信なら、サーバーにちょくちょくリクエストを投げてしまっても、その間にUIをブロックしなければ、かなりうまく動くということが実証されたと思います。
なんだかんだいって、JavaScriptの環境はとても貧弱です。現状の実装では、とても遅いし、永続的な記憶域はクッキー程度、計算能力も低ければ、ライブラリも充実しているとは(最近では状況が変わりつつありますが)言いがたいものがあります。
個人的には、Schemeに似ているJavaScriptを擁護してあげたいとは思うんですが、散々書いた経験から言って、現状ではJavaScriptは、UIを記述するにはとても強力な環境ですが、そのほかの処理にはあまり向いていないというのが私の出した結論です。そして、ネットワーク遅延のことを考えなければ、サーバーでできない唯一の処理がUIの部分な分けです。
(JavaScriptによるリッチクライアントの試みはいろいろ行われてきましたが、Ajaxの出現までうまくいきませんでした。JavaScriptはなんでも出来そうに見えて、実はかなり厳しい環境なのだと私は考えています。)
Ajaxは、非同期通信という手法で、見事にそのギャップを埋めたわけです。
XFormsのAjaxによる実装は、その好例です。ややこしいバリデーション処理をかなりサーバー側に投げているようです。
そして、Ajaxでは、クライアントサイドプログラミングだけでなくサーバーサイドプログラミングも非常に重要であるということもいえます。こういう見方でAjaxを見ると、GoogleがGWT(Google Web Toolkit)を出した理由も良くわかるように思います。