mcpField
G
gof-design-patterns

gof-design-patterns

github.com/markpitt開発24138 回インストール36 週間前に更新
リポジトリ

gof-design-patterns について

gof-design-patternsは、複数のプログラミング言語でGoFデザインパターンを選び、実装するスキルです。生成・構造・振る舞いの各パターンを扱い、言語別ガイドやパターンの組み合わせに関する資料も含みます。

主な機能

  1. 01問題に応じたパターンの提案
  2. 0223種類のGoFパターン実装
  3. 038種類のプログラミング言語に対応
  4. 04実行可能なコードと例の提示
  5. 05トレードオフと代替案の説明

活用シーン

  1. 01開発上の課題に合うパターン選定
  2. 02指定言語でのパターン実装
  3. 03設計要件に合わせた複数パターンの併用
  4. 04類似パターンの適用場面の比較

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/markpitt/claude-skills --skill gof-design-patterns

インストール後、Claude Code で/gof-design-patternsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

resources/
behavioral-patterns.md
creational-patterns.md
language-guide.md
pattern-selection-guide.md
patterns-reference.md
structural-patterns.md

詳細

GoF デザインパターンのオーケストレーションスキル

GoF(Gang of Four)デザインパターンと、複数のプログラミング言語におけるその実装に精通しています。このスキルでは、最適なパターンの選択と、本番環境ですぐに使える実装を提供します。

クイックスタート

どのようなサポートが必要ですか?

  1. 「解決したい具体的な問題があります」 → 適切なパターンを特定するお手伝いをします
  2. 「言語 Y でパターン X を実装してください」 → 完全に動作する実装を作成します
  3. 「複数のパターンを組み合わせてください」 → パターンを連携させる方法を示します
  4. 「パターン X はどのような場合に使うべきですか?」 → 使用例と代替案を説明します

対応言語

C# • Rust • Python • Dart • Go • GenAIScript • TypeScript • C

パターンのカテゴリ

生成パターン(5)— オブジェクトの生成

オブジェクトの生成メカニズムを制御します | resources/creational-patterns.md を参照

  1. Singleton — グローバルにアクセスできる単一のインスタンスを保証します
  2. Factory Method — オブジェクトの生成をサブクラスに委ねます
  3. Abstract Factory — 関連するオブジェクトのファミリーを生成します
  4. Builder — 複雑な構築処理を表現から分離します
  5. Prototype — 既存のオブジェクトを複製して新しいオブジェクトを生成します
構造パターン(7)— オブジェクトの構成

クラスとオブジェクトを組み合わせて、より大きな構造を構成します | resources/structural-patterns.md を参照

  1. Adapter — 互換性のないインターフェースを連携させます
  2. Bridge — 抽象化と実装を分離します
  3. Composite — 個々のオブジェクトとその組み合わせを同じように扱います
  4. Decorator — サブクラス化せずに動作を動的に追加します
  5. Facade — 複雑なサブシステムに簡素化されたインターフェースを提供します
  6. Flyweight — 細粒度のオブジェクトを効率よく共有します
  7. Proxy — 別のオブジェクトへのアクセスを制御します
振る舞いパターン(11)— オブジェクト間の通信

オブジェクト間の通信と責務の割り当てを定義します | resources/behavioral-patterns.md を参照

  1. Chain of Responsibility — リクエストをハンドラーの連鎖に沿って渡します
  2. Command — リクエストをオブジェクトとしてカプセル化します
  3. Interpreter — 独自の言語で記述された文を解釈します
  4. Iterator — 構造を公開せずに、要素へ順番にアクセスします
  5. Mediator — 複雑なオブジェクト間のやり取りを一元化します
  6. Memento — オブジェクトの状態を保存し、復元します
  7. Observer — 状態の変化を複数のオブジェクトに通知します
  8. State — 内部状態に応じて振る舞いを変更できるようにします
  9. Strategy — 交換可能なアルゴリズムを使用します
  10. Template Method — サブクラス化によってアルゴリズムの各ステップを変更します
  11. Visitor — 要素クラスを変更せずに操作を追加します

