Part1 プロジェクト開始前夜

 「的場くん,弁当チェーンのA社は知ってるだろう? 明日のヒアリングに同席してくれないか」――ある昼下がりの午後。平田マネージャが的場さんの席まで来て声をかけました。

 的場さんは,都内の中堅ソフトハウスに勤めるソフトウエア・エンジニアです。Javaを中心とするWebアプリケーションの開発では,ここ数年,様々な経験を積んでいます。ちょうど前のプロジェクトの切れ目だったこともあり,的場さんは平田マネージャの話に耳を傾けました。

 「実は,A社の野崎システム部長から,新システム構築にあたって最近の技術動向,特にオブジェクト指向開発について話を聞かせてほしいと言われているんだ」

 「はあ」

 「で,だったら,わが社の開発のエースをお連れしますよ,ということで君に白羽の矢が立ったわけだよ」

 それを聞いて,的場さんの胸に不安が去来しました。平田マネージャは現場を離れて10年以上。管理職としては優秀ですが,オブジェクト指向を正しく理解しているようには思えません。まして自分はどうか。確かに開発経験は豊富ですし修羅場も体験しています。Javaの開発も小規模なものから最近のStrutsフレームワーク*1を使ったものまで,一通り経験しています。しかし,それは“現場の経験と知識”というもので,オブジェクト指向開発全般を講義できるほど把握しているかというと,あまり自信はありません*2。(大変なことになりそうだな…)的場さんの危惧は,翌日のA社訪問でいきなり現実のものとなりました。

 「最近のシステム開発はですねえ,Javaが中心の開発言語になっています。で,その背景にあるオブジェクト指向というものが,システム開発を大きく変えると期待されているんですよ」。

 A社訪問10分後,そう野崎部長に語る平田マネージャの口を,的場さんは両手でふさぎたい衝動にかられていました。

 「ほお,オブジェクト指向ですか。それはどういうものなんですか」

 「プログラムをいくつかの塊に分けて,その塊を組み合わせることでシステムを作り上げるアプローチです。塊は他のシステムでもそのまま再利用できるので,開発投資効率は間違いなく格段に良くなるんですよ」

 「なるほど。私も同じことを考えたことがあります。やはり,世の中そうなってきているわけですね」

 野崎部長は,平田マネージャの説明にすっかり納得し,我が意を得たりとばかりにうなずきました。

 「さすが,鋭い見識をお持ちです。やはり,これからは“最先端”のシステム開発ですね」

 ニコニコ笑う平田マネージャの横で,(オブジェクト指向が最先端って…最先端のシステムが,そんなに世の中にあふれているものなのか?) 的場さんはそうつぶやきました。ですが“大人の会話”に割り込めないちに商談は順調に進み,次回のアポイントメントが取られました。


トラブルの種1●オブジェクト指向を使っても再利用性が高くなるとは限らない
 平田マネージャの発言は要注意です。「他のシステムでもそのまま(前提なしに)再利用できる」「開発投資効率が(間違いなく)格段に良くなる」――このようなセールス・トークは誤解を招きます。オブジェクト指向開発なら“必ず”再利用性が高まるのではなく,オブジェクト指向技術を“上手に活用して”再利用性の高いシステムを作るのです。オブジェクト指向を使っても,ダメなシステムはダメです。このことを正確に顧客に伝えましょう。

