Claude Code勢が今更プロンプトエンジニアリングを学んでいる話(Copilot君のため)

はじめに
自分はプロンプトを頑張りたくない派です。
AIに指示を出すために文章を考えるの面倒くさい。そういうの嫌だからAI使っているのに本末転倒感が半端ない。一方でプロンプトを頑張れる人は、几帳面で仕事ができる人と思う
自分はClaude Codeを仕事で9ヶ月くらい使っていて、チャットアプリをあまり使っていない。なのでプロンプトを頑張る文化がなく育ち、指示は雑な一行です。「さっきのやつ直して」とか。
CLAUDE.mdとかSkillとか「ハーネス」をちゃんとしておけばそれで通るので、プロンプトの書き方を頑張ったことがなかった。プロンプトエンジニアリングという分野があるのは知っていたけど、チャット型のAIしか使えない環境のためのものと思っていました。
だったのですが、、、とある事情で会社でM365 Copilotを使うことになりました。まあ最近はWorkIQ+GPT5.6SolでCopilotがめちゃくちゃ賢くなっているので、使いたくなってきた面もある。
M365 Copilotのプロンプトコーチを使ってもいいかも
M365 Copilotにデフォルトで着いてくるエージェントですね。Claude Codeのplan Mode的に使っています。
使うと精度が2割くらいは上がる気がするが、気がするだけ。 ※Copilot君エージェント的に主体的に動いてくれない傾向があるので、気合の問題です。
プロンプトの構成要素を調べる
まずMicrosoft公式のCopilot向けガイドを見てみます。
プロンプトは4つの要素でできている、と書かれています。
- Goal:何が欲しいのか
- Context:なぜ必要なのか、どう使うのか
- Expectations:構造、長さ、文体、読み手
- Source:どのファイル、どのメール、どの会議を見るのか
必須なのはGoalだけ。ただしGoalだけだと大抵うまくいかないらしい。
次にAnthropic公式のプロンプト技法も見ます。
明確に指示する、理由を添える、例を3〜5個見せる、XMLタグで構造化する、役割を与える、生成して自己レビューさせて直す、サブエージェントに委譲する。だいたいこのあたり。
後半は特に、Claude Codeの機能に含まれていますよね。逆にCopilotだと厳しいところでもある。「新しいチャットで開けはば実質サーブエージェントで動かしているようなもん」と自分も思ってしまうけど、半分正しく半分正しくないよね。サブエージェントにはメインエージェントからのコンテキストの委譲があるので、新しいエージェントを立ち上げて人が適切にコンテキストを渡さない限りは同じにならない(メインからのコンテキスト委譲が正しく行われているとは限らないけど)。
Claude Codeの機能と対応させる
並べてみます。
| プロンプトの要素 | Claude Codeでの置き場所 |
|---|---|
| Goal(依頼そのもの) | その場のチャット |
| Context(背景・なぜ) | CLAUDE.md、メモリー |
| Expectations(形式・制約) | CLAUDE.md、Skill内のテンプレ |
| Source(どの情報を見るか) | ファイル参照、@メンション、MCP、docs |
| 手順(順序のある指示) | Skill |
| 役割(ペルソナ) | サブエージェント |
| 例示(few-shot) | 既存コード、docs、メモリー |
| 構造化(XMLタグ) | ファイル分割とMarkdownの見出し |
| 生成→レビュー→修正 | Hook、テスト、レビュー用のSkill |
| 対応する要素がない | TODOリスト、ツールの実行結果 |
毎回書いているのはGoalだけです。それ以外は全部ファイルとして常設されている。
あと一番下の行、左が埋まりませんでした。TODOリストとかコマンドの実行結果は作業中に勝手に増えていくやつなので、依頼文の構成要素として書きようがない。
やはりClaudeCodeはここら辺をサボれる状態を作れ、かつ再利用性があるのでうれしいですよね。一回書いて置いておけば、以降は雑な一行で済む。
Copilotにはこの置き場所がない。毎回の入力欄が唯一の置き場所なので、4要素を都度詰め直すしかない。面倒臭すぎる(全体設定とかエージェントがいるのはわかっています)。
じゃあどこまで頑張れば頑張らなくてよくなるのか
嫌々やるにしても、やめどきは決めておきたい。整理するとやることは2つでした。
- 毎回使い回す部分(読み手、トーン、テンプレの制約)をプロンプト集として外に持つ。要するにCopilot用のCLAUDE.mdを自分で用意する
- 出てきたものを評価する基準を自分の側に持って、往復する。これはテストの代わり
1つ目さえ作り切れば、あとはGoalだけ書けばよくなるはずです。Claude Codeでやっていたことと同じ形に持っていける。 2つ目は残念ながら人力のままですが、こればかりは仕方ない。 Copilotにはカスタム設定があり、実質Claude.md的に動いてくれますが、チャットごとに分けられないのでClaudeで言うユーザスコープの指示しか書いて置けないですね。それも面倒だ
おわりに
Copilotよ、APIを提供してくれ、ClaudeCode的に使えるようになったらマジで神なんだよなあ。Copilot Studioとかは使いにくすぎるし、Microsoftの戦略ってどうなっているんですかね。
本文の内容に戻ると、プロンプトエンジニアリングを学んだというより、Claude Codeが自分の代わりに何を肩代わりしていたかを知った、という感想です。 CLAUDE.mdもSkillもサブエージェントも、全部プロンプトの構成要素をファイルに固定して二度と書かないで済ませる仕組みでした。
なので今やっているのは、プロンプトが好きになる修行ではなくて、Copilot側でも同じサボり方をするための準備です。目的はあくまで頑張らないこと。
ちなみに自分のCLAUDE.mdを見返したら、理由が書かれていないルールがかなりありました。 Anthropicのドキュメントには「指示には理由を添えたほうが性能が上がる」と明記されているっぽいです。
