本日はAWESOME-COPILOTの技術調査枠です。
AWESOME-COPILOTのドキュメントを読みながら実際に操作を試して記事に残します。
今回はカスタムインストラクションの一つDesign Patterns for Object-Oriented Programming for Clean Codeについてです。
Design Patterns for Object-Oriented Programming for Clean Code
Design Patterns for Object-Oriented Programming for Clean Codeはオブジェクト指向(OOP)の設計パターンを正しく使うためのベストプラクティスです。
扱う内容はGoFデザインパターン(Factory / Singleton / Observerなど)、SOLID原則、オブジェクト指向設計です。
以下のページからDesign Patterns for Object-Oriented Programming for Clean Codeのインストールボタンをクリックして取得します。
github.com
インストールボタンを押してDesign Patterns for Object-Oriented Programming for Clean Codeダウンロードします。
すると.github/instructions配下にインストラクションがインストールされます。

インストールしたインストラクションはCopilotの動作に自動的に適用されます。
このインストラクションを読み込むと、Copilotはただコードを書くのではなく状況に応じて適切なデザインパターンを選択して提案するようになります。
具体的にはCopilotは以下のような行動をとります。
デザインパターンを自動的に適用する
Copilotは以下のように問題に応じて適切なパターンを選択します。
| 問題 | 提案されるパターン |
|---|---|
| オブジェクト生成 | Factory |
| 状態管理 | State |
| 通知 | Observer |
| 拡張性 | Strategy |
SOLID原則を前提に設計する
Copilotはコードを書く際に以下のSOLID原則を守るようになります。
- 単一責任(SRP)
- 開放閉鎖(OCP)
- 依存性逆転(DIP)
これにより設計の質が大きく上がります。
クラス設計の質が向上する
Copilotは1クラスに全て書くのではなく役割ごとに分割することを提案します。
例えば以下のような役割分割を行います。
- Controller
- Service
- Repository
継承よりコンポジションを優先する
インストラクションの特徴としてCopilot はis-a(継承)よりhas-a(組み合わせ)を優先します。
これにより以下のメリットがあります。
- 柔軟性が高い
- テストしやすい
パターンの過剰使用を避ける
Copilotは無駄にパターンを適用せず、シンプルな解決を最優先に考えます。
必要なときだけパターンを利用します。
パターンの意図を説明する
Copilotはコードの提案だけでなく何故そのパターンを使うかも説明します。
例えば以下のような説明を行います。
Strategyを使う理由: - アルゴリズムを差し替え可能にするため
アンチパターンを避ける
Copilot は以下のアンチパターンを避ける提案を行います。
- 神クラス
- 過剰な継承
- 密結合
テストしやすい設計
デザインパターンを使うことで以下を自然に導入します。
- DI
- モック
- インターフェース