Skills: 高度なデザインパターン
最終更新:2026-08-31
デザインパターンはコードだけのものではない——同じ知恵がプロンプトエンジニアリングの Skill をより柔軟で堅牢にする。
1. ストラテジーパターン
(1) 概念
異なる条件に基づいて異なる実行戦略を選択:
TEXT
📖 参照専用
ストラテジーパターンの構造
┌──────────┐
│ コンテキスト │ → 条件を評価 → 戦略を選択
└────┬─────┘
├── 戦略 A(Python プロジェクト)
├── 戦略 B(TypeScript プロジェクト)
└── 戦略 C(Go プロジェクト)
(2) Skill での実装
MARKDOWN
## レビュー戦略の選択
プロジェクトの技術スタックに基づいて自動的に選択:
{{#if tech_stack == "python"}}
Python レビュー戦略を実行:
- type hints をチェック
- docstring をチェック
- PEP 8 準拠をチェック
{{/if}}
{{#if tech_stack == "typescript"}}
TypeScript レビュー戦略を実行:
- any 型をチェック
- インターフェース定義をチェック
- 型安全性をチェック
{{/if}}
(3) 適用シナリオ
| シナリオ | 戦略の次元 | 例 |
|---|---|---|
| マルチ言語プロジェクト | プログラミング言語 | Python/TS/Go レビュー |
| マルチ環境デプロイ | ターゲット環境 | staging/production 戦略 |
| マルチフレームワークプロジェクト | Web フレームワーク | React/Vue/Svelte 規約 |
2. チェーンオブレスポンシビリティパターン
(1) 概念
複数のハンドラが順番にリクエストを処理し、各ハンドラが次に渡すかどうかを決定:
TEXT
📖 参照専用
チェーンオブレスポンシビリティの例
入力 → フォーマットチェック → セキュリティチェック → 品質チェック → 出力
↓ 失敗 ↓ 失敗 ↓ 失敗
エラーを返す エラーを返す エラーを返す
(2) Skill での実装
MARKDOWN
## コードレビューのチェーンオブレスポンシビリティ
### ゲート1:フォーマットチェック
- ファイルエンコーディングは正しいか?
- コードスタイルは規約に従っているか?
- フォーマット失敗 → フォーマット問題を返し、続行しない
### ゲート2:セキュリティチェック
- SQL インジェクション、XSS の検出
- ハードコーディングされたキーの検出
- セキュリティ失敗 → セキュリティ問題を返し、続行しない
### ゲート3:品質チェック
- 関数の長さ、循環的複雑度
- 重複コードの検出
- 品質失敗 → 品質問題を返す
### すべて通過 → レビュー通過レポートを出力
(3) メリット
TEXT
📖 参照専用
チェーンオブレスポンシビリティのメリット
├── 早期終了:前段のチェックが失敗すれば即座に返し、後続のオーバーヘッドを節約
├── 関心の分離:各チェッカーは自分の観点だけに注目
├── 拡張性:新しいチェック観点は1つのリンクを追加するだけ
└── 設定可能性:特定のチェックリンクをスキップ可能
3. オブザーバーパターン
(1) 概念
イベント発生時にすべてのサブスクライバに自動通知:
TEXT
📖 参照専用
オブザーバーパターン
イベントソース:ファイル変更
├── オブザーバー A:テストを自動実行
├── オブザーバー B:コードレビューを自動実行
└── オブザーバー C:ドキュメントを自動更新
(2) Skill での実装
YAML
---
name: file-change-watcher
description: "ファイル変更が自動操作をトリガー"
triggers:
- context: "file_modified"
---
MARKDOWN
## 変更応答ルール
ファイル変更時に自動判定:
- src/**/*.py が変更 → Python テストをトリガー
- src/**/*.ts が変更 → TypeScript テストをトリガー
- docs/** が変更 → ドキュメント検証をトリガー
- .env* が変更 → 環境設定の確認をリマインド
4. テンプレートメソッドパターン
(1) 概念
アルゴリズムの骨格を定義し、サブステップをカスタマイズ可能に:
MARKDOWN
## レビューテンプレートメソッド
### 固定骨格
1. 変更を収集
2. ファイルごとレビュー(← カスタマイズ可能)
3. レポートを集約
4. 推奨を出力
### カスタマイズ可能ステップ(ステップ2)
言語/プロジェクトタイプごとにレビュー観点をカスタマイズ
(2) Skill 組み合わせでの実装
TEXT
📖 参照専用
テンプレートメソッド = ベース Skill + プラグイン可能サブ Skill
base-review.md(骨格)
├── 変更を収集
├── {{review_strategy}} Skill を呼び出し(プラグイン可能)
├── レポートを集約
└── 推奨を出力
python-review.md(具象戦略)→ review_strategy に差し込み
ts-review.md(具象戦略)→ review_strategy に差し込み
5. デコレーターパターン
(1) 概念
元のロジックを変更せずに Skill に追加機能を動的に付与:
TEXT
📖 参照専用
ベース Skill:code-review
├── + キャッシュデコレーター:レビュー結果をキャッシュ
├── + ロギングデコレーター:レビュー操作を記録
└── + 通知デコレーター:レビュー完了時にチームに通知
(2) Skill での実装
MARKDOWN
## 拡張レビュー Skill
ベースのレビューフローに加えて以下を追加:
1. レビュー前:リクエストとタイムスタンプをログ記録
2. レビュー後:結果をチームチャンネルに送信
3. キャッシュ:変更されていないファイルは以前の結果を再利用
❓ よくある質問
Q デザインパターンはプロンプトで役に立ちますか?
A はい。パターンの本質は特定の問題を解決する経験の蒸留です。パターン的思考でプロンプトのロジックを整理すると、出力がより予測可能で保守しやすくなります。
Q どのパターンを使うべきですか?
A 問題のタイプによります——複数戦略→ストラテジーパターン、パイプライン→チェーンオブレスポンシビリティ、イベント応答→オブザーバー、フロー骨格→テンプレートメソッド。
Q パターンで Skill が複雑になりすぎますか?
A 乱用するとそうなります。1つの Skill で最大1〜2パターンまで。シンプルな問題にはパターンは不要です。
📖 まとめ
- ストラテジーパターン:条件に応じて実行戦略を選択(マルチ言語/マルチ環境)
- チェーンオブレスポンシビリティ:複数ハンドラが順次処理、失敗時は早期終了
- オブザーバーパターン:イベントが自動通知と応答をトリガー
- テンプレートメソッドパターン:固定骨格+カスタマイズ可能サブステップ
- デコレーターパターン:元のロジックを変更せず動的強化
📝 練習問題
- 基礎問題(難易度⭐):ストラテジーパターンでレビュー Skill をリファクタリングし、2つのプログラミング言語のレビュー戦略をサポートしてください。
- 応用問題(難易度⭐⭐):チェーンオブレスポンシビリティパターンで3ゲートレビュー Skill(フォーマット→セキュリティ→品質)を設計してください。
- チャレンジ問題(難易度⭐⭐⭐):2つ以上のパターンを総合的に適用し、戦略選択、チェーンチェック、自動通知をサポートするスマートレビューシステムを設計してください。