米持幸寿のJava Issue

今度こそソフトウェアの部品化は現実になる?
――EJBコンソーシアムの意義とは――

米持幸寿
日本アイ・ビー・エム
2000/12/19


 この1年で、EJB に対応したWebアプリケーション・サーバが数多く発表された。今後、企業アプリケーションはどんどん EJB で構築されることが増えていくだろうと考えられる。

 EJBでは、ユーザー・アプリケーションをコンポーネント化するという思想が取り入れられている。つまり、部品化しようという試みだ。部品化されたソフトウェア・コンポーネントは、それぞれを組み合わせて、補完するアプリケーション・コードを追記するだけで新しいアプリケーションを構築することができるため、開発生産性を上げることができる。さらに、これを部品として流通させ、複数の企業で共通に使える部品が売買されるようになると、社会全体の開発生産性が飛躍的に向上することが期待される。

■ソフトウェアの部品化は業界の長年の夢

 ソフトウェアのコンポーネント化、という試みは、かなり古くから行われている。例えば、Javaの歴史でいえば、JavaBeans がこれにあたる。JavaBeans は基本的にローカルオブジェクトとして扱えるソフトウェア部品の規格であった。EJBでの部品化は、サーバ側、つまり分散オブジェクトとしての部品化を目指したものだ。

 コンポーネントを長くやっているエンジニアの多くは苦渋の人生を送ってきたといっても過言ではないだろう。ソフトウェア・コンポーネント技術で本当の意味で受け入れられたものは非常に少ない。EJBは「今度こそ」という意気込みで取り組みが行われている。なぜ、EJBはそこまで期待されているのだろうか。

 分散オブジェクト技術を利用したコンポーネント・テクノロジに期待される要素にインターオペラビリティとポータビリティがある。これらの要素はインターネット上のエンタープライズ・システムにおいて非常に重要なファクターだ。つまり、現代のインターネット時代に要求されていることがソフトウェア・コンポーネントには、そのままあてはまる。つまり、EJBに期待されていることとインターネット・システムが要求することがぴったりあてはまるのである。そして、EJBはJavaをベースにしているために、これらの要求を満たす条件を備えている。いままで、C++、CORBAといったテクノロジでは成しえなかったものがJavaにはあるのだ。それらがエンジニアの期待を膨らませる一因になっている。

 EJBはJavaで作られるため、複数のプラットフォーム間で共通のソフトウェア部品が使えるはずだ。これをコンポーネントのポータビリティ(可搬性)と呼んでいる。コンポーネント化により、ソフトウェアの部分同士の結合が弱くなり、可搬性が確保されると、ソフトウェア部品を流通、つまり、市場をつくり、コンポーネント販売のビジネスを行おうという動きが出てくる。

 ところで、EJBのコンポーネントの開発を始めるとき、皆さんはどのようにその知識を取得されるだろうか。いきなり「サンのホームページを見に行ってEJBの仕様を読んだ」という人は少ないはずである。通常、コンテナを出しているベンダやソフトウェア・ハウスが提供するセミナーやマニュアルをもとに勉強し、アプリケーションの実装をするはずだ。

 このやり方でもポータブルな(可搬性のある)コンポーネントを作成できることが理想なのであるが、実際にはそうはいかないのが現状である。

 EJB の仕様には、まだ不十分なところもあり、あいまいな部分も多い。EJBコンテナを提供しているソフトウェアベンダは、実装を完成させるために、不足している部分を独自に補ったり、独自の解釈により実装をすすめたり、パフォーマンスを上げるために独自の機能を提供していたりする。また、すべての機能を実装するのが間に合わない場合などは、仕様の中のサブセットを提供していたりすることもある。

 このような背景のために、現状ではEJBコンポーネントを作成しても、ポータビリティが保たれるとは限らない。多くの場合、X社のコンテナ用に作成したEJBコンポーネントはX社のコンテナでしか配置(Deploy)や実行ができないというのが実情である。

 この状況は、EJB仕様のバージョンが上がるにつれて改善されつつあるが、そうすぐに完全にはならない。しかも、ポータビリティやインターオペラビリティのように複数のサーバ製品間の互換性などが課題になるような議論においては、サーバ・ベンダの足並みがそろわない限り実現は難しい。そして、それは数カ月先といったごく近い将来ではないだろう。

■ソフトウェアの部品化と再利用実現を目指す動き

 そこで、複数あるベンダのコンテナに対応できるEJB コンポーネントを作ればよい、という思想が生まれた。例えば、EJB の仕様の中で、ポータビリティに関係する事項を守り、多数存在するコンテナの特徴をとらえて、コーディングを注意しようということである。

 去る、2000年9月20日に、この思想を具現化した団体が発足した。「EJBコンポーネントに関するコンソーシアム」である。NTTコミュニケーションウェア、イーシー・ワン、川鉄情報、日本アイ・ビー・エム、日立ソフト、富士通の6社が発起人会社となり、12月7日現在で54の会員企業が入会している。

 このコンソーシアムが目指しているのは、EJBコンポーネントの普及であり、コンポーネントの流通によるビジネス市場が確立されることである。コンソーシアムでは、次の3つの活動部会があり、今後も拡張される予定である。

  1. ポータビリティ部会
    コンポーネント開発時におけるポータビリティ確保のためのコーディングガイドライン、および、コンテナ利用時のヒント&チップス集を策定。
  2. コンポーネント公開情報部会
    コンポーネントを市場に公開するときの公開情報項目やそのDTD、品質表示規約を策定。
  3. デザイン部会
    EJBコンポーネントを部品として開発する際に、どのような粒度で、どのような組み合わせ方で作るのがより効果的なのかを議論し、デザインガイドなどを策定。

 入会に関する詳細の情報は、以下のホームページに紹介されているアドレスに問い合わせていただきたい。

[EJBコンポーネントに関するコンソーシアム]
http://www.ejbcons.gr.jp/

Index

第1回 ソフトウェアの部品化は現実になる?(2000/12/19)
第2回 Javaの歴史と21世紀への5つの提言
(2001/1/16)
第3回 Javaの開発にUMLは必要?
(2001/3/2)
第4回 ここはJavaプログラマの天国?(2001/4/24)
第5回 Javaコンソーシアムが卒業式 (2001/7/6)
第6回 EJB部品の流通をめぐる動き(2001/12/6)
第7回 開発ツールのプラットフォーム“エクリプス”とは? (2002/1/17)


プロフィール
米持幸寿

1987年、日本アイ・ビー・エム入社。
IBMメインフレームOSであるVSE、およびVM関連ソフトウェアプロダクト の保守、 システム無人化ソフトウェア開発を手がける。現在はJava、XML、EJBに関わるプロモーション活動を行っている。 現在当フォーラムにて「Java Servlet徹底解説」等の連載を行っている。

[筆者執筆記事一覧]
・Java Servlet徹底解説(JSPとの連携)

・Java Servlet徹底解説(EJBとの連携)

・サーバサイドJava 重点キーワード

ご意見、ご感想は掲示板へどうぞ




Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間