パターンの歴史

ほとんどのソフトウェア開発者は、1994 年に出版された本「デザイン パターン:再利用可能なオブジェクト指向ソフトウェアの要素」がパターンの誕生を表していると想定しています。いいえ。この用語は 1977 年に Christopher Alexander によって造られました。

重要な人物とその著書を含む私の歴史的な回り道を始めましょう。この回り道は決して完全ではありません。

パターンの歴史

クリストファー・アレクサンダー

パターンのアイデアはクリストファー・アレクサンダーにまでさかのぼります。彼は著書の中で「フォームの合成に関するメモ、都市は木ではない」、「タイムレスな建築方法」、「オレゴン実験」、などの造語を書いています。 「秩序の性質」、特に彼の著書「A Pattern Language:Town, Buildings, Construction」では、パターン、力、またはパターン言語などの用語が使用されています。クリストファー・アレクサンダーは、インテリアデザインだけでなく都市デザインにも焦点を当てた建築家でした。彼の主な関心事は、人々のニーズに合わせたアーキテクチャを作成することでした。彼は、バークレーの環境構造センターの同僚と共に、設計問題の 250 以上のパターンを開発しました。それぞれの問題は、問題、図を使った問題の議論、および解決策で構成されています。たぶん、これはおなじみの音だと思います。

Michaelmehaffy、CC BY-SA 4.0、ウィキメディア コモンズ経由

ウォード・カニンガムとケント・ベック

Ward Cunningham と Kent Beck は、Christoph Alexander のアイデアに触発され、彼のアイデアをソフトウェア開発に適用しました。 1987 年に彼らは本「Using Pattern Languages for Object-Oriented Programs」を出版しました。これは、Smalltalk でのユーザー インターフェイスの開発を容易にするためのパターン言語です。彼らは、ユーザー インターフェイスを設計するための最初のパターン システムを確立しました。そのうちの 4 つを次に示します。

  • タスクごとのウィンドウ:タスクごとに個別のウィンドウ
  • 少数ペイン:タスクのビューごとにウィンドウ内に個別の領域を作成します
  • 標準ペイン:同じ原則に従って機能領域を設計します
  • 名詞と動詞:アクションの指示 (動詞) はメニューに属します

ご存じないかもしれませんが、Ward Cunningham と Kent Beck は、ソフトウェア開発において最も影響力のある 2 人です。

ウォード カニンガム:

ウィキメディア財団のキャリッグ写真 - 自作、CC BY-SA 3.0、https://commons.wikimedia.org/w/index.php?curid=17697618

  • ソフトウェア設計パターンのパイオニア
  • ウィキの作成者
  • Kent Beck と共に CRC カードを広めました。 CRC は Class Responsibility Collaboration (CRC) の略です

ケント・ベック:

それを改善する - Flickr:Kent Beck no Workshop Mapping XP., CC BY-SA 2.0, https://commons.wikimedia.org/w/index.php?curid=2938419

  • ソフトウェア設計パターンのパイオニア
  • Smalltalk の単体テスト フレームワーク sUnit を作成しました
  • Erich Gamma と共に Java 用の Junit 単体テスト フレームワークを開発
  • ウォード・カニンガムと共に CRC カードを普及
  • エクストリーム プログラミング (XP) の開発

ジェームズ コプリエン

James Coplien は、1991 年に「Advanced C++ Programming Styles and Idioms」という本を出版しました。彼の本は、次のような C++ イディオムのカタログです。

  • ハンドル/ボディ:インターフェースと実装の分離
  • エンベロープ/レター:インターフェイスと実装の共通のセマンティクスを結び付ける
  • 仮想コンストラクタ:既知の抽象型の階層を構築しますが、具体的な型は不明です
  • 具体的なデータ型:現在のスコープのヒープに作成するオブジェクトを決定します
  • 代数的階層:代数型に従う構造クラス
  • 非階層加算。他の型に昇格できない型間の算術演算を処理する
  • 型昇格:2 つの型変換メカニズムを構築して、一貫した型昇格構造を構築します

エーリッヒ ガンマ

Erich Gamma は、1991 年にチューリッヒでソフトウェア開発におけるパターンの使用に関する博士号を取得しました。 ET++ は、インタラクティブなグラフィカル アプリケーションを開発するための移植可能な C++ クラス ライブラリです。Gamma の論文は、共著の書籍「Design Patterns:Elements of Reusable Object-Oriented Software」の基礎となりました。他の 3 人の著者は、Richard Helm、Ralph Johnson、および John Vlissides です。 4 つすべてが一緒になって、有名なギャング オブ フォー (GoF) を構築します。

Erich Gamma は、Kent Beck と共に Java 用の Junit 単体テスト フレームワークを開発したことでも知られており、Eclipse フレームワークの開発でリーダーシップを発揮しました。

ヒルサイド グループ

1993 年、Grady Booch と Kent Beck は、オブジェクト指向シーンの主要人物数名をコロラド州の山小屋に招待しました。トピックの 1 つは、Christopher Alexander のアイデアと Erich Gamma によるデザイン パターンの基礎としての最近の研究との融合でした。 Hillside Group という名前が付けられた、ソフトウェア パターンに焦点を当てた非営利団体の設立。今日まで、このグループはパターン コミュニティで中心的な役割を果たしています。これにより、いわゆる PLoP (プログラミングのパターン言語) と呼ばれるトピックに関する多数の会議が開催されました。さらに、パターン、本、またはパターンに関する会議に関する詳細情報を検索するときは、ヒルサイド グループを最初に選択する必要があります。

デザイン パターン:再利用可能なオブジェクト指向ソフトウェアの要素

1994 年に、Erich Gamma、Richard Helm、Ralph Johnson、および John Vlissides は、影響力のある著書 "Design Patterns:Elements of Reusable Object-Oriented Software" を出版しました。 23 のオブジェクト指向パターンがあり、作成パターン、構造パターン、および動作パターンに分類されます。この本は、世界的なパターン採用の始まりを示しており、ソフトウェア設計に関する最も重要な本と見なされています。これまでに 500,000 部以上が販売されました。

パターン指向のソフトウェア アーキテクチャ、第 1 巻

Siemens AG の Frank Buschmann、Regine Meunier、Hans Rohnert、Peter Sommerlad、Michael Stal は、1996 年に「パターン指向のソフトウェア アーキテクチャ、第 1 巻」という本を出版しました。彼らの非常に影響力のある本は、大規模なアプリケーションを記述および文書化できるパターンのシステムへのパターンアプローチの進歩と進化を表しています。パターン指向ソフトウェア アーキテクチャ (POSA) は、17 のアーキテクチャ パターン、設計パターン、イディオムで構成されています。 1996 年から 2007 年に発行された POSA シリーズ全体は 5 巻です。

次は?

次回の投稿では、書籍「デザイン パターン:再利用可能なオブジェクト指向ソフトウェアの要素」と「パターン指向ソフトウェア アーキテクチャ、第 1 巻」でパターンのさまざまな分類を紹介します。

休暇

休暇のため、次の 2 週間は記事を公開しません。したがって、私の次の投稿は 2022 年 8 月 1 日に公開されます。