「瞬間最大風速で1000人が同時に手を動かすような巨大プロジェクトが実際に動いている」。日本アイ・ビー・エム技術理事の長島哲也氏はJ2EEベースの開発の最前線をこのように表現した。システム構築のための技術群が数ある中で,このような大規模開発のための技術群といえば,今やJava/J2EE(Java2 Platform, Enterprise Edition)以外にない。理由は,大規模システムに欠かせないミドルウエア群がことごとくJ2EE対応になっていること,開発者層が広いこと,そして最新の技術群が投入され続けていることだ。
「J2EEのインパクトが何かといえば,巨大プロジェクトを実行できるだけのプログラマと,システム構築に必要なミドルウエア群がそろうようになったこと」。長島氏はこのように端的に表現する。長島氏は,1000人規模といった大規模プロジェクトの現場や,オブジェクト指向開発など最新技術の投入の実態について詳しい。
そして,大規模プロジェクトを遂行する上では「人間」という要素が最も重要となる。オブジェクト指向開発も,プログラミング言語も,Javaベースのミドルウエアも,すべて開発者をうまく動かすための道具立てだ。J2EEが普及してきたということは,これらの道具立てがそろってきたということを意味する。
大規模プロジェクトでは正攻法しかない
大規模プロジェクト特有の課題とは何か。「オブジェクト指向の開発プロセスの特徴の1つは、イテレーティブ(反復型)ということ。だが,ここまで大規模なプロジェクトだと,普通の意味での反復型の開発は難しい」。現代的な開発プロセスで出てくる「イテレーション(反復)」の意味は,開発チームの全員が情報を共有して役割を分担することにあるが,大規模なチームになれば,「すべての開発者がドキュメントの行間を読んでくれるということは,もう期待できない」。
そういう時,どんなやり方で解決するかといえば,「特別なやり方はない」と長島氏は断言する。「地道にやるしかない。一言で言えば技術者の質を上げるような教育をしていかないと」。結局,コンピュータ科学の裏付けがある技術(オブジェクト指向開発など)を,実際に手を動かす大勢の開発者に普及させていくという地道な努力が欠かせない。
開発者教育が必要という観点からも,大勢の開発者層を抱え,最新の開発方法論の適用実績も多いJ2EEは,必然的な選択肢となってくる。
J2EEのインパクトは,開発者人口にある
長島氏は,1995年と早い段階に,オブジェクト指向開発に挑戦した経験を持つ。当時は,JavaもUML[用語解説] もまだない。オブジェクト指向開発方法論のBooch法[用語解説] と,C++プログラミング言語を使った。Booch法は,やがてRUP[用語解説] に統合されて,表記法はUMLになる。C++は,Javaにその地位を譲った。
当時と今での違いは何か。
「本質的な違いはありません」と長島氏は言う。「ただ,UMLとJavaが普及して,大勢の開発者をそろえられるようになったことと,Javaをサポートするミドルウエアを調達できるようになったことが違います」。開発者の人口が飛躍的に増え,ミドルウエア(特にアプリケーション・サーバー)もJ2EE対応が当たり前になってきたことで,技術的な本質は違わなくても,大規模なプロジェクトが可能になってきたのだ。
ツールの進化で,開発工程が変わる
そして,もう1つの大きな変化は,ツールの進化である。
オブジェクト指向開発での開発工程は,分析,設計,実装設計,プログラミング,と続く。いずれの工程も,必ず人間(開発者)が手を動かさなければ先に進めない。
だが,ここにきて,開発工程に影響するような変化が出てきた。開発ツールが進化して,開発工程の一部を肩代わりしてくれるようになってきたのだ。
最近の開発ツールは,「実装設計」と,それに伴う「プログラミング」のかなりの部分を自動化してくれる。クラス設計からコードを自動生成するツールや,デザイン・パターンの再利用,フレームワークの利用など,開発ツールがサポートする範囲は広がりつつある。つまり,設計工程に力を入れることで,その後の工程を,合理化できるようになってきた。
「設計と開発の工程の一部をツールが肩代わりしてくれることは,大きな進歩。大きなプロジェクトに対応可能になったことの背景には,こうしたこともある」と長島氏は話す。このような役割を果たすツールには,例えばUMLによるクラス図からJavaコードを生成する機能を備える「Rational XDE」(関連記事)がある。このようなツールの進化が進むと,MDA(モデル駆動アーキテクチャ)[用語解説] 採用のツールのように,「設計すると動く」ような高生産性ツールが登場してくることが予想される。
「急がば回れ」
設計に手間をかけることの重要性を,長島氏はこう説明する。「急がば回れ。最初にワークロードを使った方が,後で楽になる」。そして,現代の開発スタイルでは,設計と実装を結びつける部分の省力化がどんどん進んでいる。例えば開発ツールによるコード自動生成などだ。
大規模開発に,「王道」はない。だが,大勢の開発者をそろえることや,設計工程から実装工程へのつながりをより合理的に進めることができるツールの普及,そして大規模システムの構築に耐えるミドルウエアの整備が進んでいる。Java/J2EEを大規模システムに適用することは,冒険というより,必然となってきているのだ。