最近は猫も杓子もといった具合にもてはやされているAjaxだが、私はAjaxをユーザビリティ向上技術とだけ捉えるべきではないと考えているのである。
AjaxはWeb2.0を実現する技術の1つとして、中心的な位置にある。
Web2.0の特徴の1つに、優れたユーザビリティというものがある。Ajaxは真に有効な手段となる。
しかし、Ajaxがもたらすメリットは、それだけではない。
自分でAjaxアプリケーションを作っていて感じたのだが、サーバ側のプログラムは、実に単純なものになる。
サーバ側は、データベースからデータを取得して若干の加工をして、クライアントに送信(返答)する。
クライアント側は、そのデータを受信し、画面を作る。
何気に、クラサバチックな動きになる。どうやら、Ajaxアプリケーションとは、そういうものになるようだ。(故に、VisualBasicライクにWebシステムを作ろうと考える.netとは相性が良いに違いない。)
サーバ側はデータ処理に専念し、プレゼンテーションについてはすべてクライアントに任せることが出来る。
これほど、綺麗に高凝集性を実現することは、レガシーWebシステムでは難しかった。
いくら、Webフレームワークを用いてロジックとプレゼンテーションの分離を図っても、所詮はサーバ側でやるのだ。完全には分離しづらくなる。
さらに、Ajaxにおけるクライアント~サーバ間通信の主役はXMLである。
RESTを使ったとすれば、URLパラメータとして引数を渡し、結果がXMLとして返ってくる。
もう少し発展させて、行き返りともにXMLにしてメッセージング的にやりたいところかもしれない。
いずれにせよ、結合度が疎になっている。
Ajaxによって、データの表現形式がXMLになることによるメリットは大きい。
XMLであれば、クライアントから処理を依頼されたサーバが、別のサーバからXMLデータを取得して、何らかの加工を行って返す…といった、サービスの連鎖によるシステムが実現できるようになる。
「ロジックとプレゼンテーションの分離(高凝集性)」、「XMLデータを媒介とする疎結合性」、「XMLデータを中心にしたサービスの連鎖」…。
このようなシステムの構造は、非常に理想的なものではないか。
元々はユーザビリティ向上技術であるAjaxをトリガーにして、こうしたシステム構造の変化が起こり得る。
しかも、既に実現可能な技術なのだ。