「エンティティBean(EJB:Enterprise JavaBeansに含まれるデータベース・アクセスのカプセル化機能)なんてないほうがよかった。エンティティBeanのせいで2~3年が無駄に失われてしまった」。現在,最も影響力のあるJava関連技術者の1人であるRod Johnson氏は,2005年6月21日に東京で開催された「JavaWorld DAY 2005」で,従来のJ2EE/EJBがいかに間違った存在だったかをとうとうと語った。「米国や英国で,新規のプロジェクトがエンティティBeanを採用したという話は,もはや1件も聞かない」。

 Johnson氏は,広く使われている軽量コンテナ「Spring Framework」の開発者。J2EE開発者に大きな影響を与えた2冊の書籍「Expert One-On-One J2EE Design and Development」「Expert One-on-One J2EE Development without EJB」の著者としても知られている。

 Johnson氏は,1990年代後半に二つのO/R(Object/Relational)マッピング技術「エンティティBean」と「TopLink」が競合していた事実を紹介。「TopLinkはうまく動いていたが,エンティティBeanは3年もかけてうまく動かないことがわかっただけ」(同氏)。それにもかかわらず,普及したのは標準化されたエンティティBeanのほうだった。「このことは標準化委員会が行う,経験に基づかない標準化がいかに危険かを示している」(同)と指摘し,さらに,「TopLinkは(現在は米Oracleが提供しているため)ベンダーによる囲い込みという弊害はあるが,それでも動かないEJBよりはマシ。悪い標準は,標準がないことよりも悪い」(同)と切り捨てた。EJB以外では,Javaのデータベース接続用APIであるJDBCも標準化がうまく機能していない例だという。

 「標準化がうまくいくのは,トランザクションのような何十年も使われていてそれほど変化がない分野」とJohnson氏は語る。一方,イノベーションがある分野は,標準化よりも市場での競争にゆだねるほうがうまくいくという。「悪いアイデアが標準化されるとなかなか消えない。競争にまかせれば,悪いアイデアはすぐに駆逐される」(同氏)。

 またJohnson氏は,従来のJ2EEはオブジェクト指向の点でも問題があると指摘した。例えば,従来のJ2EEには,ビヘイビアを持たないTransferオブジェクトのようなフェイク(fake)のオブジェクトがたくさんあるという。J2EEのデザインパターンも本当のデザインパターンではないと主張した。

技術者はDI,O/Rマッピング,AOP,アジャイルを学べ

 もっとも「最近のJ2EEはよい方に変わってきた」とJohnson氏は語る。その同氏が「エンタープライズJavaの将来はここにある」と力説するのが,「DI(Dependency Injection,依存性の注入)」という概念だ。コンポーネント間の依存関係をコンテナ側で管理することにより,コンポーネントの独立性を高める仕組みである。DIを実現するオープンソースのフレームワークには,同氏が開発したSpringのほかにHiveMindなどがあり,EJBの次期版である3.0もDIをサポートする。また同氏は,オープンソースのフレームワーク「Hibernate」などが提供するO/Rマッピングの重要性も強調。「今後はすべてのJava技術者のコア・スキルになっていくだろう」と語った。

 Webアプリケーション・フレームワークに関しては,「Struts 1.xさえわかれば2~3年は大丈夫」という時期はすでに終わったという。Johnson氏はStruts 1.xの後継技術として,「JSF(JavaServer Faces)」「Spring MVC」「Tapestry」「Struts 2.0」を挙げた。さらに高いレベルの抽象化を実現する技術としては「(ワークフロー機能の強化を検討している)Struts 2.0」「Beehive」「Spring Web Flow」があるという。

 アスペクト指向プログラミング(AOP)も注目すべき技術として挙げた。「AOPを使い始めたユーザーは,たいていどんどんAOPを使うようになる」(Johnson氏)。AOPの最近の大きな出来事として,メジャーなAOPフレームワークであるAspectJとAspectWerkzの統合を紹介。これにより「AspectJ 5.0」がデファクト・スタンダードになり,普及が期待できるという。また,DIとAOPを組み合わせれば,DIが扱うPOJO(Plain Old Java Object)にAOPが提供するトランザクションやセキュリティといったサービスをコンテナで組み込めるようになる。

 今後のJ2EEではアジャイル開発も重要になっていくという。「(アジャイルの手法の一つである)テスト駆動型開発の状況は5年前とはすっかり変わった。もはや銀行のような保守的なビジネスでもテスト駆動型開発が主流になり,従来のウォータフォール型開発よりリスクが低いと認識されるようになった」(Johnson氏)。

 さらに,技術者を取り巻く環境として,オフショア開発(海外への開発委託)の増加を挙げ,高いスキルが必要ないプログラミングの仕事は欧米や日本ではどんどん減っていくと指摘。今後の技術者に求められる点として,「ビジネス相手やオフショア・チームとのコミュニケーション能力」「ビジネスのニーズを理解していること」「最新の技術により顧客に価値を提供できること」の三つを挙げた。

(日経ソフトウエア)