Java EE上のSI向けフレームワーク
オープン・スタンダードだけでは足りないもの
前回は、Javaによる企業システム開発において現時点でのオープン・スタンダードである「Java EE 5」を補完する、「JBoss Seam」(以下、Seam)について解説しました。こうした標準技術を習得したメンバーがある程度そろった開発体制であれば、Seamを使って標準フレームワーク群を組み合わせるだけで、生産性が高く今後の拡張にも柔軟に対応できるアプリケーション開発を実現できることと思います。
ところが一方で、スキルを持つ人材の確保が困難であったり、複数のベンダーやオフショアを活用して大規模な基幹系アプリケーションを開発するシステム・インテグレーション(SI)の現場では、こうしたオープン・スタンダードだけでは高い品質/生産性を安定的に維持するのに必要なものが欠けている場合があります。野村総合研究所(NRI)のSIにおける経験をもとに整理すると、欠けているものは大きく以下の2点に分類されると思います。
- SI案件向けにきめ細かな拡張機能群
- 設計/開発を標準化するための仕組み
1つ目は、端的に言えば、Java EE仕様上の拡張部品群です。オープンソースを中心に整備されているJava EEは、汎用的に利用できる標準規格である以上、どうしても個々のプロジェクトで必要となるきめ細かな機能が網羅されていません。
特に、日本という地域性が特殊要件の源になっている部分があります。例えば、日本語の全角文字をチェックするためのバリデータ部品などは、英語圏を中心とするオープンソース・コミュニティではどうしても整備が追いつきません。また、アプリケーションの流量制御や閉塞制御といった機能についても、よりきめ細かい制御が望まれます。こうした、標準機能を補完する拡張的な機能群が、必要とされることが多々あります。
2つ目は、一定の人材/スキルという制約の上で安定的にアプリケーション開発を行うための各種の仕組みです。第1回で述べた通り、これは「フレームワーク」が非常に大きな役割を発揮している領域ですが、SIにおいてはそれだけでは十分ではありません。
フレームワーク上で開発するアプリケーションのアーキテクチャーの標準化や開発時のルールなど、各種の取り決めがソフトウエア部品としてのフレームワークを補完する必要があります。SIにおいては、そうした各種の標準化やルールを内包した、広義のフレームワークが必要です。本記事では、これを「SIフレームワーク」と呼ぶことにします。
今回は、Java EEの基盤をフルに活用しつつ安定的に品質/生産性の高い開発を進めていくために、NRIが開発/提供しているSIフレームワーク「ObjectWorks+(オブジェクトワークス・プラス)」の概要を紹介します。
NRIの開発フレームワークへの取り組み ~ObjectWorks+~
NRIは、Javaサーバ・サイド開発の黎明(れいめい)期である1999年頃から、JavaによるWebアプリケーション開発のフレームワーク「オブジェクトワークス」を提供しています。オブジェクトワークスは、J2EEの拡張に合わせてEJB対応、Webサービス対応といった標準機能への対応を重ねてきました。
第1回で解説したように2006年にJava EE 5が登場した際、NRIではその技術仕様の標準化動向に対するインパクトの大きさと、今後のJava EEの技術標準の整理/統合の流れを見据え、オープン・スタンダードだけで従来のフレームワークの大部分をカバーする「Java EE 5」をベースに、フレームワークの新しいエディションを開発しました。この際に製品名称も改め、「ObjectWorks+」としました(※従来のJ2EEベースのフレームワークも、同一ブランドで現在でも継続的に提供しています)。
ObjectWorks+ Java EE 5対応版(以下、単にObjectWorks+とします)は、Java EE 5準拠のアプリケーション・サーバーを前提環境に、Seamを利用することで、Java EE 6の統一DI(Dependency Injection)基盤と同様の仕様で、アプリケーション開発全体の標準技術によるサポートを実現しています。
ObjectWorks+のWeb開発フレームワークは、実行基盤(ObjectWorks+/CORE、以下、CORE)と開発基盤(ObjectWorks+/STUDIO、以下、STUDIO)に分かれます(図1)。前述の「オープン・スタンダードだけでは足りないもの」との対比で言えば、
ObjectWorks+/CORE : 拡張機能群
ObjectWorks+/STUDIO : 設計/開発の標準化ツール
となります。次ページではまず、COREの特長を解説します。
(なおObjectWorks+は、核となるWeb開発フレームワーク機能のほかに、帳票出力、認証、ワークフローといった、業務システムで必要となる基本的な機能群を追加コンポーネントとして提供する、ミドルウエアの集合体でもありますが、本記事ではWeb開発の領域にフォーカスして解説します)