Claude Codeとプロンプト・エンジニアリング
ChatGPTとともに広まった「プロンプト・エンジニアリング」は、Claude Codeを使っていると意識する場面が少ない。ただし、なくなったわけではない。CLAUDE.md・メモリ・作業ディレクトリのファイルという形で、Claude Codeが自動的にプロンプトを組み立てている。その仕組みを整理する。
目次
1. プロンプト・エンジニアリングとは
ChatGPTのようなチャット型のAIは、ユーザーが入力した文章(プロンプト)にAIが応答する形式である。この形式では、望む答えが得られるかどうかが、プロンプトの書き方に左右される。
そこで、次のような工夫が使われるようになった。これをプロンプト・エンジニアリングと呼ぶ。
- 曖昧な依頼ではなく、具体的に指示する
- 期待する出力の例を示す
- 「あなたは〇〇の専門家です」のように役割を与える
- タグや箇条書きで指示を構造化する
- 複雑な作業を複数のプロンプトに分け、順に指示する(プロンプトチェイニング)
いずれも、ユーザーが会話のたびに自分でプロンプトを書くことを前提としている。Anthropicの公式ドキュメントにも、この種の技法がまとめられている(Prompt engineering overview)。
2. Claude Codeで意識しにくい理由
Claude Codeを使っていると、プロンプトを工夫する場面があまりない。理由は次の3点である。
-
短い指示で作業が終わる
「このバグを直して」「テストを書いて」の一言で、ファイルの探索から修正、確認までを行う。 -
前置きを毎回書かなくてよい
プロジェクトのルールやコーディング規約を、会話のたびに説明し直さずに済む。 -
前回までの内容を踏まえて動く
以前に伝えた好みや注意点が、次のセッションでも反映される。
このため、Claude Codeはプロンプト・エンジニアリングとは別の仕組みで動いているように見える。実際には、プロンプトを書く場所が変わっている。
3. コンテキスト・エンジニアリング
Anthropicは、Claude Codeのようなエージェント型ツールの設計を「コンテキスト・エンジニアリング」と呼んでいる(Effective context engineering for AI agents)。プロンプト・エンジニアリングとの違いは次のとおり。
| プロンプト・エンジニアリング | コンテキスト・エンジニアリング | |
|---|---|---|
| 対象 | 1回の会話における指示文の書き方 | AIに渡す情報全体(指示・ファイル・履歴・ツールの状態など)の設計 |
| 組み立てる人 | ユーザーが会話のたびに書く | ツール(Claude Code)が自動的に組み立てる |
| 情報源 | ユーザーの入力 | システムプロンプト、設定ファイル、メモリ、作業環境のファイル、ツールの出力など |
| ユーザーの体験 | プロンプトを工夫する | 自然な指示だけで済む |
Claude Codeは、プロンプト・エンジニアリングをなくしたのではなく、ユーザーの目に見えない場所で行っている。ユーザーが書く短い指示は、内部で他の情報と組み合わされたうえでAIモデルへ渡される。
情報の集め方には2通りが併用されている。CLAUDE.mdのような変わらない情報は最初からコンテキストに読み込んでおき、それ以外のファイルはgrepやglobで必要なときに必要な分だけ読む(同記事)。
4. Claude Codeが組み立てる情報
ユーザーが1行の指示を入力したとき、内部では次の情報が組み合わされている。
システムプロンプト
役割・振る舞い・ツールの使い方を定めたものが、Claude Code自体に組み込まれている。ユーザーの設定で追加・上書きもできる(Modifying system prompts)。
CLAUDE.md
会話の開始時に毎回自動で読み込まれるファイル。ビルドコマンド、コードスタイル、作業ルールなど、コードを読むだけでは分からない情報を渡す(Best practices for Claude Code)。Anthropic社内では、CLAUDE.mdの文面をプロンプト改善ツールにかけたり、「IMPORTANT」「YOU MUST」といった強調を加えて指示の守られ方を調整したりしていると紹介されている。これはプロンプト・エンジニアリングそのものである。
メモリ
過去のセッションで得たユーザーの好みや注意点を保存し、次回以降のセッションで参照する仕組み。同じ指示を繰り返さずに済むのは、この情報が毎回組み込まれるためである。
作業ディレクトリのファイル
ソースコード、設定ファイル、ドキュメントは、必要に応じてその都度読み込まれる。長時間動くエージェントでは、進捗を記録したclaude-progress.txtやgitの履歴を状態管理に使う方法も紹介されている(Effective harnesses for long-running agents)。これも、ファイルという形にしたプロンプトの一部といえる。
ユーザーの入力
以上の情報の上に、いま入力した1行が加わる。
これらをまとめたものが、実際にAIモデルへ渡される内容である。ユーザーはその大部分を意識せずに済んでいる。
5. CLAUDE.mdの例
あるプロジェクトのルートに、次のような内容のCLAUDE.mdが置かれているとする。
- プロジェクトの概要(何を作っているシステムか)
- ディレクトリ構成と、それぞれの役割
- テストの実行方法やコーディング規約
- 「
git commit・git pushは明示的な依頼があった場合のみ実行する」というルール - 本番環境へのデプロイ手順と、その際の注意点(対象ファイルを絞り込むことなど)
ここでユーザーが「デプロイして」と入力する場合を考える。CLAUDE.mdがなければ、ユーザーは毎回、次のような内容を書く必要がある。
「このプロジェクトでは、サイト全体を差し替えず、変更したファイルだけを本番サーバーへアップロードしてください。〇〇ディレクトリはアップロード対象から除外してください。デプロイ手順は△△の通りです。」
CLAUDE.mdがあれば、この内容は会話が始まった時点でコンテキストに入っている。「デプロイして」の一言は、上のような指示と組み合わさった状態でAIモデルへ渡る。
つまりCLAUDE.mdは、会話のたびに書いていた指示をあらかじめファイルにしておき、毎回自動で差し込む仕組みである。ユーザーの入力が短くなったのは、プロンプトが不要になったからではなく、その大部分を事前に用意してあるためである。
6. まとめ
- プロンプト・エンジニアリングは、Claude Codeでもなくなっていない。書く場所が、会話からツールの内部(システムプロンプト・CLAUDE.md・メモリ・作業時のファイル読み込み)へ移っている
- 短い指示で済むのは、前置きや文脈があらかじめ用意されているためである
- CLAUDE.mdは、プロジェクトごとに用意しておくプロンプトにあたる。Anthropic社内でも、その文面を調整する作業が行われている
- Anthropicはこの考え方をコンテキスト・エンジニアリングと呼ぶ。従来のプロンプト・エンジニアリングを置き換えるものではなく、対象を「1回の指示文」から「AIに渡す情報全体」へ広げたものと位置づけられる
Claude Codeは、プロンプトを書く作業をあらかじめファイルで済ませておける仕組みである。そう捉えると、CLAUDE.mdやメモリをどう整えるかも判断しやすくなる。
7. 参考資料
- Effective context engineering for AI agents — プロンプト・エンジニアリングとコンテキスト・エンジニアリングの違い
- Best practices for Claude Code — CLAUDE.mdの役割と、社内での調整事例
- Effective harnesses for long-running agents — ファイル(進捗ログ・git履歴)を使った状態管理
- Building agents with the Claude Agent SDK — システムプロンプト・ツール・メモリのSDKレベルの構成
- Modifying system prompts (Claude Code SDK) — デフォルトのシステムプロンプトを追加・上書きする仕組み
- Prompt engineering overview — 従来型のプロンプト・エンジニアリングの基礎
- Claudeの契約とClaude Codeのインストール手順 — Claude Codeのセットアップについて
元記事(Bitz Notebook): Claude Codeとプロンプト・エンジニアリング