PR

J2EEは,企業情報システムの開発プラットフォームとして広く普及し始めている。ただ,J2EEを活用してシステム開発を成功に導くためには,大きな二つの課題を乗り越えなければならない。この課題の存在を認識せずに与えられたお手本だけに頼っていると,従来型の開発手法に比べて生産性や品質が落ちる危険性もある。

(本誌)

画面1●Enterprise BluePrints
米Sun Microsystems社がWebサイトで公開している。日本語版もある(本誌)。
図1●EJBの種類
EJBコンテナが終了しても保持される(永続化される)データを表現するEntity Beanと,ビジネス・ロジックを実装するSession Beanがある。さらにそれぞれが二つの種類に分かれる。CMP(Container Managed Persistence) とBMP(Bean Managed Persistence)という永続化の手法によって分かれるのがEntity Bean。Session Beanは,内部状態を保持するかしないかの2種類を持つ(本誌)。

 ここ10~15年の間に,企業情報システムに求められる役割は大きく変化した。かつては情報を整理してコストを低減することが求められていた。それが今,情報を活用して「利益を生み出す」ためのツールへとシフトしている。企業システムは今や,ビジネスを成功させる上での重要な戦略の一つとなっている。

 同時に,筆者のようなツール提供側の方法論や作業も大きく変化した。品質や開発スピード,コストについて厳しい条件が突きつけられているのが現状である。

 この現状を打破する方法の一つが,ソフトウェアの再利用技術である。再利用自体は昔から試みられていたが,ここ数年で特に関心が高まっている。ビジネス・コンポーネントという新たなキーワードも生まれた。ある業務に必要な処理(ビジネスルール)を部品化し,コンポーネントとして使い回すことで生産性を上げるというものである。数年前には,J2EE(Java 2 Platform, Enterprise Edition)プラットフォームとEJB(Enterprise JavaBeans)で部品化を促進する考え方が大流行した。部品化によりシステムの生産性が劇的に向上するという期待があった。

 しかし,現実はそれほど簡単ではなかった。ビジネスの現場ではしばしば予想外の事態が発生し,システムも短いサイクルで形を変える。過去に作ったソフトウェアをそのまま再利用できるケースはあまりない。現在は多くの技術者が,この事実を冷静にとらえている状況にある。

 J2EEに限らず,新しく登場した話題の技術がすぐに実用的に優れた成果を出す保証はない。当然ながら,新技術を生産現場に適用し,プロジェクトを成功に導く責任はそれを採用する企業にある。各企業はまず,その技術をよく理解し,基盤技術として採用してよいかどうか評価しなければならない。

 その際,各システムの目標や目的に照らし合わせて技術を取捨選択することが大切だ。必要があれば,随時軌道修正もしなければならない。つまり,技術者がゴールをはっきりと認識することが必要である。ゴールに到達するために上手に技術を使い倒すべきで,技術に振り回されてはならない。

教科書通りにはいかないJ2EE

 現在,J2EEによる企業情報システム開発は広く普及している。基幹システムや大規模システムへも展開が進みつつある。

 しかし,J2EEを企業システムに適用するための優れた方法論はいまだに確立されていない。J2EEを使ったシステム開発は,模索を続けている段階にある。一応お手本的なものはあるが,“教科書通りではJ2EEはうまくいかない”という声が多くの技術者から聞こえてくる。

 J2EEのお手本とされているのは,Sunが公開しているEnterprise BluePrints(旧J2EE BluePrints)である(画面1[拡大表示])。企業情報システムをJ2EEで実現する際の標準的なスタイルを示している。J2EE関連技術の適用ガイドライン,設計パターン,サンプルコードが含まれており,J2EEエンジニアのバイブルとなっている。

 しかしこれはあくまでも,基盤技術を適用するための一つの方向性を示しているにすぎない。つまりJ2EEの理想が込められたもので,システム開発の現実とはギャップがある。企業情報システムに必要な,生産技術や生産手段としての模範解答とは言い難い。

 J2EEは,企業情報システムに適用する際に壁となる問題を二つ抱えている。一つは,アーキテクチャが複雑なこと。そしてもう一つは,データベースとのデータモデルの違いが考慮されていないことである。どちらも本質的な課題であり,お手本で単純に解決できるものではない。

アーキテクチャが複雑

 現在のJ2EEは巨大で,かつ複雑である。一人の技術者がすべてを完全に把握するのが不可能なほどだ。個々の技術をきちんと理解して,的確に使いこなすのは容易ではない。

 一つの例が,役割分担の難しい複数の技術が存在していることだ。例えばJSP(JavaServer Pages)とServletである。JSPは主にユーザー・インタフェースの描画を担当し,Servletはサーバーとクライアントとのデータのやり取りをするという違いがある。ただその境目はあいまいで,どちらを使っても同じことができる。

 EJB(Enterprise JavaBeans)でコンポーネントを実装するのにも,複数の方法がある。EJBには,Entity BeanとSession Beanという2種類がある。さらにそれぞれが二つに分けられ合計で4種類の実装方式がある(図1[拡大表示])。どれがよいか見極めるには,ある程度スキルが必要だ。

 重要なAPI群も多岐にわたっている。データベースを操作するためのJDBC(Java Database Connectivity),名前解決やディレクトリ・サービスを提供するJNDI(Java Naming and Directory Interface),トランザクションを管理するJTA(Java Transaction API),遠隔地のメソッドを呼び出すのに使うRMI(Remote Method Invocation)などである。

 開発作業が終わったあとには別のスキルが要求される。完成したシステムをJ2EEアプリケーション・サーバーへ配備したり,運用するための知識を身につけなければならない。

長尾 寿宏 Toshihiro Nagao

テンアートニ 第一事業部執行役員,プロダクト開発グループマネージャー
1986年,コンピュータと無縁な早稲田大学社会科学部を卒業。最初の職場で初めてコンピュータと出会う。汎用機とCOBOLに始まり,ダウンサイジング,オープン化,Web化と激しく変化する環境の中でシステム開発の現場に身を置く。1998年テンアートニに入社,数々のJava+Webシステム開発プロジェクトのリーダーを務めながら,Java開発基盤の整備を推進。同社のWebアプリケーション構築フレームワーク製品「WebWorkBench DeveloperCafe」の開発責任者である。