日本オラクル株式会社
システム製品統括本部 Fusion Middleware技術部 SOA/Javaグループ プリンシパルエンジニア
佐藤 裕之


2000年からOracle Application Serverと関わり早五年超。当初はオラクルってデータベース以外もやってんだ?って目で見られたものですが、現在は認知度急上昇!? ミドルウェアの流れも確実にオラクル に向かっている気配?を感じる今日この頃。

 Oracle Fusion Middleware

Oracle Fusion Middlewareは、標準技術を豊富に取り入れたソフトウェア製品群で、J2EE実行/開発環境、SOA(サービス指向アーキテクチャ)実行/開発環境、インテグレーション・サービス、ビジネス・インテリジェンス、アイデンティティ管理、コラボレーション、コンテンツ・マネジメントなど様々な実行/開発環境、その上で動作するサービス、サービスを開発するためのツールを提供します。

Oracle Fusion Middlewareをエンタープライズ・システムの開発、構築する基盤として見たとき、包括的に統合されたこの製品群は、J2EEを用いた開発や SOAの開発、デプロイおよび管理を完全にサポートします。
また、Oracle Fusion Middlewareは、ホット・プラガブルなアーキテクチャを提供します。ホット・プラガブルなアーキテクチャでは、オラクルの提供するソフトウェア製品群だけでなく、既存のアプリケーション、システムまたは技術への投資を有効活用し、システム全体を構成することが可能です。さらに、Oracle Fusion Middlewareの実行環境はグリッド・コンピューティング・テクノロジーの概念を取り入れることにより、計画停止または計画外停止に伴う中断を最小限に抑えることができます。これらのグリッド・コンピューティング・テクノロジーにより得られるシステム稼働時間の最大化は、ビジネスにとって大きな価値をもたらします。

 

※画像クリックで拡大表示します
注:図中のカッコ付き表記は、ソフトウェア製品やコンポーネントではなく機能を示す
図 1:Oracle Fusion Middlewareのソフトウェア製品群

 

オラクルではOracle Fusion Middlewareを中心として、エンタープライズ・システムを構築する上での要素を包括的に提供しています。またOracle Fusion Middlewareでは、今日のエンタープライズ・システムを構築する上で必須とされる以下のテクノロジーカテゴリに関して、より効率的に開発、構築、運用するためのソフトウェア群を提供しています。

ENTERPRISE APPLICATION SERVER - SOA/Javaを用いた開発・構築を行うための標準化技術に基づく実行基盤としての機能を提供
GRID COMPUTING - SOA/Javaで開発されたアプリケーションの稼働率の最大化とハードウェア・リソースの有効利用を実現するグリッド・コンピューティング・プラットフォームとしての機能を提供
COMPOSITION & PROCESS ORCHESTRATION - SOAをベースとしたデータ統合やサービスのオーケストレーション等、システム連携のための機能を提供
DEVELOPMENT TOOLS - SOA/Javaを用いたアプリケーションの開発を効率的に実施する統合開発環境(IDE)、アプリケーションの保守性・開発生産性を高めるアプリケーション・フレームワーク、データベース開発を効率的に実施するソフトウェア・ツール等を提供
INFORMATION AGGREGATION & ANALISYS - エンタープライズ・システム内で散在した有効活用しなければならないデータを集積、抽出するETL(Extract、Transform、Loading)、ビジネスの意思決定を迅速に行うためのビジネス・インテリジェンスを実現する機能を提供
MANAGEMENT - データベース・ミドルウェア・アプリケーションを一元的に管理、運用、監視するためのツール群を提供
UNIFIED WORKPLACE - エンドユーザーにサービスを提供するための一元的なユーザー・インターフェース(UI)とグループウェア、検索等のサービス群を提供
SECURITY - アイデンティティ管理に必要な、シングル・サインオン、ウェブ・アクセス制御、プロビジョニング、フェデレーション、パスワード同期、ディレクトリ・サービス、バーチャル・ディレクトリ等を提供するアイデンティティ管理基盤を提供

このようにOracle Fusion Middlewareは、今日のエンタープライズ・レベルで必要とされる要素を包括的に提供するソフトウェア製品群です。この中でも特に、J2EEベースの開発や、SOAを利用したシステムの開発に有用な、Oracle Fusion Middlewareで提供されるソフトウェア製品を以下に挙げます


■ Oracle Application Server 10g - ENTERPRISE APPLICATION SERVER

