連載
» 2005年11月12日 12時00分 公開

オブジェクト指向を超えてThe Rational Edge(3/3 ページ)

[Gary Pollice(ワーチェスター工芸研究所業務学教授),@IT]
前のページへ 1|2|3       

◆ アスペクト指向方法論は次のキーアイテムか?

 われわれの業界では、すべてのものが進歩を続けており、遅かれ早かれソフトウェア開発方法論には新たな劇的転換があると予想される。教職者としては、それにどのように備えればよいのだろうか? OOの方法論を教えることから、次の方法論では絶対に同じ過ちを繰り返さないことをわれわれは十分学んだのだろうか?

 まず、次にどの方法論が来るのかについては、経験に基づく推測が必要だ。「クロスカッティング・コンサーン(横断的関心事)」などの名前で呼ばれるアスペクト指向方法論(AOP)が来るかもしれない、というのが筆者の直感だ。AOPはしばらく前からあるもので、複数の研究者がその概念を最初に生み出したと主張している。ここ2年の間に、AOPに関する複数の書籍が出版され、これをサポートするツールも登場している[注9]。


[注9] The Rational Edge 2004年2月号のAOPおよびテスティングに関する筆者のコラム(http://www-128.ibm.com/developerworks/rational/library/2782.html)参照。


 クロスカッティング・コンサーンに対応するインプリメンテーションは現在いくつかあり、どれが標準になるかは分からないが、この新しい方法論の教授方法は教職者がまだ模索しているはずだ。筆者は、いまのオブジェクト・ファースト・アプローチと似通ったアスペクト・ファースト・アプローチを開発する必要があると感じている。このようなアプローチがあった場合、5年後にどのような形でソフトウェア開発を学んでいるのか見てみよう。

 われわれは、約50年くらい前からソフトウェアを開発してきたが、発見できた基本原理は悲しいほど少ない。しかしわれわれは、開発方法論の基本的概念をオブジェクト指向の開発からいくつか学ぶことができた。われわれのような大学教授たちは初心者に対し、オブジェクトには状態、動作、そして主体性があると教えている。そして、これらの3つの特性を基にして、オープン・クローズド原則(OCP)やLiskovの置換原則(LSP)などの高度な概念を紹介していく。学生たちがクリーンなインターフェイスや、クリーンなコンポーネントの構築を可能にするアブストラクションをすぐにうまく開発できるようになるのにさほど時間はかからない。

 アスペクトのコミュニティが比較的大規模なシステムオブジェクト指向デザインを複雑にする犯人として名指ししたのがクロスカッティング・コンサーンだった。クロスカッティング・コンサーンの一例としては、金融アプリケーションにおけるトランザクションのロギングがある。システムの設計に着手する前に要件がすべてそろっていて、コードの中でトランザクションロギングの実行が必要な場所を特定できれば、クリーンなシステムを構築することができる。しかし、システムが進化すれば、コードの熟成と、クリーンなデザインの多少の破綻から、複雑化はほぼ避けられない。そこで、多くのモジュールに影響する複数のクロスカッティング・コンサーンを用意すれば、これらをインプリメントするオブジェクトに対し、適切なメッセージを適切なタイミングで送信することを覚えておかなくてはならなくなる。

 アスペクトは、ほとんど魔法のように適切なタイミングでコールされるモジュールタイプ(つまりアスペクト)にすることにより、システムのこのような問題のコントロールを支援する。現在、アスペクトの概念は、OO方法論を補完する形になっている。もしこれ以上何もないのであれば、教授法に対する新しいアプローチはおそらく必要ないだろう。現在のOOADのコースに単純にアスペクトの講義を追加すればよいだけだ。

 しかし、AOPにはOO方法論を補完する以上の役割がある。これは、問題に対する全く新しい考え方を提供してくれる。AOPで使う用語が標準化されていないため、いまのところそのポテンシャルを完全に理解するのは難しい。また、AOPの概念をインプリメントする共通メカニズムもない。しかし、このようなメカニズムは確実に登場するので、われわれは次世代のソフトウェアエンジニアたちに教えるための方法を探さなくてはならない。

 喜ばしいことに、Siobhan ClarkeとElisa Baniassadの共著による「Aspect-Oriented Analysis and Design」という新しい書籍が先日出版された[注10]。同書は、アスペクトを応用する際のエンジニアリングに関する問題を幅広く扱っている。このような書籍は方法論の採用加速に役立つし、アスペクト技術に関する書籍は、今後2年ほどの間にほかにも複数出てくる見込みだ。


[注10] The Rational Edgeの本号の書評参照。


 しかし、筆者には2010年までにAOPが開発方法論に選ばれるのを拒む要因が2つ考えられる。

 1つ目が、今日のAOPコミュニティに標準の用語や技術がないことだ。マーケットシェアの独占を巡り、複数のインプリメンテーションが競合している。AspectJ[注11]がリードしているよう思えるが、JBoss AOP[注12]インプリメンテーションも支持者が多い。HyperJ[注13]は、これら2つよりはるかに強力なように思えるが、同時にはるかに複雑でもある。これらのインプリメンテーションには、クロスカッティング・コンサーンの定義や取り組みでそれぞれ独自のアプローチがあり、1つの標準がないことは、AOP全体の採用にとって障害となる。しかし、UMLがオブジェクト指向システム記述用の異なるアプローチを統一する方法を提供してくれたように、統一されたアプローチができればこの問題は克服できると期待したい。


[注11] http://eclipse.org/aspectj/参照。
[注12] http://www.jboss.org/products/aop参照。


 2つ目が、学習用のAOPツールや、強力なアプリケーションを開発するためのツールが十分にないことだ。しかし、このような状況はすぐにも改善されると感じている。すでに複数のツールが存在しており、AspectJのEclipse用開発ツールは筆者のお気に入りだ。ここ2年の間、これらのツールはコンパイラ、デバッガ、そしてビジュアライゼーションの各機能から、アスペクトの作成とシステムへの影響を調べるのを容易にする統合環境へと進化している。さらに、ソフトウェア開発の全フェーズでアスペクトの利用をサポートする「Concern Manipulation Environment」と呼ばれるEclipse構想も進んでいる[注14]。従って、現状のツールの不在は、長期的にはAOP採用の妨げにはならないかもしれない。


[注14] http://www.eclipse.org/cme/参照。


 アスペクト最優先の教育方法は、言語サポート用のツールだけの問題ではない。学生をオブジェクトのようにアスペクトの世界に没頭させなくてはならない。要件から始まり、コンサーンを特定する方法や、クロスカッティングを決める方法を教える。そうしながら、学生にアスペクトの動作を定義させ、これらとオブジェクトを統合してシステムを形成できるようにさせるのだ。

 われわれのデザインやアーキテクチャは、今日のクラスやコンポーネントで使うのと同じレベルでアスペクトを説明している。テストケースを書いて、オブジェクトの動作とアスペクトの動作をテストする。アスペクト・ファースト・アプローチはオブジェクト指向アプローチを土台にしており、ソフトウェア開発を一歩進化させることになる。オブジェクトがソフトウェア開発手法に与えたのと同じレベルの影響をアスペクトが与えるかどうか筆者には疑問だが、これらは複雑性と低品質を撲滅するための戦いにおける新しいツールとなるだろう。アスペクトをうまく展開させるには、研究者にはアスペクトを使うために統一されたアプローチの開発、教師にはその原理とテクニックを啓蒙する効率的な解説方法の模索、そして現場の人間には新しいテクニックの十分な学習がそれぞれ必要になってくる。

 筆者は、2010年までには新しいソフトウェア開発者がこの市場に参入し、クロスカッティング・コンサーンに関連するソリューションを今日の開発者がオブジェクト指向ソリューションでしているのとほぼ同じように応用していると想像する。このような変化を予想することは、われわれの業界をエキサイティングなものにしている要素の1つであり、将来のソフトウェア専門家を教えることは非常に貴重なことだ。筆者は、学生とかかわる自分の仕事が次の大きな進化に貢献するかもしれないことを大きな誇りに思っている。


本記事は「The Rational Edge」に掲載された「Beyond an objects-first approach」をアットマーク・アイティが翻訳したものです。

「The Rational Edge」バックナンバー
前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