ゆーたんのつぶやき

株式会社ノークリサーチにてIT関連のシニアアナリストとして活動しています。

Ajaxに関連して



Ajaxが騒がれるようになってしばらく経ちましたが、
捉え方が大きく分けて二通りあるように思います。

1. 一連の実装技術の集合体である
  ・主にXTHMLやCSSを使ったUI生成
  ・XML/XSLT/DOMを使った画面やデータの操作
  ・主にXMLHttpRequestを使った非同期なサーバーとのインタラクション
  ・上記の一連の技術の連携にJavaScriptを用いる

2. デザインパターンの一種である
  クライアントサイドに何らかのモジュールを配置することで
  サーバーとの非同期なインタラクションを実現する

2.まで行ってしまうとさすがに広義になりすぎるかなぁという感じがします。
個人的には1.の方がわかりやすいですし、実際に世の中に出回っている実例
にも即しているようにような気がします。


Googleの例に見られるようにちょっとした気の利いたWidgetを実現するので
あれば、部分的にAjaxを用いるのが良いですが、業務アプリケーションでの
利用となるとアクセス権限管理やデータのフィルタリングなどの厄介な話が
絡んでくるので、フレームワークの部分からしっかり考えないといけなそう
です。


そこで候補に上がってくるのは、やはりJSFではないかと思います。Craig
McClanahan氏も連携の可能性に言及しているようです。JSFが優れている
のは敢えて絞ったとすると

A. WEBアプリケーションにイベントドリブンの仕組みを持ち込んだ
B. UIコンポーネントの考え方をフレームワークとして実現した

の2点ではないかと考えています。


Bの仕組みに基づいてAjaxのコードをレンダリングするようなUIコンポーネント
とそれに対応するタグを作成することができれば、Ajaxの利用も普及するのでは
ないかという気がします。Ajax普及の難点として実装の煩雑さやメンテ性の悪さ
が指摘されていますが、JSFのUIコンポーネントとして扱えるようになれば、少
なくとも利用する側は煩雑なJavaScriptコードを意識しなくて済みます。ただし
サーバーサイドとの非同期なインタラクションの部分がJSFのエントリポイントと
なるサーブレットとは全く別に作りこまれてしまうとセキュリティ面などで問題
が生じる可能性がありますので、AjaxからのリクエストについてもAを拡張する形
で統一できるような工夫が必要になりそうです。


実は似たような試みはすでに行なわれていたりします。Web Sphere Studio5.1.2
ではJSFの独自拡張コンポーネントである「Faces Client」が含まれています。
この中に「WDO4JS」というものがあるのですが、これはIBMやBEAが推進している
SDOと呼ばれるデータアクセス仕様をクライアントサイドでJavaScriptを使って実
現したものです。これを実装したデータグリッドなどのUIコンポーネントはローカ
ルにデータを蓄積することができ、列の並び替えなどをサーバーサイドとの通信を
行なうことなく迅速に行なうことができます。


とは言っても、JSF自体についてはサンプル実装で用意されているUIコンポーネント
はまだまだ貧弱で、当初言われていたようなD&DによるUI作成を実現するには部品が
足りません。その部品をいざ自作しようとすると、JSFの実行ライフサイクルやUIコ
ンポーネントのクラス階層を理解した上で、JSPの一般的なカスタムタグ作成に関す
る知識も必要になってくるので敷居が低いとはいえない状況です。


このように既にAjaxライクなJSFのUIコンポーネントが存在していますので、JSF
Ajaxという選択肢はリッチなUIをWEBで実現するための一つの注目株にはなりそ
うな予感がしますが、そのためには実用に耐えるサンプル実装がたくさん出てきた
り、UIコンポーネントの簡単な自作手段が提供されたりといった土台の整備が欠か
せないように思います。