design-patterns-expert について
design-patterns-expertは、Gang of Fourの全23種のデザインパターンを扱う知識スキルです。実用性とシンプルさを重視し、現時点の必要性がない複雑化を避ける指針を示します。
主な機能
- 01Gang of Fourの全23パターンを参照
- 02カテゴリ別にパターンを閲覧
- 03パターン選択の判断基準を確認
- 04実用的なコード例を参照
- 05アンチパターンと過剰設計を把握
活用シーン
- 01具体的な設計課題に合うパターンの選択
- 02パターンを使う必要性の判断
- 03実装例とよくある落とし穴の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ rysweet/ amplihack --skill design-patterns-expertインストール後、Claude Code で/design-patterns-expertを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdantipatterns.mdexamples.mdreference-patterns.mdexamples/01_quick_lookup.md02_implementation_guide.md03_pattern_recognition.md04_pattern_comparison.md05_philosophy_check.md06_deep_dive.md詳細
GoF(Gang of Four)デザインパターンのエキスパート
GoF の 23 種類すべてのデザインパターンについて、包括的かつ哲学に沿ったガイダンスを提供する、専門知識スキルです。
ナビゲーションガイド
このスキルでは、段階的開示を採用し、詳細な知識を補足ファイルで提供します。
reference-patterns.md - パターンの完全な仕様、判断フレームワーク、このスキルを効果的に活用する方法
examples.md - 実際のシナリオを使った、本番環境向けコード例 10 件
antipatterns.md - よくある間違いと、パターンを使うべきでない状況
まずは簡易リファレンスを確認し、より詳しい知識が必要な場合は補足ファイルをリクエストしてください。
役割と哲学
パターンを推奨するのではなく、パターンが役立つときと過剰設計になるときを把握した実践的なガイドとして、amplihack の徹底したシンプルさの哲学を保ちながら、デザインパターンに関する確かな知識を提供します。
シンプルさを最優先:まず、パターンが本当に必要かを必ず問い直してください。機能する中で最もシンプルな解決策が、最善の解決策です。
YAGNI:具体的な現在の必要性がないのに、「将来の柔軟性」のためにパターンを追加することには注意を促してください。
実際のユースケースが 2 つあること:現時点で実際のユースケースが少なくとも 2 つない限り、パターンを推奨しないでください。
パターンはコードに奉仕する:パターンはツールであり、目的地ではありません。パターンに合わせるためにコードを無理に曲げるべきではありません。
パターンカタログ
カテゴリ別に整理した、23 種類すべてのパターンの簡易リファレンスカタログです。
生成パターン(5)
柔軟性とコードの再利用性を高めるためのオブジェクト生成メカニズムです。
- Factory Method - オブジェクトを生成するためのインターフェースを定義し、どのクラスをインスタンス化するかはサブクラスに決定させます
- Abstract Factory - 具体的なクラスを指定せずに、関連するオブジェクトのファミリーを生成します
- Builder - 同じ構築プロセスで異なる表現を作成しながら、複雑なオブジェクトを段階的に構築します
- Prototype - インスタンスを新たに作成するのではなく、プロトタイプのインスタンスをコピーしてオブジェクトを生成します
- Singleton - グローバルなアクセスポイントを備えた、クラスのインスタンスを 1 つだけにします(過剰に使われることが多い)
構造パターン(7)
構造の柔軟性と効率性を保ちながら、オブジェクトをより大きな構造に組み合わせます。
- Adapter - クラスのインターフェースを、クライアントが期待する別のインターフェースに変換します
- Bridge - 抽象と実装を切り離し、それぞれを独立して変更できるようにします
- Composite - オブジェクトをツリー構造に組み合わせ、部分と全体の階層を表現します
- Decorator - オブジェクトに追加の責務を動的に付与します
- Facade - サブシステム内の複数のインターフェースに対して、統一されたインターフェースを提供します
- Flyweight - 多数のオブジェクト間で共通の状態を効率的に共有します
- Proxy - アクセスを制御するために、別のオブジェクトの代理またはプレースホルダーを提供します
振る舞いパターン(11)
アルゴリズム、およびオブジェクト間の責務の割り当てに関するパターンです。
- Chain of Responsibility - いずれかのハンドラーがリクエストを処理するまで、ハンドラーのチェーンに沿ってリクエストを渡します
- Command - リクエストをオブジェクトとしてカプセル化し、パラメーター化、キューイング、ログ記録、取り消しへの対応を可能にします
- Interpreter - 単純な言語の文法表現とインタープリターを定義します(必要になることはまれです)
- Iterator - 内部表現を公開せずに、集約オブジェクトの要素に順次アクセスします
- Mediator - オブジェクト群の相互作用をカプセル化し、疎結合を促進します
- Memento - オブジェクトの内部状態を取得して外部化し、後から復元できるようにします
- Observer - 状態が変化したとき、依存するすべてのオブジェクトに自動的に通知する 1 対多の依存関係を定義します
- State - 内部状態の変化に応じて、オブジェクトの振る舞いを変えられるようにします
- Strategy - アルゴリズムのファミリーを定義して個別にカプセル化し、相互に切り替えられるようにします
- Template Method - アルゴリズムの骨格を定義し、一部の手順をサブクラスに委ねます
- Visitor - 要素クラスを変更せずに、オブジェクト構造の要素に対する操作を表現します(複雑です)
外部リファレンス
このスキルは、以下の知見を統合しています。
- Gang of Four(1994)- 権威ある情報源
- Refactoring Guru、Source Making - 現代的な解説
- Game Programming Patterns、Python Patterns Guide - 実践的な実装
- Amplihack Philosophy - 徹底したシンプルさの視点
パターンの詳しい仕様と出典については、reference-patterns.md を参照してください。