[{"data":1,"prerenderedAt":91},["ShallowReactive",2],{"timeline-meta-design-patterns":3,"timeline-design-patterns":70},{"id":4,"title":5,"description":6,"events":7,"extension":62,"legend":63,"meta":67,"stem":68,"__hash__":69},"timelines\u002Ftimelines\u002Fdesign-patterns.yml","デザインパターンの歴史","建築家クリストファー・アレグザンダーの「パターン・ランゲージ」から、GoF の『デザインパターン』、そしてアーキテクチャやドメイン設計のパターンへ。ソフトウェアの設計知識が「名前の付いた解決策」として共有されるようになった流れをたどる。",[8,12,16,20,26,29,33,37,41,45,49,53,57],{"date":9,"title":10,"description":11},"1977","アレグザンダー『パタン・ランゲージ』","建築家クリストファー・アレグザンダーらが、町や建物の設計で繰り返し現れる問題と解決策を253のパターンとしてまとめた。「問題・状況・解決策」に名前を付けて共有するという考え方が、のちにソフトウェアへ持ち込まれる。",{"date":13,"title":14,"description":15},"1979","アレグザンダー『時を超えた建設の道』","パターン・ランゲージの背後にある思想を論じた。良い設計には言葉にしにくい「名づけ得ぬ質」があり、パターンはそれを生み出すための手段であるとした。",{"date":17,"title":18,"description":19},"1987","ベックとカニンガム、パターンをプログラムに応用","ケント・ベックとウォード・カニンガムが、OOPSLA '87 のワークショップで、アレグザンダーのパターン・ランゲージをオブジェクト指向プログラムの設計に使う試みを発表した。",{"date":21,"title":22,"description":23,"tags":24},"1994","GoF『デザインパターン』出版","ガンマ、ヘルム、ジョンソン、ブリシディースの4人（Gang of Four）が、オブジェクト指向設計の23パターンを生成・構造・振る舞いの3分類で体系化した。「実装ではなくインターフェースに対してプログラムせよ」「継承よりコンポジションを優先せよ」という原則も示した。",[25],"gof",{"date":21,"title":27,"description":28},"第1回 PLoP（Pattern Languages of Programs）開催","パターンを書き、互いに批評し合うための会議が始まった。著者同士が原稿を読み合う「ライターズ・ワークショップ」の形式が定着する。",{"date":30,"title":31,"description":32},"1996","POSA『パターン指向ソフトウェアアーキテクチャ』","ブッシュマンらが、Layers、Pipes and Filters、Broker、Model-View-Controller などのアーキテクチャパターンをまとめた。クラスの設計より大きな単位でパターンを扱う流れが生まれる。",{"date":30,"title":34,"description":35,"tags":36},"ノーヴィグ「動的言語におけるデザインパターン」","ピーター・ノーヴィグが講演で、GoF の23パターンのうち16は、第一級関数やマクロを持つ言語では不要になるか、ずっと簡単に書けると指摘した。パターンの多くが言語の機能不足を補うものだという見方を広めた。",[25],{"date":38,"title":39,"description":40},"1998","『アンチパターン』出版","ブラウンらが、うまくいかない解決策が繰り返される様子を「アンチパターン」として整理した。何をすべきでないかにも名前を付けて共有する考え方が広まる。",{"date":42,"title":43,"description":44},"1999","ファウラー『リファクタリング』","外から見た振る舞いを変えずにコードの構造を改善する手法を、名前の付いた手順の集まりとしてまとめた。既存のコードを少しずつパターンへ近づける道筋が示された。",{"date":46,"title":47,"description":48},"2002","ファウラー『エンタープライズアプリケーションアーキテクチャパターン』","Repository、Unit of Work、Active Record、Data Mapper など、業務システムでデータベースや層構造を扱うためのパターンをまとめた。",{"date":50,"title":51,"description":52},"2003","エヴァンス『ドメイン駆動設計』と『エンタープライズ統合パターン』","エヴァンスは Entity、Value Object、Aggregate、Repository などで業務の知識をモデルに表す方法を、ホーペとウルフはメッセージングによるシステム連携の65のパターンを示した。",{"date":54,"title":55,"description":56},"2004-01","ファウラー「依存性の注入（Dependency Injection）」","制御の反転（IoC）コンテナの考え方を整理し、「依存性の注入」という名前を広めた記事を公開した。Singleton に頼らずに部品を組み立てる方法として定着する。",{"date":58,"title":59,"description":60,"tags":61},"2004","『Head First デザインパターン』","図や会話を多用した入門書として、GoF のパターンを多くの開発者に広めた。",[25],"yml",[64],{"key":25,"label":65,"color":66},"GoF の23パターン関連","#7048c2",{},"timelines\u002Fdesign-patterns","LbqPuNQZ97gWpj3ernpYRvFRYDrpaRLDGFwuriQTe6A",{"id":4,"title":5,"description":6,"events":71,"extension":62,"legend":88,"meta":90,"stem":68,"__hash__":69},[72,73,74,75,77,78,79,81,82,83,84,85,86],{"date":9,"title":10,"description":11},{"date":13,"title":14,"description":15},{"date":17,"title":18,"description":19},{"date":21,"title":22,"description":23,"tags":76},[25],{"date":21,"title":27,"description":28},{"date":30,"title":31,"description":32},{"date":30,"title":34,"description":35,"tags":80},[25],{"date":38,"title":39,"description":40},{"date":42,"title":43,"description":44},{"date":46,"title":47,"description":48},{"date":50,"title":51,"description":52},{"date":54,"title":55,"description":56},{"date":58,"title":59,"description":60,"tags":87},[25],[89],{"key":25,"label":65,"color":66},{},1794635676334]