Oracle Application Server 10gは、J2EEを用いたエンタープライズ・アプリケーションや、Webサービス等を用いたSOAベースの開発、構築、デプロイを行うための包括的な機能を提供します。また、スケーラブルな標準技術に基づくJ2EEサーバーをベースとした、インテグレーション、ビジネス・インテリジェンス・スイート、ポータル・ソフトウェア等を提供します。また、SOAのための完全な開発ライフサイクルや実行基盤も提供します。このOracle Application Server 10g上で開発されたエンタープライズ・アプリケーションは、グリッド・コンピューティング・テクノロジー上で運用され、稼働率を最大化し、ハードウェア・リースを最大限に活用します


■ Oracle JDeveloper 10g - DEVELOPMENT TOOLS

Oracle JDeveloper 10gは、SOA/Javaを用いた開発時のモデリング、開発、デバッグ、オプティマイズ、デプロイを行うための統合開発環境です。
J2EE 1.4 および J2SE 5.0 に対するサポート、Javaコーディング・ユーザーのコード修正作業を軽減する強力なリファクタリング機能、JAXB(Java Architecure for XML Bindingにも対応したXML関連開発機能など、数多くの機能を持っています。また、JavaServer Faces(JSF)に完全対応し、ページフロー作成から UI開発までを強力なビジュアル開発環境で支援します。EJB 3.0に関しても、ウィザード形式による開発で、より効率的な開発を実現できる環境を提供します。


■ Oracle Application Development Framework(Oracle ADF) - DEVELOPMENT TOOLS

Oracle ADFは、簡単な設定ですぐに使用できるインフラストラクチャ・サービスと、Oracle JDeveloperと親和性の高い視覚的かつ宣言的な開発アプローチを提供し、開発を簡素化するリッチ・クライアントやWebブラウザで表示するUIから、データベース等のバックエンド・システムとの接続ロジックまでを賄うことのできるエンド・ツー・エンドのJ2EEフレームワークです。


■ Oracle TopLink - DEVELOPMENT TOOLS

Oracle TopLinkは、業界をリードするJavaオブジェクトで扱われるデータとデータベースのリレーショナル・データをマッピングし、O/R(Object/Relational)インピーダンス・ミスマッチを解決するO/Rマッピング・ツールであり、きわめて柔軟なマッピングと高度なキャッシュのメカニズムを提供します。マッピングは、通常のJavaクラスであるPOJO(Plain Old Java Object)と Enterprise JavaBeans(EJB)をリレーショナル・データベースに対して行えるだけでなく、POJOとXML文書間でJAXBによりコンバートさせる機能も提供します。


■ Oracle SOA Suite - COMPOSITION & PROCESS ORCHESTRATION + @

Oracle SOA Suiteは、SOAの開発、デプロイ、管理を行うサービス・インフラストラクチャ・コンポーネントの完全なソフトウェア群を提供します。
これによりコンポジット・アプリケーションの開発、管理、オーケストレーションが可能になります。Oracle SOA Suiteには、以下のSOAベースの開発を行う上で必要なソフトウェア製品が含まれます。

Oracle BPEL Process Manager(BPEL PM) - 個々のサービスをプロセス・フローとしてアセンブルする標準であるBPEL (Business Process Execution Language)の開発/実行環境を提供し、各サービスのオーケストレーションを実現する機能を提供
Oracle Enterprise Service Bus (ESB) - SOAとEDA(Event Driven Architecture)の概念を融合するため、ビジネス単位の統合を単純化し、ヘテロジニアスなプラットフォームおよび環境のブローカーとしての役割を担うエンタープライズ・サービス・バスとしての機能を提供
Oracle Business Activity Monitoring (BAM) - ビジネス・プロセスやサービスをリアルタイムにモニタリングするためのダッシュボードとしての機能を提供
Oracle Web Services Manager - Webサービスためのポリシーベースのセキュリティ適用と管理、モニタリングする機能を提供
Oracle Business Rules - ビジネスの意思決定を迅速にシステムに反映するためのビジネス・ルール・エンジンとしての機能を提供
OracleAS Service Registry - Webサービス等の公開、カテゴライズ、ディスカバリーの仕組みを提供するUDDI v3準拠のレジストリとしての機能を提供
Oracle JDeveloper 10g - SOAベースのエンタープライズ・システムを、より容易に開発するための統合開発環境としての機能を提供

インデックスに戻る

 

 Oracle Fusion Middlewareの開発標準への準拠と貢献

Javaを中心としたオープン系のシステム開発や、SOAを実現するためのWebサービスの開発を行う場合、J2EEやWebサービス等の各種標準への準拠が重要になります。Oracle Fusion MiddlewareのJ2EE/SOA開発・実行環境を提供するOracle Application Server 10g Release 3のJ2EE/Webサービス実行環境であるOracle Containers for J2EE(OC4J) 10g Release 3(10.1.3.1)、Oracle JDeveloper 10g(10.1.3.1)、Oracle TopLink、Oracle SOA Suiteは、以下の標準に準拠します。


■ J2EE 1.4 + JSF/EJB 3.0への完全なる準拠

多くの商用アプリケーション・サーバーがサポートするJ2EE 1.4仕様を始め、次期Java EE 5 (Java Platform Enterprise Edition, Version 5)仕様の一部であるJSF/EJB 3.0に、他の商用アプリケーション・サーバーに先駆け準拠します。

表1:J2EE 1.4/Java EE 5 関連標準への準拠
仕様 バージョン 主に関連するソフトウェア製品
J2EE 1.4完全準拠    
EJB 2.1 OC4J、JDeveloper、TopLink
Servlet 2.4 OC4J、JDeveloper
JSP 2.0 OC4J、JDeveloper
JMS 1.1 OC4J、JDeveloper
JTA 1.0 OC4J、JDeveloper
JavaMail 1.3 OC4J、JDeveloper
JAF 1.0 OC4J、JDeveloper
JAXP 1.2 OC4J、JDeveloper
Connector 1.5 OC4J、JDeveloper
Web Services 1.1 OC4J、JDeveloper
JAX-RPC 1.1 OC4J、JDeveloper
SAAJ 1.1 OC4J、JDeveloper
JAXR 1.0 OC4J、JDeveloper
J2EE Management 1.0 OC4J、JDeveloper
JMX 1.2 OC4J、JDeveloper
J2EE Deployment 1.1 OC4J、JDeveloper
JACC 1.0 OC4J、JDeveloper
Java EE 5一部先取りし準拠   OC4J、JDeveloper、ADF、TopLink
JSF 1.1 OC4J、JDeveloper、ADF
EJB(JPA: Java Persistence APIを含む) 3.0 OC4J、JDeveloper、TopLink

■ SOA開発において必要な標準への準拠

SOAの主要な実装手段であるSOAPを用いた、Webサービスで関連する以下の仕様に準拠します

表2:SOA関連標準への準拠
仕様 バージョン 主に関連するソフトウェア製品
SOAP 1.1/1.2  
WSDL 1.1 OC4J、JDeveloper、BPEL PM、ESB
UDDI 3.0 OracleAS Service Registry
WS-Security 1.0 OC4J、JDeveloper、Web Service Manager
WS-Reliability 1.0 OC4J、JDeveloper
WS-Addressing 1.0 BPEL PM
WS-BPEL 1.1 BPEL PM
Web Services Metadata(JSR 181) 1.0 OC4J、JDeveloper
WSIF 1.4 OC4J、JDeveloper、BPEL PM、ESB
Java Rule Engine API(JSR 94) 1.0 Oracle Business Rules

また、標準化はされていませんが、SOAPを用いないシンプルなWebサービスの実装手段としての有用なREST(Representational State Transfer)もサポートします。

■ SOA開発において必要な標準への準拠

Javaにおける標準化の取り組みはJCP(Java Community Process)により取りまとめが行われています。オラクルは、J2EE 1.4、Java EE 5に包含されるすべての仕様にExpert Groupとして参画しています。また、特にJava EE 5の最も大きく、かつ重要な変更となるEJB 3.0において、Oracle TopLinkのエキスパートであるMichael Keithが、米サン・マイクロシステムズ社のLinda DeMichiel氏と共にSpecification Leadをつとめています。

インデックスに戻る

 

 Oracle Fusion Middlewareのオープンソース・コミュニティへの貢献

昨今のJavaテクノロジーの動向は、オープンソース・コミュニティにより牽引されているといっても過言ではありません。Oracle Fusion Middlewareでは、製品の開発に当たり、主要なオープンソース・コミュニティに対しソースコードを提供し、一般のテクノロジーの発展に貢献しています。また、それらのオープンソース・コミュニティからの広範なフィードバックをもとにより良い製品を目指し日々ブラッシュアップを行っています。オラクルが貢献している主要なオープン・ソースコミュニティには以下のようなものがあります。

■ Project GlassFish

GlassFishは、Java EE 5に対応した、サン・マイクロシステムズ社が提供するオープンソースの実装です。Java EE 5における重要な改善点のEJB 3.0に含まれるデータベース・アクセスのための仕様であるJPA(Java Persistence API)の実装に、すでに商用O/Rマッピング・ツールとして定評のあるOracle TopLinkの実装をTopLink Essentialsとして寄贈しています。また、GlassFishから抜き出されたTopLink Essentials単体の実装を米オラクルの技術サイト(Oracle Technology Network)からダウンロードし、利用することも可能です。

  Project GlassFish
http://www.oracle.com/technetwork/java/javaee/community/index.html
  TopLink JPA
http://www.oracle.com/technetwork/middleware/toplink/index-085257.html

■ Apache MyFaces Project

Apache MyFacesは、JSR 127 で標準化されている JavaServer Faces(JSF)のオープンソース実装の1つであり、Apache Software Foundationから提供されています。そのサブプロジェクトのProject Trinidadとして、オラクルが提供するOracle ADFのJSFベースのコンポーネントADF Facesを寄贈しています。また、ADF Facesは、オラクルの製品に依存した実装ではなく、様々なJSF実装上で動作するように考慮され開発されています。オラクルに依存した機能を実装すれば最適化を行うことは可能ですが、JSFの実装に依存しない画面のコンポーネントとして設計されているため、MyFacesにも比較的容易に対応させることが可能です。

  Apache MyFaces
http://myfaces.apache.org/
  ADF Faces
http://www.oracle.com/technetwork/developer-tools/jdev/overview/index.html

■ Dali JPA Tools Project

Dali JPA Tools Projectは、JPAを用いた開発を容易にするプラグインを提供します。(JPAとは、Eclipseで次世代Java EE 5のJSR 220で標準化されたEJB3.0に含まれる、リレーショナル・データベース・アクセスの為の仕様です。)Dali JPA Tools を利用することによりEJB 3.0のためのオブジェクト・リレーショナル・マッピングの定義・編集をウィザード・ベースで行うことができます。オラクルはこのプロジェクトをリードしています。

  Dali JPA Tools Project
  TopLink JPA: Eclipse Support
http://www.oracle.com/technetwork/jp/middleware/toplink/overview/index.html

■ JSF Tools Project

JSF Tools Projectは、Eclipseでサーバーサイド・プログラミングを行うための包括的セットであるWTP(Web Tools Platform)のサブプロジェクトとして、JSFを用いた開発を容易にする機能を提供します。オラクルはこのプロジェクトをリードしています。

  JSF Tools Project
http://www.eclipse.org/webtools/jsf/

■ BPEL Designer Editor

BPEL Designer Editorは、BPEL4WSのフローを定義、編集、テスト、デバックするためのプラグインを提供するプロジェクトです。オラクルはこのプロジェクトをリードしています。

  BPEL Designer Editor
http://www.eclipse.org/proposals/bpel-designer/

インデックスに戻る

 

 アプリケーション・フレームワークの必要性

J2EEは、現在のほとんどの基幹業務アプリケーションのベースとなる、堅牢でスケーラブルかつセキュアな標準プラットフォームです。J2EEは、 Java言語を使用して複数層アプリケーションを構築するための仕様セットを提供します。ただし、ほとんどの場合、この包括的な仕様セットはきわめて柔軟かつ複雑で、アプリケーション開発のためにJ2EEを使用する開発者は、その習得に多くの時間を要します。J2EEプラットフォームはその柔軟性と複雑性により、長年にわたり開発者自身にベスト・プラクティスと設計パターンの作成を強要してきました。さらに、組織ではSOAの原理を利用する複合アプリケーション構築の必要性が高まり、開発者はアジャイルなアプリケーションの作成が必要な状況に追い込まれました。これらのベスト・プラクティスをアジャイルなアプリケーションに実装するには、通常、多数のインフラストラクチャ・コードを記述することが必要になります。J2EEアプリケーションを初めて構築する開発者にとって、これは大きな負担です。
これらの問題を解決する方法の一つは、複雑化したJ2EEプラットフォームを抽象化し、しかもその機能を有効活用するアプリケーション・フレームワークを利用することです。オラクルではOracle ADFというアプリケーション・フレームワークを提供しています。
Oracle ADFは、そのままで利用することのできるインフラストラクチャとビジュアル、宣言的な開発方法を提供する、エンド・ツー・エンドのJ2EEフレームワークです。また、Visual Studio 等の4GLツールの知識をもった方や、リレーショナル・データベースのコンセプト、SQLや宣言的な開発に慣れ親しんだ開発者にとっては、このテクノロジー内に多くの生産性を高める要素を見出すことができるでしょう。

インデックスに戻る

 

 アプリケーション開発におけるMVCパターン

MVCはソフトウェア設計の一つの技法です。デザイン・パターンでは、MVCパターンと呼ばれています。J2EEを使ったWebアプリケーション開発を前提とする場合、MVCのModel/View/Controllerは次のようにカテゴライズされます。

Model(モデル)
  モデルはビジネス・ロジックとビジネス・ロジックが扱うデータ(ドメイン・モデル/エンティティ)を主に担当します。
画面表示や画面からの入出力データのハンドリング、画面遷移に関しては他層に任せます。J2EEではモデルはEJBとして実装されます。
View(ビュー)
  上記モデル層のデータをユーザーに対して画面表示する処理を担当します。
J2EEではビューはJSPで実装されます。
Controller(コントローラ)
  コントローラは上記二つのモデルをコントロールします。 具体的にはビジネス・ロジックに応じた画面遷移や、画面に応じたビジネス・ロジックのハンドリングが主な役割です。

このようなデザイン・パターンを用いて役割分担を明確にすると、MVCコンポーネント間の依存性を極小化し、アプリケーションの保守性を高めることができます。
また、各コンポーネントの専門家に作業を割り当てることによって、複数作業者での開発を効率よく進めることができるようになります。

インデックスに戻る

 

 Oracle ADFとは?

Oracle ADFは、Webアプリケーション開発のデファクト・スタンダードとなっているMVCパターンに基づくアプリケーション・フレームワークです。
MVCパターンを採用しているWebアプリケーション・フレームワークとしてはStrutsやJSFが有名ですが、JSFはJCPの中でJSR 127として仕様が策定され、Java EE 5に取り込まれてJ2EE標準としての地位を確立しています。
Oracle ADFは100を超えるUIコンポーネント群(ADF Faces)を提供しており、JSFリファレンス実装で提供されているUIコンポーネントだけを使った画面開発に比べて、よりリッチな画面インタフェースを実装できるようになります。
また、Oracle ADFは、ビジネス・ロジックのデータを画面にバインドするためのバインディング実装(ADF Binding/Data Control)を提供しています(このバインディング機能はJSR 227として仕様が策定されています)。
JDeveloperはこれらのUIコンポーネントとバインディング機能を宣言的に使うことのできる統合開発環境であり、JDeveloperを使うことで、通常のStrutsやJSFのアプリケーション開発に比べて画面やビジネス・ロジックの実装をよりコードレスに行うことができます。

インデックスに戻る

 

 Oracle ADF アーキテクチャ

Oracle ADFは下記のようにStruts、JSF、Swingを補完するフレームワークとなっており、モデル、ビュー、コントローラの各レイヤーでコンポーネントを提供しています。

 

図2: Oracle ADFアーキテクチャ

 

 

ADF Faces - JSFでリッチUIコンポーネントを使うためのライブラリ群
ADF Controller - Struts、JSFをOracle ADF Modelに統合するためのモジュール
ADF Swing - Swing用の拡張モジュール
ADF Model - 後述
ADF Business Components - Oracleが提供するデータアクセス・オブジェクト・フレームワーク

 

この中でコアとなるモジュールはADF Modelであり、データ・コントロールと呼ばれるJSR227のサービス抽象化機能を実装しています。
このデータ・コントロールによってサービス・インタフェース(サービス・プロパティ、メソッド、メソッドのパラメータ、およびメソッド戻り値等の情報)がXMLで定義されます。
同様に、サービス呼び出し側も呼び出し情報をページ定義ファイルに設定しておくだけで、ADFのバインディング機能により、画面UIとサービスとの連携に必要なインスタンス生成、メソッド呼び出しが実行されます。
また、このようなデータ・コントロールやページ定義ファイルのバインディング設定は、JDeveloperを使うことでドラッグ&ドロップ操作により簡単に行うことができます。

 

Enterprise JavaBeans(EJB)セッションBean
POJOベースのサービス・クラス
Webサービス
XML/CSV
ADF Business Componentsアプリケーション・モジュール

 

以上のように、ADFが提供するデータ・コントロールやデータ・バインディングを使えば、通常のJSFアプリケーション開発をする上でネックとなっていたマネージドBeanのロジックの肥大化を防ぐことができるようになります。
また、サービス層は抽象化されるのでサービス実装に依存したラッパクラスを開発することも不要で、どのビジネス・サービス・テクノロジーを使っても宣言的手法に基づいた統一された開発手法を適用することが可能になります。
結果として、ADFを使うことで、MVCのレイヤーごとに担当者を分けても開発を効率よく行うことができるようになります。

次回は、JDeveloperとOracle ADFを使用して、JSF/EJB 3.0をベースとするサンプル・アプリケーションを作成します。

インデックスに戻る