複雑さの抽象化がソフトウェア開発の進化、Tech・Ed 2004で萩原氏

Tech・Edの国内開催10周年に相応しい、MSのテクノロジーを振り返るセッションが7日に開かれた。オブジェクト技術について萩原氏は「生産性ばかりに注力すると抽象化のため本質が見えなくなる」と現在のソフトウェアテクノロジーについて注意点を挙げた。

» 2004年09月07日 20時55分 公開
[ITmedia]

 国内開催10周年となった「Microsoft Tech・Ed 2004 Yokohama」が、パシフィコ横浜で開幕初日を迎えた。今回、10周年を機に組まれた特別プログラムとして初日には、これまでの同社のテクノロジーを振り返る講演が幾つも用意された。「コンポーネント技術」「データアクセス」「ユーザーインタフェース」などだ。

 「マイクロソフトのコンポーネント技術はどう変わってきたのか?」と題された講演では、マイクロソフト、デベロッパーマーケティング部 Software Architectの萩原正義氏が壇上に上がり、同社のコンポーネント技術を振り返り、ソフトウェアアーキテクチャの移り変わりについてを語った。

多面見解で丁寧な語り口の萩原氏

フレームワーク実装の歴史

 萩原氏は、ソフトウェアの歴史を振り返り、現在に至るまでの代表的なポイントを示した。まず最初に初期の「クラスライブラリ」を挙げ、MFC、ATLなどを用いたプログラミングモデルの世代だと説き始めた。

 なぜライブラリが必要なのか? という点について萩原氏は、「再利用が根本にあり、APIを直接叩いて記述するのではなく、規制が加わることで生産性向上へとつながるから」と原点について言及する。クラスライブラリは、必要な機能をコールするものであり、ソフトウェアの単純化を目的に煩雑な作業を軽減させていくことにある、と語る。

 続くポイントとして「カスタムホストとコンポーネントカスタムインタフェース」が挙げられた。基本的にはコンポーネントを動かすための環境提供であり、上に乗るものはホストを利用できるためプラットフォームとして使えることが特徴だという。DLL、EXE、NT Serviceコンテナの実行形式としてWin32モデルが示された。

 さらなる進化系のポイントとしては「IoCコンテナ」(Inversion of Controlコンテナ:制御反転)を挙げた。IoCコンテナは、アスペクトの実現技術として関連があり、DIコンテナとしても知られる。ホスト非依存であることが特徴でもあり、ホストに組み込むのではなくサービスモデルが上層に位置するもの。

 また、「コンテナ側がコンポーネントを持つことで呼び出す手間がなくなる」と萩原氏。コード自体の注入に意味があるとも語った。特徴としてはフレームワーク自体がホストに非依存であることも挙げ、これによる.NETやJavaなどを問わない非依存性を強調した。

関心の分類

 萩原氏は、「関心の分類」というキーワードも挙げた。システムを見つめる観点の設計手法を示すものであり、自らが描く関心事をどのように位置づけるかが重要とのことだ。システムスコープでは、サブシステム、ドメイン、ユースケース、クラス、インタフェースなどのモデルにより、関心の分類を行うという。

 エンドユーザーにおける関心としてOutlookを例に挙げれば、「スケジューラ」や「タスクリスト」などと、アプリケーション機能そのものが観点となる。一方、開発者寄りの分類としてIEの例であれば、Active Xコントロールやコンテナ、スクリプティングホストなどと要件表現が異なると言及し、更なる具体例で示した。

 例として、アルコール商品の販売ソフト実装の場合、年齢、商品、顧客などユースケースにおける要件表現と、ソフトウェア上でクラス表現を行う場合には、それぞれをまたぐ必要性が出てくるため、オブジェクト化がそのまま当てはめられないケースを挙げる。このため効率化のさらなる技術が必要となる。オブジェクト化だけでは解決できない補助的な役割として、昨今「アスペクト指向」が注目されているという背景だ。

仮想化に潜む問題点

 「Web上のやり取りが前提となれば、分散特有の問題もソフトウェア上で見過ごすことができない」と萩原氏。そして、ネットワーク上の位置透過性という理想ばかりを追い求めるべきではなく、実現できないものと割り切ることで打開策が見い出されているという。

 「SOAは、環境による分散の違いを明示的に扱うもの」と萩原氏。ローカル上の呼び出しと、リモート上の呼び出しは違いがあって当然であり、プログラミングモデルで明示的に分ける必要がある。このため、ここ数年はネットワーク上で位置の透過性は重要視されなくなってきていると語った。

 また、仮想化を追求するとレイヤー構造が深くなる問題点も指摘した。レイヤーにより内部が見えづらくなるが、問題が解決したわけではないことを忘れてはならない。「フレームワークや分散が進むと本質的な物を追求しづらくなる。生産性追求だけではエラー追求が困難」と萩原氏。

ソフトウェアテクノロジーの発展は抽象化の歴史

 クラス、インタフェース、サービス、プロセスなどの概念は、すべて抽象化によって問題となる複雑さが隠されているだけという点を忘れてはならない。これからも抽象化は進んでいく、とこれからの展望についても触れた。

 アスペクト指向、モデルドリブンアーキテクチャ、SOA、ユニファイドプロセスなどは、十分に抽象度が増してきている。しかし、これらの最新のキーワードに振り回されないためには、問題(複雑さ)を隠蔽することで管理しやすくしているという点に注目しなければならないという。「問題の本質が解決しているわけではない、複雑さを再定義しているだけ」と萩原氏。このため、内部の問題が表面してきた際、いかに解決できるかどうかが見せ所だという。

 萩原氏は講演の最後に、昔のテクノロジーを振り返り「WinDNAを覚えてますか? Strage+は実は、WinFSに生まれ変わっているのですよ」と、幾つかの興味深い関連性を語った。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