オーケストレーションプロトコル

フェーズ 1:タスクの分析とパターンの選択

問題を説明していただいた場合、次のことを行います。

  1. 問題の要件を分析します
  2. 必要に応じて確認の質問をします
  3. 最も適切なパターンを提案します
  4. そのパターンが問題に適している理由を説明します
  5. 該当する場合は代替案を提案します

判断用リソースを読み込みます。

  • パターンを素早く照合するには、resources/pattern-selection-guide.md を使用します
  • パターンの詳細な説明には、カテゴリ別のリソースファイルを使用します
フェーズ 2:実装

パターンを実装する際は、次の内容を提供します。

  1. パターンの概要 — 名前、カテゴリ、目的、使用するタイミングと理由
  2. 言語固有の実装 — コメント付きの、完全でコンパイル可能なコード
  3. 使用例 — パターンを説明する具体的なシナリオ
  4. トレードオフ — 長所、短所、代替案、パフォーマンスに関する考慮事項
  5. 言語に関する注意点 — 選択した言語のイディオムとベストプラクティス
  6. テストのガイダンス — 本番コードでパターンをテストする方法
フェーズ 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 つのインスタンスSingletoncreational-patterns.md
実行時に異なる型を扱うFactory Methodcreational-patterns.md
関連するオブジェクトファミリーAbstract Factorycreational-patterns.md
複雑な構築Buildercreational-patterns.md
生成コストの高いオブジェクトの複製Prototypecreational-patterns.md
互換性のないインターフェースAdapterstructural-patterns.md
抽象と実装の分離Bridgestructural-patterns.md
部分と全体の階層構造Compositestructural-patterns.md
動的な振る舞いの追加Decoratorstructural-patterns.md
複雑なサブシステムの簡素化Facadestructural-patterns.md
多数のオブジェクトの共有Flyweightstructural-patterns.md
アクセス制御Proxystructural-patterns.md
ハンドラーの連鎖Chain of Responsibilitybehavioral-patterns.md
アクションのカプセル化Commandbehavioral-patterns.md
カスタム言語の解析Interpreterbehavioral-patterns.md
コレクションへの統一的なアクセスIteratorbehavioral-patterns.md
インタラクションの一元化Mediatorbehavioral-patterns.md
状態の保存/復元Mementobehavioral-patterns.md
変更時の通知Observerbehavioral-patterns.md
状態によって変化する振る舞いStatebehavioral-patterns.md
アルゴリズムの切り替えStrategybehavioral-patterns.md
アルゴリズムのステップを変更Template Methodbehavioral-patterns.md
構造への操作の追加Visitorbehavioral-patterns.md

→ 決定木と詳細な選択ロジックについては、resources/pattern-selection-guide.md を参照してください

実装規約

各実装には次の項目が含まれます。

  1. ✅ 完全で、コンパイル/実行可能なコード
  2. ✅ 適切な関心の分離
  3. ✅ 包括的なコードコメント
  4. ✅ 具体的な使用例
  5. ✅ 使用する場面と理由の説明
  6. ✅ 言語固有のベストプラクティス
  7. ✅ エラー処理
  8. ✅ 型安全性(静的型付け言語)

言語別の実装方針

各言語の詳細なガイダンスについては、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.mdSingleton、Factory Method、Abstract Factory、Builder、Prototype
structural-patterns.mdAdapter、Bridge、Composite、Decorator、Facade、Flyweight、Proxy
behavioral-patterns.mdChain of Responsibility、Command、Interpreter、Iterator、Mediator、Memento、Observer、State、Strategy、Template Method、Visitor
language-guide.md言語固有の実装、イディオム、ベストプラクティス
patterns-reference.mdパターンの詳細な説明、UML、関連性

始める準備はできましたか? 次のどちらかを教えてください:

  1. 解決しようとしている問題
  2. 実装したいパターン

コメント