「ソフトウエア部品(software components)」という言葉がたぶん世に初めて登場したのは,今からほぼ35年前の1968年10月。えらく昔の話である。場所はスキー・リゾートとして名高いドイツのガルミッシュ(Garmisch),提唱したのは当時米AT&Tのベル研究所にいたM.D.マキルロイ(McIlroy)氏だ。同氏は現在,米ダートマス大学で非常勤講師を務めている。

 NATO(北大西洋条約機構)サイエンス・コミッティはその1年前の1967年に,ソフトウエア開発に工学的な考え方を導入せよとする「ソフトウエア工学(software engineering)」を初めて提唱した。翌年にガルミッシュでNATOサイエンス・コミッティ主催で開催されたのは,このソフトウエア工学に関する初のカンファレンスだった。ソフトウエア工学とソフトウエア部品は,ほぼ同時期に生まれた概念なのである。

 「我々は明らかに時代遅れのテクニックを用いてソフトウエアを作成している」。こう主張したマキルロイ氏は,「Mass Produced Software Components」と題する講演で,工業における大量生産の手法をソフトウエア開発に導入することを提案した。それがソフト部品化というコンセプトである。

 ソフトウエアをあたかも「部品」のように扱える形でキープしておく。ソフト部品は自社で作成してもいいし,外部から調達してもよい。そして,適切なソフト部品を探し出し,場合によっては新たに部品を作り,それらの部品を“組み立てる”ことでアプリケーションを作成する――。

 このようなソフトの部品化およびソフト部品による再利用が本当に実現するようになれば,ソフト開発という属人的でかつ職人芸的な作業を“工業化”することができる。ソフトの開発生産性や保守性は劇的に上がり,いわゆるソフトウエア危機を回避できる。当時カンファレンスに参加したソフト研究者たちは,こんな期待を抱いたと思われる。

35年が経っても,普及には程遠い

 だが,それから35年が経過した現状はどうだろう。確かに,コンピュータおよびネットワークを取り巻く環境は激変した。並行して,ソフト部品化のためのさまざまな技術が登場した。SmalltalkやC++,Javaといったオブジェクト指向言語,さらにOpenDoc(アップルコンピュータ,IBM),IntelligentPad(北海道大学など),VBX(Visual Basicコントロール,マイクロソフト),OCX(のちのActiveXコントロール,同),DCOM(Distributed Component Object Model,同),CORBA(Common Object Request Broker Architecture,オブジェクト・マネジメント・グループ)などのいわゆるソフトウエア・コンポーネント化技術がその一例である。

 特にJavaおよびサーブレットやEJB(Enterprise JavaBeans)をはじめとするJavaのサーバー向けAPIである「J2EE(Java2 Platform, Enterprise Edition)」は,企業におけるソフト部品化/再利用を大きく推進するきっかけになると期待された。Java/J2EEの登場により,企業ユーザーが信用するに足るソフト部品化のためのデファクト・スタンダードがようやく確立されたとみなせるからだ。J2EEによるソフト部品の開発を支援するフレームワークや,EJB仕様にのっとって作成したソフト部品などを流通するためのマーケットプレースも登場した。

 しかし,ソフト部品化/再利用はいまだ普及には程遠い。ソフトの再利用だけなら,何らかの形でほぼすべての開発者が行っている。これは今も昔も変わらないし,オブジェクト指向技術の普及でよりやりやすくなっている。

 その一方で,ソフト部品の利用は今でも開発のごく一部にとどまっている場合がほとんどである()。「ソフト部品の市場が立ち上がる」,「ソフト開発は部品を作る人と組み立てる人に分かれる」などと,過去幾度となく喧伝(けんでん)されては消えていった“コンポーネントウエア”の世界が実現されたとは,お世辞にも言いがたい。ソフト開発の作業は,相変わらず開発者の個人技に頼る部分が多いのが現状だ。

注:Javaの場合なら,Java2 SDKのクラス・ライブラリに含まれるクラス群も広義のソフト部品と呼べるかもしれない。ここでは主にEJBコンポーネントのようにより多くの機能を持ち,独立性・汎用性が高く,流通可能なものをソフト部品と呼んでいる。

8つの壁が行く手を阻む

 どうしてソフト部品化/再利用の時代はいつまで経っても来ないのか。Java/J2EE,さらにマイクロソフトの .NETの登場で,純粋にソフト部品化に必要な技術だけをみると,まだ不備はあるにせよ,かなりいい線まで来ているはずだ。

 各方面で見たり聞いたりした結果をざっと挙げると,そのほかにソフト部品化/再利用を阻む主な要因は,以下の8つになる。順不同になる点をご容赦いただきたい。

