JDeveloper 11g によるリッチクライアント開発

第1章 ADF Faces Rich Clientとは

日本オラクル株式会社 セールスコンサルティング統括本部
Fusion Middleware SC本部 Fusion Middleware レディネス部
智野 潤子 (ちの じゅんこ)

ADF Faces Rich Clientは、JavaServer Faces(JSF)に準拠し、Ajaxの技術を活用したユーザー・インタフェースのコンポーネントとライブラリを提供する、オラクルのリッチクライアント・ソリューションです。今回はまず、JSFについて簡単に説明した後、ADF Faces Rich Clientの概要を紹介しています。すでにJSFに関する知識がある方は、「ADF Faces Rich Clientとは」以降をお読みください。

目次

JavaServer Faces(JSF)とは

近年はWebベースの企業システムが広く普及していますが、それ以前の企業システムはクライアント/サーバー型に基づくGUIアプリケーションが主流でした。GUIアプリケーションと従来のWebアプリケーションでは、その開発手法に大きな違いがあります。

表1 開発手法の違い
  GUIアプリケーション 従来のWebアプリケーション
UIの構築 コンポーネント・ベース HTMLタグ・ベース
プログラミング・モデル イベント・ドリブン リクエスト・ドリブン

従来のWebアプリケーション開発において、開発者はHTTPやHTMLを強く意識する必要がありました。これは、Webアプリケーション・フレームワークの中でも特に広く普及しているApache Strutsも例外ではありません。GUIアプリケーションでは比較的簡単に実装できたイベント・ドリブンな処理(ボタンのクリックやテキストの編集などユーザーの操作をトリガーとした処理)をWebアプリケーションで同等の機能を提供するためには、JavaScriptなどJava以外のテクノロジを習得する必要があるなど、Webアプリケーションの開発者に大きな負担がかかります。
このような問題を解消するために導入されたのがJavaServer Faces(JSF)です。JSFは、HTTPやHTMLのようなWebアプリケーション固有のテクノロジには依存していないため、GUIアプリケーションと同様のイベント・ドリブンな開発手法をとることができ、フレームワークが規定するクラスを拡張する必要もないため、単体テストも容易です。また、JSFはJavaプラットフォームの標準化プロセスであるJava Community Process(JCP)によって仕様が策定されており、最新バージョンであるJSF 1.2はJSR 252により規定され、Java EE 5にも採用されています。

JSFのアーキテクチャ

JSFは、MVCモデルのビューおよびコントローラ層の機能を提供するフレームワークで、次のような機能を実現するための仕組みとAPIを標準で提供しています。

  • 開発者がHTMLを意識せずに使用できる、ボタンや入力フォームなどユーザー・インタフェースを構成するコンポーネント(UIコンポーネント)
  • ユーザー・インタフェースの状態管理
  • ユーザーの入力データの妥当性チェックと型変換
  • ユーザー・インタフェースの国際化
  • ページ・フローの定義
  • GUIアプリケーションと同様のイベント処理の仕組み

JSFアプリケーションは、表2の要素により構成されます。

表2 JSFの構成要素
構成要素 概要
FacesServlet JSFアプリケーションのフロント・コントローラとして、ユーザーからのリクエストを最初に受け取り、URLで指定されたJSFページにフォワードするサーブレット
JSF構成ファイル Managed Beanやページフローなどの定義情報を記述
FacesContext JSFアプリケーションのステート情報を保持するオブジェクト
コンバータ ユーザーの入力データの型を変換
バリデータ ユーザーの入力データの妥当性をチェック
Managed Bean ユーザー・インタフェースに表示されるデータやイベント・ハンドラが実装されたPOJO
レンダラ クライアントに返すレスポンス(HTMLなど)を生成
JSFタグ・ライブラリ UIコンポーネントやコンバータ、バリデータなどを記述するためのJSPカスタム・タグ・ライブラリ
JSPファイル JSFタグを使用してユーザー・インタフェースを定義

図1 JSFアプリケーションのアーキテクチャ
図 1 JSFアプリケーションのアーキテクチャ

ADF Face Rich Clientとは

ADF Facesは、JSFに準拠したコンポーネント・ライブラリであり、JSFアプリケーション開発において一連の広範な拡張UIコンポーネントを提供します。これらのコンポーネントを利用することで、HTMLはもちろんJavaScriptを記述することなく高機能なWebページのユーザー・インタフェースを簡単に構築できます。
RIA(Rich Client Application)を実現するためにADF Facesを拡張したのが、ADF Faces Rich Clientです。ADF Rich Clientは、JSFのリファレンス実装にはない、次のような機能を提供しています。

  • 国際化やアクセシビリティに対応済みの100以上のUIコンポーネント
  • HTMLはもちろん、PDAに対応したレンダラ
  • 拡張コンバータとバリデータ
  • JavaScript APIの公開
  • 部分ページ・レンダリング
  • ドラッグ&ドロップ・フレームワーク
  • アクティブ・データ・フレームワーク
  • ポップアップ・フレームワーク
  • ナビゲーション・メニュー・フレームワーク
  • ページ・テンプレートの作成と適用
  • スキンによるアプリケーションの外観のカスタマイズ
