ゆーたんのつぶやき

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

Faces for Laszlo



JSFLaszloについてはプレゼンテーションレイヤーの
有力な基盤技術の一つとしてこのBlog開設当初から何度
か取り上げてきました。(右上の検索フォームで過去記事
も是非ご覧ください)


Laszloオープンソース化以降は日本でも取り上げられる
機会がかなり増えてきているようです。IBM AlphaWorks
は当初からLaszlo向けの開発ツールをリリースするなどの
積極的な姿勢が見られましたが、今度はJSFの代表的な
実用コンポーネントセットであるFacesClientとの連携を実現し
これを「Faces for Laszlo」の名称で公開しました。
http://www.alphaworks.ibm.com/tech/faces4laszlo


JSFタグのレンダリング結果としてLZXを出力するだけなら
簡単です。LaszloFlexも共にJSPカスタムタグを備えて
いますから、それをJSFタグに焼き直しただけだとすると
ちょっと芸がありません。実際、Faces for Laszloのポイントは
SDO4JSを活用したデータアクセスの仕組みにあるのでは
ないかと思います。


LazloにしてもFlexにしても、悩ましいのはそれらが生成する
Flashコンポーネント間のデータアクセスと非Flashのページ
構成要素が持つデータへのアクセスです。特にグループウエア
のように異なるアプリケーションが互いに連携する必要のある
システムの場合には異なるアプリケーション間でデータ連携を
させる必要が生じてきます。(※1)


ここでFaces for Laszloが採用しているのが「SDO」です。
JSFとほぼ同時期にIBMとBEAが共同提案したもので、データ
アクセスを抽象化させることを目的としてインターフェース
仕様になります。このSDOの仕組みをJavaScriptを使って
クライアントサイドで実現させるものがSDO4JSです。これに
よって、JavaScriptを使ってクライアント側にデータソース
を持たせてしまうことが可能になります。


LaszloのUIコンポーネントは通常Flash内部でXMLとして表現
された「データセット」にアクセスしてデータを操作します。
Faces for Laszloではこのデータセットにアダプタを挟んで
通常のXMLの代わりにSDO4JSのデータをアクセスするように
バイパスをしているわけです。
クライアント上のデータとサーバー上のデータ同期はもちろん
クライアント上に存在する異なるアプリケーション間のデータ
交換もSDO4JSが仲介してくれます。FacesClientは元々SDO4JS
を利用する仕組みを持っているので、FacesClientが提供する
Flashコンポーネントとのデータ共有もSDO4JSを通じて可能
になります。このような設計によって※1で挙げた問題を統一
されたデータアクセス手法でエレガントに解決しています。


Flashコンポーネントの中身をいじることができるというLaszlo
オープンソースという特性を存分に生かした例と言えますね。
Flexもある程度個々のコンポーネントの実装を取っかえ引っかえ
できれば良いのですが、フルセットのコンポーネントがドン!と
提供されている感じなので個人的には重厚長大な印象があります。
例えば「アクセシビリティに関する実装は不要なので外す」とか
いったような機能実装面での取捨選択ができるだけでも使い勝手
がかなり違ってくるのではないかと思います。


以前のエントリにも記載しましたが、JSFはイベントドリブンの
仕組みをWEBに持ち込んだという点では画期的な技術なのですが
見栄えの良いUIコンポーネントを作るのが大変です。JSPのタグ
に関する知識が必要ですし、標準タグセットは本格的なUI作成
にはまだまだ不十分と言わざるを得ません。そうした観点でも
今回のFaces for Laszloは魅力的な技術ではあります。ですが
冒頭に触れたように「アプリケーション間データ連携をサーバー
を介さずにクライアント上で実現するには?」というあまり話題
にならないけれども実際の開発現場では直面することの多い課題
に対してスマートな解を出しているという点こそが最も注目に値
するのではないかと捉えています。