(1)ソフト部品を作るのも使うのも手間がかかる

 「ソフトウェア再利用の神話」(ウィル・トレイツ著,ピアソン・エデュケーション)という本に,再利用に関する「3」の法則が出てくる。すなわち,「再利用可能なソフトを開発するには,3回は作り直す必要がある」,「再利用の恩恵にあずかるには,少なくとも3回は再利用する必要がある」というものだ。

 つまり,ソフト部品化/再利用を実現するには,結構な手間がかかるのである。その手間をかけてまで,あえてソフト部品化をする必要があるだろうか。上記の「ソフトウェア再利用の神話」には,「何かを再利用しようとするときには,30%以上の節約が期待できなければならない」とある。手間をかけてソフト部品を作っても,手間が3割以上減らないなら,そうする意味はないということになる。

(2)開発者がソフト部品を信用しない

 「自分が作ったほうが早いし信用できる。どこのだれが作ったものか分からないソフト部品など使えるか」。こんな意識の開発者は意外と多いのではないだろうか。

 開発者の信用を得るには,ソフト部品が十分な機能や信頼性を備え,性能などの問題がないのはもちろん,ある大手ベンダー部長は「ソフト部品に関する責任の所在を明らかにすることも大切だ」と話す。その責任の所在が不明確だと,企業の基幹システムのように止まったら一大事というシステムにソフト部品を使うのは躊躇(ちゅうちょ)するのが普通だろう。

(3)組織を整備していない

 ソフトの部品化/再利用は,個人ではなく組織的に取り組まないとうまくいかない。イーシー・ワンや豆蔵といったこの分野の先進企業は,組織的なソフト部品化/再利用への取り組みを支援するサービスや方法論の整備を進めている(関連記事)。

(4)背伸びしすぎ

 「オブジェクト指向技術を初めて本格的に採用した企業が,まず得られるメリットはシステムの拡張性。よく言われる再利用性というメリットは,オブジェクト指向にかなり熟練してからでないと得られない。ところが,そのことを自覚せずにオブジェクト指向を入れていきなり部品化/再利用を目指そうと背伸びするユーザー企業が意外と多い」(システム・インテグレータ幹部)

(5)過度に期待しすぎ

 「ソフトの部品化/再利用を“錬金術”みたいに考えている人がいる」と,あるシステム・インテグレータのCTO(最高技術責任者)は話す。このCTOが言いたいのは,EJBなどを使えば,どんな業種でも再利用可能なソフト部品が作れると思い込んでいる人がいるということだ。

 でも,たとえ同じ業種に属する企業同士でも,仕事のプロセスはまったく違うのが普通である。「プロセスが違うのに,そのプロセスを支援するソフトの機能が同じはずがない」と,このCTOは指摘する。同じ業種の中で共通に利用可能なソフト部品さえ,作るのは実は容易でない。

(6)「達人」が不在

 再利用可能なソフト部品を実現するには,対象となる業務分野(ドメイン)の分析,分析結果から汎用化できる部分を抽出する作業,さらにソフト部品化技術に関するノウハウが必要になる。これらの作業を確実にこなす「達人」がいないと,ソフトの部品化は難しい。

(7)再利用できるソフトがない

 これは「ニワトリが先か,卵が先か」の問題かもしれない。だが,自前でソフト部品を作っていくことはもとより,市場に再利用できるソフト部品がもっと出回るようでないと,ソフトの部品化/再利用を志向したいと考える企業は出てきにくい。

(8)そもそも部品化/再利用しようとする意欲に欠ける

 現状でも,こうした企業は数多いようだ。

 きっとほかにも要因はいろいろあると思う。ぜひご示唆いただきたい。

それでも“夢”を見たくなる

 実際には,ソフト部品化/再利用ができたところで,要件定義やシステム分析といった上流部分にメスを入れない限り,ソフト開発の作業は“工業化”できない。そもそも,ソフトウエアは工業製品や建築物のように,工学的手法が必ずしも当てはまらないのは,最近のアジャイル開発手法の提唱者をはじめ多くの人たちが指摘している。

 それでも,ソフト部品化/再利用をうまく実現すれば,多大な効果があるのは疑いの余地はない。現に,中部電力のように工数1万人月をかけて,自社内のシステムにおける再利用率を8割にしようと考えている企業もある。

 部品化/再利用の方法も,これからより多岐にわたっていくとみられる。ソフト再利用の方法は,ソフト部品の形をとる「合成型」だけでなく,フレームワークなどの形をとる「生成型」もより発展するだろう。Webサービスを企業システムの次世代アーキテクチャで全面採用する「SOA(Service Oriented Architecture,日経コンピュータ9月22日号を参照)」が普及すると,ソフト部品化/再利用の新たな展開が始まることも予想される。

 結局のところ,35年前にマキルロイ氏が思い描いたソフト部品の時代は,永遠に到来しないかもしれない。それでも,その実現に向けて一歩ずつ着実に前に進んでいることは確かである。個人的には,日本発のソフト部品が世界の企業で使用される,という事例がもっと登場することを期待している。ソフト分野で日本が最も世界に通用するのは,アプリケーションだと以前から言われているからだ。

(田中 淳=日経コンピュータ副編集長)