2005年12月にADF Facesのソースは、Apache Foundationによって提供されているJSF実装であるApache MyFacesに提供されました。現在は、Apache MyFacesのサブ・プロジェクトProject Trinidadとして開発が進められています。オラクルは、今後もADF Facesの機能強化を進めると同時に、Project Trinidadへのフィードバックも継続していく予定です。ADF Faces Rich Clientで新たに追加された機能の一部は、すでにTrinidadでも使用可能です。

ADF Faces Rich Clientの主な機能

この項では、ADF Faces Rich Clientの特徴的な機能の中から次の4つをピックアップして説明します。

  • 部分ページ・レンダリング
  • ドラッグ&ドロップ・フレームワーク
  • ポップアップ・フレームワーク
  • スキンによるアプリケーションの外観のカスタマイズ

部分ページ・レンダリング

部分ページ・レンダリング(Partial Page Rendering: PPR)は、任意の領域だけをリフレッシュする機能を提供します。PPRを使用すると、ドロップ・ダウン・リストなどで選択された値に応じて、他のコンポーネントの表示を変更するようなWebページを、JavaScriptを記述せずに作成できます。

図2 部分ページ・レンダリングの実行イメージ
図 2 部分ページ・レンダリングの実行イメージ

ドラッグ&ドロップ・フレームワーク

GUIアプリケーションでは、データのコピーや移動などの処理をドラッグ&ドロップによる直感的な操作で実現することができます。しかし、Webアプリケーションでドラッグ&ドロップを実現するには、JavaScriptの複雑なプログラミングが必要です。ADF Faces Rich Clientは、ドラッグするデータと、ドロップする先をそれぞれタグで記述するだけでドラッグ&ドロップを実現できるフレームワークを提供しています。

図3 ドラッグ&ドロップの使用例
図 3 ドラッグ&ドロップの使用例

ポップアップ・フレームワーク

Oracle ADF 10g(10.1.3)で提供されていたADF Facesは、ポップアップ・ダイアログを表示するためのダイアログ・フレームワークを提供していました。このダイアログ・フレームワークを使用すると、JavaScriptのプログラミングなしにダイアログによる処理を実現できますが、Webブラウザの新規ウィンドウが生成されるため、ポップアップ・ブロックが設定されている場合に処理を継続できないなどの問題もありました。
ADF Faces Rich Clientはダイアログ・フレームワークを拡張し、Webブラウザの新規ウィンドウの生成を必要としないポップアップ・ダイアログやウィンドウの他、右クリック・メニューなども簡単に実現できます。

図4 ポップアップ・メニューの使用例
図4 ポップアップ・メニューの使用例

スキンによるアプリケーションの外観のカスタマイズ

ADF Faces Rich Clientでは、個々のコンポーネントに対してカスケーディング・スタイルシート(Cascading Style Sheet: CSS)のスタイルを定義することができるのはもちろん、スキンによってWebアプリケーション全体の外観を変更することができます。スキンとは、ADF Faces Rich Clientを使用したWebアプリケーションに適用されるスタイル・シートです。スキンを用いると、Webブラウザの種類に応じて最適化されたCSSが生成されるため、ブラウザ間におけるCSSの解釈の違いが吸収されます。また、開発者が独自のスキンを定義することも可能です。

図5 スキンの変更
図5 スキンの変更

ADF Data Visualization Components

ADF Data Visualization Componentsは、データの可視化や分析などの機能を実現するためのコンポーネントを提供しています。

表3 コンポーネント概要
コンポーネント 概要
ADF Faces Graph 棒グラフや円グラフ、折れ線グラフ、株価チャートなど50種類以上のグラフをPNGやFlash、SVGなどのフォーマットで表示
ADF Faces Gauge 特定のデータに対して閾値を設定し、そのステータスを表示するためのコンポーネント(図6)
ADF Faces Pivot Table 行と列の入れ替えや集計・表示する項目を変更できるピボット・テーブルでデータを表示
ADF Faces Geographic Map Oracle Databaseに格納された位置情報およびOracle Map Viewerと連携してデータを地図上に表示(図7)
ADF Faces Gantt プロジェクトのスケジュール管理のためのガント・チャートを表示

図6 ADF Faces Gaugeの使用例
図6 ADF Faces Gaugeの使用例

図7 ADF Faces Geographic Mapの使用例
図7 ADF Faces Geographic Mapの使用例

まとめ

今回は、JSFのアーキテクチャとADF Faces Rich Clientが提供する主な機能について説明しました。ADF Faces Rich Clientのその他の機能やデモは 製品情報ページを参照してください。 次回は、ADF Faces Rich Clientを使用して作成されたアプリケーションの実行をとおして、ADF Faces Rich Clientが提供するコンポーネントを体感していただく予定です。

Copyright © 2008, Oracle Corporation Japan. All rights reserved.
無断転載を禁ず

この文書はあくまでも参考資料であり、掲載されている情報は予告なしに変更されることがあります。日本オラクル社は本書の内容に関していかなる保証もいたしません。また、本書の内容に関連したいかなる損害についても責任を負いかねます。

Oracleは米国Oracle Corporationの登録商標です。文中に参照されている各製品名及びサービス名は米国Oracle Corporationの商標または登録商標です。その他の製品名及びサービス名はそれぞれの所有者の商標または登録商標の可能性があります。

智野 潤子 智野 潤子 (ちの じゅんこ)
日本オラクルで主に開発ツール/フレームワーク製品を担当しています。