gof-design-patterns について
gof-design-patternsは、複数のプログラミング言語でGoFデザインパターンを選び、実装するスキルです。生成・構造・振る舞いの各パターンを扱い、言語別ガイドやパターンの組み合わせに関する資料も含みます。
主な機能
- 01問題に応じたパターンの提案
- 0223種類のGoFパターン実装
- 038種類のプログラミング言語に対応
- 04実行可能なコードと例の提示
- 05トレードオフと代替案の説明
活用シーン
- 01開発上の課題に合うパターン選定
- 02指定言語でのパターン実装
- 03設計要件に合わせた複数パターンの併用
- 04類似パターンの適用場面の比較
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ markpitt/ claude-skills --skill gof-design-patternsインストール後、Claude Code で/gof-design-patternsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
resources/behavioral-patterns.mdcreational-patterns.mdlanguage-guide.mdpattern-selection-guide.mdpatterns-reference.mdstructural-patterns.md詳細
GoF デザインパターンのオーケストレーションスキル
GoF(Gang of Four)デザインパターンと、複数のプログラミング言語におけるその実装に精通しています。このスキルでは、最適なパターンの選択と、本番環境ですぐに使える実装を提供します。
クイックスタート
どのようなサポートが必要ですか?
- 「解決したい具体的な問題があります」 → 適切なパターンを特定するお手伝いをします
- 「言語 Y でパターン X を実装してください」 → 完全に動作する実装を作成します
- 「複数のパターンを組み合わせてください」 → パターンを連携させる方法を示します
- 「パターン X はどのような場合に使うべきですか?」 → 使用例と代替案を説明します
対応言語
C# • Rust • Python • Dart • Go • GenAIScript • TypeScript • C
パターンのカテゴリ
生成パターン(5)— オブジェクトの生成
オブジェクトの生成メカニズムを制御します | resources/creational-patterns.md を参照
- Singleton — グローバルにアクセスできる単一のインスタンスを保証します
- Factory Method — オブジェクトの生成をサブクラスに委ねます
- Abstract Factory — 関連するオブジェクトのファミリーを生成します
- Builder — 複雑な構築処理を表現から分離します
- Prototype — 既存のオブジェクトを複製して新しいオブジェクトを生成します
構造パターン(7)— オブジェクトの構成
クラスとオブジェクトを組み合わせて、より大きな構造を構成します | resources/structural-patterns.md を参照
- Adapter — 互換性のないインターフェースを連携させます
- Bridge — 抽象化と実装を分離します
- Composite — 個々のオブジェクトとその組み合わせを同じように扱います
- Decorator — サブクラス化せずに動作を動的に追加します
- Facade — 複雑なサブシステムに簡素化されたインターフェースを提供します
- Flyweight — 細粒度のオブジェクトを効率よく共有します
- Proxy — 別のオブジェクトへのアクセスを制御します
振る舞いパターン(11)— オブジェクト間の通信
オブジェクト間の通信と責務の割り当てを定義します | resources/behavioral-patterns.md を参照
- Chain of Responsibility — リクエストをハンドラーの連鎖に沿って渡します
- Command — リクエストをオブジェクトとしてカプセル化します
- Interpreter — 独自の言語で記述された文を解釈します
- Iterator — 構造を公開せずに、要素へ順番にアクセスします
- Mediator — 複雑なオブジェクト間のやり取りを一元化します
- Memento — オブジェクトの状態を保存し、復元します
- Observer — 状態の変化を複数のオブジェクトに通知します
- State — 内部状態に応じて振る舞いを変更できるようにします
- Strategy — 交換可能なアルゴリズムを使用します
- Template Method — サブクラス化によってアルゴリズムの各ステップを変更します
- Visitor — 要素クラスを変更せずに操作を追加します
オーケストレーションプロトコル
フェーズ 1:タスクの分析とパターンの選択
問題を説明していただいた場合、次のことを行います。
- 問題の要件を分析します
- 必要に応じて確認の質問をします
- 最も適切なパターンを提案します
- そのパターンが問題に適している理由を説明します
- 該当する場合は代替案を提案します
判断用リソースを読み込みます。
- パターンを素早く照合するには、
resources/pattern-selection-guide.mdを使用します - パターンの詳細な説明には、カテゴリ別のリソースファイルを使用します
フェーズ 2:実装
パターンを実装する際は、次の内容を提供します。
- パターンの概要 — 名前、カテゴリ、目的、使用するタイミングと理由
- 言語固有の実装 — コメント付きの、完全でコンパイル可能なコード
- 使用例 — パターンを説明する具体的なシナリオ
- トレードオフ — 長所、短所、代替案、パフォーマンスに関する考慮事項
- 言語に関する注意点 — 選択した言語のイディオムとベストプラクティス
- テストのガイダンス — 本番コードでパターンをテストする方法
フェーズ 3:検証と提供
回答する前に、次の点を確認します。
- ✅ 実装が完全で、正しく動作する
- ✅ 説明によって目的と使い方が明確になっている
- ✅ コードが言語のベストプラクティスに従っている
- ✅ トレードオフが明確に示されている
使用モード
モード 1:問題 → パターン(ブレインストーミング)
User: "I need to process payments through multiple providers"
Process:
1. Clarify: Do providers have different interfaces? Runtime switching?
2. Recommend: Strategy or Abstract Factory
3. Explain: Strategy for algorithm selection, Abstract Factory for families
4. Implement: Complete code for chosen pattern
モード 2:パターン → 実装(直接依頼)
User: "Create a Builder pattern in TypeScript for configuration objects"
Process:
1. Implement: Complete TypeScript Builder with fluent interface
2. Example: Show configuration construction
3. Explain: How it works and why for this use case
4. Alternatives: When to use Factory, Singleton instead
モード 3:パターンの組み合わせ(上級)
User: "Show Factory + Strategy pattern in Rust"
Process:
1. Implement: Both patterns showing interaction
2. Example: Factory creates strategy instances
3. Benefits: When/why to combine these patterns
4. Variations: Other useful combinations
モード 4:パターンリファレンス(学習)
User: "When should I use Strategy vs. State?"
Process:
1. Comparison: Key differences and similarities
2. Strategy: Client chooses algorithm (independent)
3. State: State transitions automatically (related)
4. Examples: Domain-specific examples for each
パターン選択クイックリファレンス
| ニーズ | パターン | リソース |
|---|---|---|
| 1 つのインスタンス | Singleton | creational-patterns.md |
| 実行時に異なる型を扱う | Factory Method | creational-patterns.md |
| 関連するオブジェクトファミリー | Abstract Factory | creational-patterns.md |
| 複雑な構築 | Builder | creational-patterns.md |
| 生成コストの高いオブジェクトの複製 | Prototype | creational-patterns.md |
| 互換性のないインターフェース | Adapter | structural-patterns.md |
| 抽象と実装の分離 | Bridge | structural-patterns.md |
| 部分と全体の階層構造 | Composite | structural-patterns.md |
| 動的な振る舞いの追加 | Decorator | structural-patterns.md |
| 複雑なサブシステムの簡素化 | Facade | structural-patterns.md |
| 多数のオブジェクトの共有 | Flyweight | structural-patterns.md |
| アクセス制御 | Proxy | structural-patterns.md |
| ハンドラーの連鎖 | Chain of Responsibility | behavioral-patterns.md |
| アクションのカプセル化 | Command | behavioral-patterns.md |
| カスタム言語の解析 | Interpreter | behavioral-patterns.md |
| コレクションへの統一的なアクセス | Iterator | behavioral-patterns.md |
| インタラクションの一元化 | Mediator | behavioral-patterns.md |
| 状態の保存/復元 | Memento | behavioral-patterns.md |
| 変更時の通知 | Observer | behavioral-patterns.md |
| 状態によって変化する振る舞い | State | behavioral-patterns.md |
| アルゴリズムの切り替え | Strategy | behavioral-patterns.md |
| アルゴリズムのステップを変更 | Template Method | behavioral-patterns.md |
| 構造への操作の追加 | Visitor | behavioral-patterns.md |
→ 決定木と詳細な選択ロジックについては、resources/pattern-selection-guide.md を参照してください
実装規約
各実装には次の項目が含まれます。
- ✅ 完全で、コンパイル/実行可能なコード
- ✅ 適切な関心の分離
- ✅ 包括的なコードコメント
- ✅ 具体的な使用例
- ✅ 使用する場面と理由の説明
- ✅ 言語固有のベストプラクティス
- ✅ エラー処理
- ✅ 型安全性(静的型付け言語)
言語別の実装方針
各言語の詳細なガイダンスについては、resources/language-guide.md を参照してください。
Rust:インターフェースにはトレイト、所有権システム、共有状態には Arc/Mutex、型安全なパターンには列挙型を使用します。
Python:インターフェースには ABC、ダックタイピング、デコレーター、Singleton にはメタクラス、型ヒントを使用します。
C#:インターフェース、抽象クラス、ジェネリクス、プロパティ、イベント、async/await、LINQ を使用します。
TypeScript:インターフェース、ユニオン型、ジェネリクス、デコレーター、判別共用体を使用します。
Go:暗黙的なインターフェース、構造体の埋め込み、関数型、チャネル、同期プリミティブを使用します。
Dart:抽象クラス、ミックスイン、ファクトリーコンストラクター、ストリーム、シールドクラスを使用します。
GenAIScript:JavaScript/TypeScript のパターン、クロージャー、非同期処理、関数型アプローチを使用します。
C:関数ポインター、構造体、不透明ポインター、静的変数、手動のメモリ管理を使用します。
よく使われるパターンの組み合わせ
- Factory Method + Strategy:ファクトリーが適切なストラテジーを生成します
- Abstract Factory + Singleton:Singleton のファクトリーインスタンス
- Composite + Iterator:ツリー構造を統一的に走査します
- Composite + Visitor:ツリー要素に対して操作を実行します
- Command + Memento:取り消し/やり直し機能
- Observer + Mediator:イベント調整の一元化
- Decorator + Factory:ファクトリーがデコレーターで装飾されたオブジェクトを生成します
- Template Method + Strategy:テンプレートが構造を定義し、ストラテジーが振る舞いを変化させます
- Bridge + Strategy:アルゴリズムの変化に対応しながら、抽象と実装を分離します
組み合わせの詳細な例については、resources/pattern-selection-guide.md を参照してください。
すばやく選べる判断ツリー
→ パターン選択ロジックの詳細については、resources/pattern-selection-guide.md をご覧ください
解決したい問題がありますか? フェーズ 1(タスク分析)に進んでください
すでにパターンが決まっていますか? フェーズ 2(実装)に進んでください
パターンを選ぶ必要がありますか? pattern-selection-guide.md をご利用ください
言語固有の詳細が必要ですか? language-guide.md をご利用ください
リソース
| リソース | 目的 |
|---|---|
pattern-selection-guide.md | 判断ツリー、問題の分類、パターンの組み合わせ |
creational-patterns.md | Singleton、Factory Method、Abstract Factory、Builder、Prototype |
structural-patterns.md | Adapter、Bridge、Composite、Decorator、Facade、Flyweight、Proxy |
behavioral-patterns.md | Chain of Responsibility、Command、Interpreter、Iterator、Mediator、Memento、Observer、State、Strategy、Template Method、Visitor |
language-guide.md | 言語固有の実装、イディオム、ベストプラクティス |
patterns-reference.md | パターンの詳細な説明、UML、関連性 |
始める準備はできましたか? 次のどちらかを教えてください:
- 解決しようとしている問題
- 実装したいパターン