第1回 コンポーネント指向プログラミングの時代 OLE,OCX,そしてActiveXとマイクロソフトのソフトウェアコンポーネント戦略は,すさまじい勢いで開発環境を変えつつある.また,今話題の中心になっているSunのJavaにしてもベースとなる言語体系こそ違うが,コンポーネント化という点でみると違いはないといえる. ちまちまとプログラムを書くというソフトウェア開発はもはや過去のもので,最近のプログラム開発は目的の機能を実現するソフトウェア部品を探してインターフェースを取ることが主になってきている.オブジェクト指向プログラミングの目指すところはそこにあるのだから,当然の成り行きなのであろう. ここでは,コンポーネント化への動きはソフトウェア文化やビジネススタイルにどのような影響を与えるのかを考えてみたい. 部品を選ぶ目を養うことが大切になるマイクロソフトのコンポーネント戦略のかなめであるVisual Basic(VB)を使ってみると実感できるのだが,VBはプログラム言語というよりはコンポーネント合成システムに近いものだ. すなわち,VBのエッセンスは,Windows95上の雑多なコンポーネントを組み合わせることができるという点にある.Windows上のソフト資産は何でも組み込むという貪欲さは見上げたものだが,使うための情報の獲得に大変な労力とコストがかかるという問題が出てきている.コンポーネント戦争はドキュメント戦争でもある. 昔,プログラミングというのは,言語仕様という最小限の情報をマスターしさえすれば,あとは自分の努力でかなりのところまでシステム作りができたものである.つまりは,要求水準がそのやり方でできる程度のものだったということなのだが. プログラミングは,すでに用意されたプログラム部品から始まるというのがコンポーネントの考え方だが,実際のところはコンポーネントの機能や仕様を理解するということが大問題になっている. マイクロソフトが提供する最大のコンポーネントはOffice97そのものといっても言い過ぎではない.そのインターフェース仕様はというと,5冊組みで本の高さよりも厚みがある.オブジェクト指向のねらいはプログラム部品の内部を隠蔽して,内部構造を知らなくても定型的なインターフェースで使えるようにするものであった. たしかに,“Hello World”という文字列を印刷するというレベルではその目的を達成したようだが,現実はこのドキュメントの山との格闘なのである.OLEにしろOCXにしろ,それがコンポーネントとして提供される以上,中身は信じるしかない.これもちょっと恐いものがある.アマチュアプログラマはそれでもよいだろうが,それを組み合わせてお金をもらうプロは,その部品に対しても責任が出てくる.コンポーネントが悪いといわれれば確かにそうなのだが,それを選んだ側の見識も問われるのである. 料理人と同じで,素材を選ぶ目もプロの技量である.今のところ,実績という主観的な評価しかないのだが,いずれ自動検証や安全証明のような保証メカニズムが求められることになろう.Javaはその点で一歩先んじているのだが,Javaそのものの評価がこれからという段階であるところが問題である. アプリケーションを売るか 部品を売るかこれはVBでOLEオートメーションを使ってみて思ったことだが,OLEの仕組みは既存のアプリケーションそのものをコンポーネント化するわけだから,アプリケーションとして提供されている.つまり,実際に使えている機能を自分のアプリケーションに取り込めるということになる. 独立したアプリケーションがそのままサンプルになっていると考えるとわかりやすい.ビジネスをする立場で考えると,コンポーネントとしてOCXやActiveXのモジュールを売るよりは,アプリケーションシステムとして売っておいて,それをコンポーネントとしても使えるという風になっているほうがおいしいビジネスになるのである. 独立したアプリケーションでも存在する,というアイデンティティを保ったうえで他のシステムのコンポーネントとして浸透するのである. Officeは,まさにそのパターンになっている. 必ずしもWindowsがあるところOfficeありというわけではないが,他のアプリケーションがOfficeをコンポーネントとして使い始めると,逆にOfficeが入っていないWindowsが異常なものとなってくる.すなわち,Officeが実質的にWindowsのOS機能の一部になってしまうのである. それでも,クライアント側でOfficeを別に買わなければならないし,デベロッパ側では高価なドキュメントを買わなければならない.最終消費者も開発会社も,コンポーネント供給側にお金を払うしくみができあがるのである. 今のところ,Windows上のコンポーネントに関するかぎり,文化を作ったのも利益を上げるのもマイクロソフトだけなのだろう.それを先行者利益として認めるのが,ビジネスの世界である. そして,次の戦略は二つ考えられる.一つは,マイクロソフトの開墾した畑のうえで自分の作物を育てる,つまりOCXやOLEの枠組みの中でコンポーネントビジネスを展開するということ,もう一つは別な枠組みを作って自分が先行者利益を確保することである.Javaは後者の戦略の代表である.リスクも大きいが,当たればその配当はもっと大きいといえるのだが. 山本 強・北海道大学 |
Copyright(C) Tsuyoshi Yamamoto