プログラムの組めないモデラー

 A社のヒアリングの帰り,電車で的場さんは平田マネージャに注意を受けていました。

 「的場くん,頼むよ。お客様との打ち合わせのときには,もっと技術力をアピールしてくれないと」

 「はぁ…すみません」

 的場さんは,(確かに,今日のような場面で口をはさめないでいると,平田マネージャの言うのとは違う意味でこれから困る場面は増えるだろうなぁ)とかすかに頭痛を覚えます。ですが,気を取り直して,

 「ところで平田さん,今回の案件って,まずプロトタイプ*3の開発から始めるんですよね」と質問しました。

 「新システムをいきなり全部オブジェクト指向で開発するのはリスクが高いからな」

 「3人で3カ月の開発という話でしたけど」

 「ああ。3人のうち1人は君だ。で,もう1人はオブジェクト指向のプロを社外から呼んでくる*4。オブジェクト指向専門で10年以上の経験があるそうだ。もう1人は社内から,Javaの開発経験のある若手を入れて,全体のリーダーは君に頼むつもりだよ。プロジェクト・マネージャ(プロマネ)の経験を積んでほしいからな」

 (オブジェクト指向とプロマネと,一度に二つも新しいことをやるなんて無茶だなあ)とため息をつく一方で,社外から来る専門家に会うのは楽しみだな,と思う的場さんでした。

 “オブジェクト指向の専門家”が的場さんの会社を訪れたのは,ちょうどA社向けの提案書を書き上げた翌日のことでした。

 「はじめまして,町田です。ここ数年フリーでやっていますが,元は某社の研究所におりました。ずっとオブジェクト指向が専門で,最初はSmalltalk*5から入って,すぐに概念モデリング*6の面白さ,重要さに目覚めましてね,それで食べております」

 町田さんは四十がらみの細身の男性で,柔和そうに微笑むものの,眼鏡の奥の眼は笑っていないように的場さんには見えました。いかにも自信ありげな話しぶりは頼もしくも,少し怖い感じもします。

 「こちらがリーダーをやってもらう的場です。彼はウチのホープで,開発経験も豊富です。もう1人,こちらが辻本です。彼はまだ2年目ですが,入社以来ずっとJavaで開発をしてきてまして,実装の速さが評判なんですよ」

 平田マネージャの紹介で,的場さんと辻本くんの二人はお辞儀をしました。

 「よろしくお願いします。ところで,今回の開発は何回イテレーションしますか?」

 町田さんの唐突な発言に,3人は顔を見合わせました。

 「あ,イテレーションってあれですか,繰り返し型開発の…」

 かろうじて返答する的場さんにちらりと視線をやって,町田さんがうなずきます。

 「そう。繰り返し型開発。RUPをはじめ,オブジェクト指向では一般的に使われている手法です*7。今回はプロトタイピングということですし,オブジェクト指向開発の実用性検証という意味なら,ウォータフォール型*8で一気に作るよりも意味があると思いますよ。作る側としての技術的リスクもイテレーションの中で解消できますしね」

 的場さんが,繰り返し型開発は想定せずに提案書を書いていたと説明すると,町田さんはすかさず「よろしければ提案書の修正をお手伝いします」と答えました。平田マネージャは,よきにはからえと言わんばかりに鷹揚さを見せてうなずき,的場さんに目配せします。その視線は(プロマネは君なんだから,君が仕切りたまえ)と言っています。的場さんはあわてて「じゃあ,提案を変更して繰り返し型開発にしましょう」と答えました。

 「ありがとうございます」町田さんは当然のようにうなずくと「…そうそう,メインの概念モデリングですが,概念を正しく映すのが目的なので,基本的には実装を考慮しません」とあっさり言いました。

 「実装を考慮しない…?」

 「ええ。私はJavaでプログラミングしたことがないんです。だから,実装は的場さんと辻本さんにまるっきりお任せしてしまってよろしいですよね?」

 (おいおい大丈夫かよ…)キナ臭いものを感じつつ,的場さんは町田さんへ現在の提案書の説明を始めました。

トラブルの種2●なぜイテレーション型開発なのかを考えよう
 オブジェクト指向開発の普及により,分析/設計~実装を繰り返すイテレーション型開発も一般化してきています。実際,今回のような実験的なプロジェクトでは,繰り返し型開発は「リスクの低減」と「顧客の希望する検証」を同時に実現するいい方策です。
 ただし,町田さんが「イテレーション」を持ち出したのは,ウォータフォール型開発では概念モデリングで自分の仕事が終わってしまうからという側面もあります。イテレーションが本当に顧客のためになるのかどうか,開発者ならよく考える必要があります。