Claude Codeの仕組み講座(講師のためのエンジニア水準)
区分1 AIの動き方の芯★★★前の単元で、モデルは「次のトークンを当てる」存在だと学びました。 では、ファイルを読んだりコマンドを動かしたりは、どうやっているのでしょうか。
実は、モデル自身は何も実行しません。 モデルがするのは、「この道具を、この内容で使ってください」という依頼文を出すことだけです。実行は、外側の仕組みがやります。
事務所にたとえると、モデルは「指示を出す人」、Claude Code は「実際に動いて報告する事務員」です。 公式のAPI(自分のプログラムから Claude を呼び出す窓口)の説明にも、モデルは自分では何も実行せず、構造化された依頼を出して、実行はアプリケーション側が行うと書かれています。
| 何のことか | |
|---|---|
| モデル | 考えて、道具の使い方を依頼する頭 |
| 道具 | 手足(ファイルを読む・書く、コマンドを動かす、検索する)。公式では「ツール」 |
| ハーネス | モデルを包んで動かす外側の仕組み。Claude Code のこと。公式の用語集は Claude Code を「ハーネス」とも呼びます |
| 往復(ターン) | 依頼→実行→結果を返す、の1周分 |
「ターン」という言葉は、資料によって指す範囲が違います(補足を参照)。
道具を使う時、次の順番で進みます。
① Claude Code:会話の全部と、使える道具の説明をモデルに送る
↓
② モデル:道具を呼ぶ依頼(tool_use)を返す 例「Read を、この引数で」
↓
③ Claude Code:許可を確かめて、道具を実行する
↓
④ Claude Code:結果(tool_result)を会話に足して、モデルに送り直す
↓
⑤ モデルが次を考える → また道具を呼ぶなら②へ戻る
→ 道具を呼ばず文章で答えたら終わり
言葉を先に説明します。
依頼が出る時、API の返事には「止まった理由」として tool_use が入っています。
「道具を呼びたいから、いったん止まっています」という合図です。道具を呼ばずに答えを出し終えた時は、止まった理由が end_turn(「この番の答えは終わり」という意味)になります。公式のAPI説明では、tool_use の間は繰り返し、それ以外の理由で止まったら終わり、と書かれています。
では実際に、「README.md を読んで」と頼んだ時の往復を見てみましょう。
下の形は JSON(項目名と値を { } で並べる、データの書き方)です。見やすいように簡略にした例で、実際の記録にはもう少し項目があります。
あなた: README.md を読んで
モデルが返す依頼: { "type": "tool_use", "id": "toolu_01…", "name": "Read",
"input": { "file_path": "/…/README.md" } }
Claude Code が実行して返す結果:
{ "type": "tool_result", "tool_use_id": "toolu_01…",
"content": "(README.md の中身)" }
モデルの答え: 「README.md には〜と書かれています」(道具を呼ばず、文章で答える)
モデルが出すのは、Read という道具の名前と、読むファイルの場所(引数)だけです。
実際にファイルを開くのは Claude Code で、中身が tool_result として会話に足されて、モデルに戻ります。依頼の id と結果の tool_use_id が同じなので、「どの依頼への結果か」が分かります。
大事なのは、結果が会話に足されて、モデルに戻ることです。モデルは、その結果を見て次の一手を決めます。
あなたが一言頼むと、画面では1回の返事に見えます。 でも裏では、この往復が何回も回っています。
公式の例(テストを直す依頼)では、次のように進みます。
これで4周です。大きな作業なら、数十回の道具の呼び出しがつながります。
もう1つ、説明に使えることがあります。 1回の返事の中で、モデルが道具を複数同時に依頼することがあります。公式のSDK説明(SDK=自分のプログラムの中で Claude Code と同じ動きを使うための部品集。No.16で扱います)によると、読むだけの道具は同時に動かせます。たとえば Read、Glob(ファイル名のパターンで探す道具)、Grep(ファイルの中身の文字列で探す道具)です。 一方、書き換える道具(Edit・Write・Bash)は、衝突を避けるため1つずつ順番に動きます。
手元の実物で確かめてみましょう。 会話の記録は、~/.claude/projects/ の下に、作業場ごとのフォルダに分けて入っています。1会話が1つの .jsonl ファイルです(.jsonl は、1行に1つの記録を JSON で書き並べた形式のファイルです)。
その中で、道具の呼び出しが何回あったかは、ターミナル(Mac の「ターミナル」アプリ。文字でコマンドを打って操作するアプリ)で次の1行を打つと数えられます。
grep -o '"type":"tool_use"' 会話のファイル名.jsonl | wc -l
自分の長い会話を1つ選んで数えてみてください。 数百回という数字が出ることもあります。「1回の返事の裏」の実感がつかめます。
公式の説明では、基本の道具は大きく5種類に分かれます。
| 種類 | できること |
|---|---|
| ファイル操作 | 読む・書く・直す・名前を変える |
| 検索 | ファイル名や中身を探す |
| 実行 | コマンドを動かす(テストの実行なども) |
| Web | 検索する・ページを読む |
| コードの補助 | 型の間違いなどを見る(追加の仕組みが必要。事務の仕事ではほぼ使いません) |
このほかに、サブエージェントを呼ぶ、あなたに質問する、スキルを呼ぶ、といった「段取り用」の道具もあります。
道具が無ければ、AIは文章で答えることしかできません。 道具があるので、AIは文章を返すだけでなく、実際に作業を進められます。
あとから道具を足す仕組みがスキル・MCP などです。 MCP(外のサービスにつなぐ約束事。No.11で扱います)の道具は、使うまでは名前だけが机に置かれ、細かい説明は必要になった時に読み込まれます(公式)。
「やっていいですか」と聞かれる位置は、決まっています。 モデルが依頼を出したあと、道具を実際に動かす前です。
モデルの依頼 → 【許可の判定】 → 実行 → 結果をモデルへ
公式の説明では、読むだけの操作(作業場の中のファイル読み取りなど)は確認なしで進みます。コマンドの実行や、ファイルの書き換えは確認が入るのが標準です(許可の設定によって変わります)。
では、断られたらどうなるのでしょうか。 断られたことも「結果」としてモデルに返ります。モデルは「拒否された」という結果を見て、別のやり方を試すか、できなかったと報告します。止まって終わり、ではありません。
許可の細かい判定順は No.13 で、実行の直前に割り込む仕組み(フック)は No.10 で扱います。
この往復の途中で、あなたはいつでも割り込めます。
Esc を押すと、いま動いている道具の呼び出しを止めて、あなたの次の指示を待ちますどちらも公式に書かれた動きです。 「ずっと見ていないといけないのですか」と聞かれたら、「途中でいつでも向きを変えられるから、任せっぱなしでも手綱は握れます」と答えられます。
往復が終わるのは、基本的にはモデルが道具を呼ばずに答えた時です。 自分で動かす場合(No.16で扱います)は、往復の回数や使う金額の上限を決めておくこともできます。
| 仕組み | 事務所のたとえ |
|---|---|
| モデル | 指示を出す上司 |
| Claude Code | 実際に動く事務員 |
| 道具を呼ぶ依頼 | 「この資料を持ってきて」というメモ |
| 許可の判定 | 事務員が「これは動かしていいですか」と確認する |
| 結果を返す | 事務員が資料を上司の机に置く |
| 何往復もする | 上司が資料を見て、また次のメモを書く |
上司(モデル)は、自分の席から動きません。 手足になっているのは、事務員(Claude Code)です。この関係を図にして見せると、受講生に伝わりやすくなります。
○ 受講生によく聞かれる質問① 「一言頼んだだけなのに、なんで何分も動いているの?」
答え方:1回の返事の裏で、道具を呼んで結果を見て次を決める、を何周も回しているからです。長い作業ほど周数が増えます。記録を数えて見せると伝わります
○ 受講生によく聞かれる質問② 「AIが直接パソコンを触っているんですか?」
答え方:いいえ。モデルは依頼を出すだけで、実行するのは Claude Code です。だから実行の直前で止めたり、拒否したりできます
○ 受講生によく聞かれる質問③ 「なんで急に『やっていいですか』って聞くの?」
答え方:現実を変える道具(書き換え・コマンド実行)の、実行の直前に判定があるからです。故障ではありません。許可の設定で、聞く範囲は変えられます(No.13)
○ 補足:「ターン」は資料によって範囲が違います。公式の用語集では、あなたが送ってから Claude が答え終えるまでの1回分(途中の道具の呼び出しを含む)。SDKの説明では、依頼→実行→結果の1周分です。講義で使うときは、どちらの意味かを一言添えると混乱しません
○ 関係する単元:No.01(モデルは依頼文を作るだけ)/No.10(フック)/No.13(許可)
モデルは道具を「使って」と依頼するだけで、実行するのは Claude Code。結果が会話に戻り、モデルが次を決める。これが1回の返事の裏で何周も回る。止まる位置は、実行の直前。
問1 受講生が「AIはファイルを直接開いて読んでいるんですよね?」と聞いてきました。仕組みからの答えは?
問2 「テストを直して」と一言頼んだら、裏で何周も動いていました。この動きの説明として正しいのは?
問3 「やっていいですか」と聞かれる位置は、仕組みのどこ?
出典:Claude Code 公式「How Claude Code works」(https://code.claude.com/docs/en/how-claude-code-works)/Anthropic 公式「How tool use works」(https://platform.claude.com/docs/en/agents-and-tools/tool-use/how-tool-use-works)/Claude Code 公式「How the agent loop works」(https://code.claude.com/docs/en/agent-sdk/agent-loop)/「Configure permissions」(https://code.claude.com/docs/en/permissions)/「Glossary」(https://code.claude.com/docs/en/glossary)。内容は2026年10月時点の公式。