ObjectSquare [1999 年 7 月号]

[Happy Squeaking!!]


5. デザインパターンとは

5.3  パターン分類とデザインパターンの位置づけ


パターンは、それが扱う問題のスケールや種類によっていくつかに分類することができます。

「ソフトウェアアーキテクチャ」(トッパン、ISBN 4-8101-9007-2)の中では以下のようにパターンが分類されています。

アーキテクチャパターンは、システム全体を支配するような大きな問題解決のために、特定のアーキテクチャの適用方法やトレードオフを説明したものです。ここでのアーキテクチャはマクロアーキテクチャのことを指し、この分類中では、もっともスケールの大きな問題を取り扱うことが意図されています。サブシステム間の巧みな構成、振る舞いといったものがメインテーマです。MVCなどがパターン例として示されています。

デザインパターンは、おそらく皆さんがもっとも聞いたことのある言葉でしょう。パターンの元祖とも言えるもので、主にミクロアーキテクチャ的な視点から、クラス間の関係や相互作用について示したものです。フレームワークの構築ブロックとして役立ちます。後に説明するObserverパターンなどが代表例となります。

最後が、イディオムと呼ばれるものです。これは、特定のオブジェクト指向で有効な実装のルールやスタイルをパターンとして扱ったものです。C++でメモリ管理の煩わしさを避けるために、リファレンスカウンタを使うなどといった例があります。

また、こうしたスケールによる分類の他、対象とする問題領域の種類や、記述のスタンスの違いによって、パターンが分割される場合も見られます。

例えば「プロセスパターン」といったものがあります。これはソフトウェア自体というよりは、マネージメント的な視点から、ソフトウェアの開発プロセスの有効なパターンを指摘しているものです。(スパイラル開発、プロトタイピングなどがパターンとして示されています)。
「CORBAデザインパターン」は分散オブジェクト技術を利用した場合に有効なパターンについて述べてあり、「アンチパターン」は適用するとまずいことになるパターンとそこからの脱出策を反面教師的に述べています。

このようにパターンをとりまく動きは、非常に活発化しており、現在多様化の傾向にあります。

しかし、「設計者」という観点からみた場合には、まず皆さんが最初に本腰をあげて学ぶべきなのは、やはりいわゆる「デザインパターン」です。

「デザインパターン」という言葉をオブジェクト指向の技術者に広く知らしめたのは、Erich Gamma, Richard Helm, Ralph Johnson, John Vilissides (通称Gang of Four-GoF)らによる"Design Patterns"です。(訳: 「デザインパターン」 ソフトバンク、ISBN 4-89052-797-4)。
この本がOO設計者の間で一種のベストセラーとなり、パターン運動を活性化するきっかけになったのです。出版は1995年ですが、現在でも、その実用性、有効性は変わりません。
この本ではミクロアーキテクチャレベルでの「デザインパターン」について紹介しています。「生成」、「構造」、「振る舞い」という分類で23のパターンが理路整然とカタログ化されています。
まずはこの本に書かれた「デザインパターン」についてまずしっかりと把握することが、優れたオブジェクト指向技術者への重要な通過点となります。

ただし、元来「デザインパターン」は、コーディングも含めた日々のシステム開発の努力の中、ボトムアップ的に築きあげられていったものです。そのため単に机上のものとしてパターンのカタログを鵜呑みにするだけではありがたみもわからず、有効に活用できない危険性も出てきます。プロジェクト経験を積みながら、現在直面している問題と照らし合わせて繰り返し参照し、自分のものにしていくようにしましょう。
また、パターンは「どこまで覚えれば終わり」といったものではなく、システム開発がある限り、次々新たなものが発見され研鑚されていく過程を経ることになります。上級者の方には自らパターンを抽出し、パターンコミュニティに一石を投じていくという姿勢も望まれます。


© 1999-2001 OGIS-RI Co., Ltd.

Prev.

Index

Next