タイプ3:JSF拡張系「RichFaces」「ICEFaces」
JSF拡張系の代表的なフレームワークは、
「RichFaces(http://labs.jboss.com/jbossrichfaces/)」や
「ICEFaces(http://www.icefaces.org/)」です。
特徴
JSFを拡張し、独自のカスタムタグを提供することで、Javascriptを記述することなくAjax通信やリッチなUIコンポーネントを実現します。
内部的には他のAjaxツールキットを内包している部分があります。しかし基本的に開発者はカスタムタグの使い方さえ覚えれば、Ajax+リッチUIコンポーネントのWebアプリケーションが作成できるようになっています。詳しい特徴については「第2回:Javascriptを記述せずにリッチなUIを実現する!」を参照してください。
利点:既存のプログラミングモデルで構築でき、Javascriptの記述を必要としない
RichFacesをはじめとするJSFを拡張したフレームワークでは、基本的にJavascriptは記述しません。
フレームワークによってカスタムタグの中に隠蔽されているので、開発者は用途にあったカスタムタグを記述するだけで、Ajaxを利用したリッチなアプリケーションを作成することができます。また、各カスタムタグは用途別に独自に設計されているので、直感的に扱うことができ、IDEによる入力補完も期待できます。
Javaエンジニアにとって楽に扱うことができることが最大の利点です。
欠点:カスタマイズ性には問題がある
JSFのような抽象度の高い技術をベースにし、さらにその中にJavascriptを隠蔽しているので、既存のAjaxツールキットとの連携や、自身でJavascriptを記述する場合などには逆に制約があります。
また、独自のカスタムタグを作成したい場合には、JSF、Javascript、カスタムタグ、フレームワークの詳細な動作など、さまざまなことを理解している必要があり、かなり高度なスキルが要求されます。
フレームワークで用意されている機能以外のことを行いたい場合に、融通が利かないのが欠点といえるでしょう。
使いどころ
Javascriptを書かずに済み、フレームワークが提供している機能を素直に利用する分には非常に高い生産性を発揮できるのが、JSF拡張系フレームワークの特徴です。その特徴を生かして、フレームワークの機能で要件が満たせる場合や、チーム内にJavascriptに長けたエンジニアが居ない場合などに導入を検討するのがよいでしょう。
タイプ別:Ajaxフレームワーク相関図
最後に各タイプの立ち位置を図2に示します。
図2:Ajaxフレームワーク相関図
(画像をクリックすると別ウィンドウに拡大図を表示します)
図からもわかるように、他のAjaxツールキットとの連携など、カスタマイズ性のタイプ1「Ajax通信専門」、カスタマイズ性と生産性のバランスがよいタイプ2「既存Ajaxツールキットラップ」、カスタマイズ性よりもわかりやすさや生産性重視のタイプ3「JSF拡張系」といった特徴を持っています。
まとめ
本連載は3回に渡ってAjax4JSF+RichFaceについて解説してきました。Ajax4JSF+RichFacesは、今までのWebシステム開発と変わらない方法でAjaxアプリケーションを構築できるというメリットがあります。その一方で、カスタマイズ性が低く、細かな所に手が届きにくいのが欠点です。
ですが十分なコンポーネントが用意されており、「通常のHTMLベースの画面+要所要所にAjaxの要素を取り込みたい」といった用途にはピッタリと当てはまるでしょう。
Ajax4JSF+RichFacesは、フレームワークの範囲内で機能要件を満たせる場合など、ある意味「現実路線」な開発において高い生産性をあげることのできるフレームワークだと筆者は感じています。