Claude Code の教科書
第1章 Claude Code とは何か

Claude Code の仕組み

エージェントループ・ツール・コンテキストウィンドウ・チェックポイントと権限という、Claude Code を動かす核となる仕組みを解説する

第1部 クイックスタート0/12

この節で学ぶこと

この節では、Claude Code を動かす核となる仕組み — ループを支える5種類のツール、Claude がプロジェクトから見えるもの、ループを安全に保つチェックポイントと権限 — がわかります。

「理解→行動→検証」を繰り返す自律エージェント

エージェントループ
コンテキスト収集
行動
検証
ターミナルで動くファイルを直接編集いつでも割り込める変更は巻き戻せる

実行環境(ローカル/クラウド/リモートコントロール)やインターフェースが変わっても、このループ自体は変わらない

イメージでつかむ

Claude Code を、腕の良い同僚に仕事を任せる場面に例えてみましょう。「ログインのバグを直しておいて」とだけ頼んだとき、優秀な同僚はこう動きます。

腕の良い同僚に任せる

まず現状を確認

テストを実行してエラーを見る・関連ファイルを探す

次に手を動かす

コードを編集する

最後に確かめる

テストを再実行する。ダメなら現状確認からやり直す

あなたは細かい手順を指示する必要はなく、いつでも「そこじゃなくてセッション周りが怪しい」と割り込んで軌道修正できる

Claude Code の内部で起きているのはまさにこれです。コンテキスト収集→行動→検証という3つのフェーズを、タスクが終わるまで繰り返します。このループを回しているのが「モデル」(考える部分)と「ツール」(動く部分)で、Claude Code はその両方を束ねるエージェントハーネス(agentic harness、モデルを実際に使えるエージェントに仕立てる土台)として働きます。

ここがポイント

手順は指示しなくていい。途中の割り込みで軌道修正する

エージェントループ

Claude にタスクを頼むと、コンテキスト収集・行動・検証の3フェーズを行き来しながら作業します。ループの回り方はタスクによって変わります。

質問なら収集だけ

コードベースについての質問なら、コンテキスト収集だけで終わることもある

バグ修正は何周も回る

3フェーズを何周も繰り返す。リファクタリングなら検証に厚みが出る

前の結果が次を決める

前のステップで得た情報をもとに次を決め、何十もの行動を連鎖させて軌道修正する

いつでも割り込み可能: Esc で停止 / 修正を入力して Enter で送信。あなたはループの外野ではありません

モデル

Claude Code は Claude モデルを使ってコードを理解し、タスクについて推論します。複雑なタスクでは、作業をステップに分解し、実行し、学んだことをもとに調整します。用途によって使うモデルを切り替えられます(/model コマンド、または claude --model <name>)。この節で「Claude が選ぶ」「Claude が判断する」と書くときは、このモデル部分が推論していることを指します。

ツール

ツールが無ければ Claude はテキストで応答するだけです。ツールがあることで、Claude はコードを読み、ファイルを編集し、コマンドを実行し、外部サービスとやり取りできるようになります。組み込みツールは大きく5つのカテゴリーに分かれ、それぞれ異なる種類の「行為主体性」を表します。

ファイル操作

ファイルの読み取り、コードの編集、新規ファイル作成、リネーム・再構成

検索

パターンでファイルを探す、正規表現で内容を検索する、コードベースを探索する

実行

シェルコマンドの実行、サーバー起動、テスト実行、git の使用

Web

Web検索、ドキュメント取得、エラーメッセージの調査

コードインテリジェンス

編集後の型エラー・警告の確認、定義へのジャンプ、参照の検索(コードインテリジェンス系プラグインが必要)

これらは主要な機能で、他にサブエージェントの起動やユーザーへの質問など、オーケストレーション用のツールもあります。「テストが失敗しているのを直して」と頼むと、Claude は次のように動くことがあります。

  1. 1

    テスト実行

    何が失敗しているか確認する

  2. 2

    エラーを読む

    エラー出力から手がかりを得る

  3. 3

    原因を探す

    関連するソースファイルを検索し、理解のために読む

  4. 4

    修正する

    問題を直すために編集する

  5. 5

    再テスト

    再度テストを実行して確認する

各ツール使用が新しい情報を Claude にもたらし、それが次のステップを決めます。これがエージェントループの実際の動きです。

組み込みツールは土台にすぎません。スキルで知識を拡張し、MCP(公開準備中)で外部サービスにつなぎ、フック(公開準備中)でワークフローを自動化し、サブエージェント(公開準備中)に作業を任せることができます。これらは核となるエージェントループの上に乗る拡張レイヤーです。

Claude が見えるもの

ディレクトリで claude を実行すると、Claude Code は次のものにアクセスできるようになります。

claude を実行したディレクトリ

ここを起点に、Claude は次の6つが見える

プロジェクトのファイル

作業ディレクトリ配下(許可があればそれ以外も)

ターミナル

ビルド・git・パッケージ管理など、コマンドラインでできることは何でも

git の状態

現在のブランチ・未コミットの変更・直近のコミット履歴

CLAUDE.md(公開準備中)

プロジェクト固有の指示・規約を書く、毎セッション読み込まれる Markdown ファイル

自動メモリ(公開準備中)

作業中に Claude が自動保存する学習内容(プロジェクトのパターンや好み)

設定した拡張機能

MCPサーバー(公開準備中)・スキル・サブエージェント(公開準備中)・Claude in Chrome(公開準備中)

メモリは全部読まれない

自動メモリの MEMORY.md は「先頭200行または25KBのうち、どちらか先に達した方まで」がセッション開始時に読み込まれる

見える範囲は許可で広がる

基本は作業ディレクトリとサブディレクトリ。許可があればそれ以外の場所のファイルにも届く

Claude はプロジェクト全体を見渡せるため、横断的に作業できます。「認証まわりのバグを直して」と頼むと、関連ファイルを検索し、複数ファイルを読んでコンテキストを理解し、複数ファイルにまたがる編集を協調させ、テストを実行して確認し、頼めばコミットまで行います。これは、開いている1ファイルしか見えないインラインのコード補完ツールとは異なる点です。

ここがポイント

プロジェクト全体が見えるから、複数ファイル横断の作業ができる

実行環境とインターフェース

ここまで説明したエージェントループ・ツール・機能は、どこで使っても同じです。変わるのはコードがどこで実行され、どう対話するかだけです。

実行環境

Claude Code は3種類の実行環境で動きます。

ローカル

自分のマシンで実行(デフォルト)。ファイル・ツール・環境にフルアクセス

クラウド

Anthropic 管理の VM、または組織が運用する自己ホスト環境(公開準備中)。タスクのオフロードや、ローカルに無いリポジトリでの作業に

リモートコントロール(公開準備中)

実行とファイルは自分のマシンのまま、ブラウザの Web UI から操作する

インターフェース

ターミナル、デスクトップアプリ、IDE拡張(公開準備中)、claude.ai/code、リモートコントロール(公開準備中)、Slack(公開準備中)、CI/CDパイプライン(公開準備中)から Claude Code にアクセスできます。インターフェースによって見え方・操作感は変わりますが、裏で動くエージェントループは同一です。全体像はClaude Code を使える場所を参照してください。

ここがポイント

どこで使っても、裏で回るループは同一

セッションの仕組み

Claude Code は作業中の会話をローカルに保存します。この記録が、セッションの巻き戻し・再開・分岐(フォーク)を支えています。

全部ローカルに記録

メッセージ・ツール使用・結果はすべて ~/.claude/projects/ 配下のプレーンテキスト JSONL ファイルに書き込まれる

変更前にスナップショット

コードを変更する前に対象ファイルのスナップショットが取られるため、必要ならいつでも元に戻せる

セッションは独立

新しいセッションは以前の会話履歴を持たない、まっさらなコンテキストウィンドウから始まる

セッションをまたいで学習内容を引き継ぐには、自動メモリ(公開準備中)を使うか、CLAUDE.md(公開準備中)に自分で永続的な指示を書きます。

ブランチをまたいだ作業

Claude Code の会話(セッション)は現在の作業ディレクトリに紐づいています。ブランチを切り替えると、Claude が見るファイルは新しいブランチのものに変わりますが、会話履歴はそのまま保持されます。セッションはディレクトリに紐づくため、git ワークツリー(公開準備中)を使えば、ブランチごとに別ディレクトリを作って複数の Claude セッションを並行実行できます。

再開とフォーク

再開(--continue / --resume)

同じセッションIDのまま、新しいメッセージを既存の会話に追加する

フォーク(--fork-session / /branch)

履歴を新しいセッションIDにコピーする。元のセッションはそのまま変更されない

コマンドは claude --continueclaude --resume(再開)、--fork-session/branch(フォーク)です。

コンテキストウィンドウ

Claude のコンテキストウィンドウには、次のものが入ります。作業が進むとコンテキストは埋まっていきます。

コンテキストウィンドウ

モデルが一度に扱える情報量の上限

会話履歴

あなたとの対話・ツール使用・結果

ファイル内容とコマンド出力

読んだファイル・実行結果

CLAUDE.md と自動メモリ

いずれも公開準備中

スキルとシステム指示

読み込み済みスキル・組み込みの指示

Claude は自動で圧縮(compact)しますが、会話の序盤にあった指示は失われることがあります。永続的なルールは CLAUDE.md に書き、/context でコンテキストの使用状況を確認してください。実際に何が読み込まれるかは、コンテキストウィンドウを理解するで詳しく扱います。

コンテキストが埋まったとき

上限に近づくと、Claude Code は次の順で動きます。

  1. 1

    古い出力を消去

    まず古いツール出力から消す

  2. 2

    会話を要約

    依頼内容と重要なコードスニペットは保持される。序盤の詳細な指示は失われることがある

  3. 3

    それでも無理ならエラー

    大きすぎるファイルやツール出力で要約してもすぐ埋まる場合、数回試行した後に自動圧縮を止めてエラーを表示する(無限ループの代わり)

会話履歴に頼らず、永続的なルールは CLAUDE.md に書いてください。圧縮時に残す内容を制御するには、CLAUDE.md に「Compact Instructions」セクションを追加するか、/compact focus on the API changes のようにフォーカスを指定して /compact を実行します。

使用状況は /context

コンテキストの使用状況は /context で確認できる

MCP定義は遅延読み込み

MCPツールの定義(公開準備中)はデフォルトで遅延読み込みされ、tool search(公開準備中)で必要時だけ読み込まれる。実際に使うまではツール名しか消費しない。サーバーごとのコストは /mcp で確認

スキルとサブエージェントでコンテキストを管理する

圧縮以外にも、コンテキストに何を読み込むかを制御する機能があります。

スキルはオンデマンド

セッション開始時は説明文だけを見て、内容全体は実際に使われた時に初めて読み込まれる(公開準備中)

サブエージェントは別の窓

自分専用のコンテキストウィンドウの中で動き、終わったら要約だけがメインに返る(公開準備中)

手動で呼び出すスキルは disable-model-invocation: true を設定すれば、必要になるまで説明文すらコンテキストに出さずに済みます。サブエージェントはフォーク(公開準備中)でない限りまっさらな状態から始まり、フォークの場合はそこまでの会話のコピーを持って始まります。いずれの場合も、サブエージェントのツール呼び出しはあなたのメインのコンテキストには入りません。

チェックポイントと権限で安全を保つ

Claude Code には2つの安全機構があります。役割の違いを押さえるのがこの節の肝です。

チェックポイント=戻せる保険

ファイル変更を後から元に戻せる

権限=事前の関所

確認なしにできる操作の範囲を先に決める

チェックポイントで変更を取り消す

ファイル編集は元に戻せます。 Claude がファイルを編集する前に、現在の内容をスナップショットします。何かおかしいと思ったら Esc を2回押して前の状態に巻き戻すか、Claude に取り消しを頼みます。チェックポイントは git とは別物で、会話を再開したときも使えます。

戻せるのはファイル変更だけ。シンボリックリンクとハードリンクされたパスは復元の対象外。データベース・API・デプロイなどリモートシステムに影響する操作はチェックポイントで戻せない — そこは権限モードと権限ルールで防ぐ

Claude ができることを制御する

確認なしで Claude が実行できる範囲は、権限モードで決めます。Shift+Tab で権限モードを切り替えられます。

承認なしで進む

Auto — クラシファイア(操作を審査する第二のモデル)がほとんどの操作をバックグラウンドでレビューし、リスクの高いものだけブロック。Pro・Max・Team プランでは対話式ターミナルと VS Code セッションの組み込み開始モード

毎回確認する

Manual — ファイル編集とシェルコマンドの前に Claude が確認を求める

編集だけ自動で通す

Accept edits — ファイル編集や mkdir・mv のような一般的なファイルシステムコマンドは確認なし、それ以外のコマンドは確認する

調査だけで編集しない

Plan — ソースファイルを編集せずに調査し、計画を提案する

権限モードの詳しい種類・開始ルール・切り替え方は、権限モードを選ぶで扱っています。.claude/settings.json(公開準備中)で npm testgit status のような信頼できるコマンドを個別に許可しておけば、毎回確認されずに済みます。設定は組織全体のポリシーから個人の好みまで、段階的にスコープを絞れます。

ここがポイント

戻せない操作は、権限モードと権限ルールで先に防ぐ

コード例+解説

原文が示す「対話としての使い方」を、そのまま引用して解説します。3つの例が示す教訓はこうです。

最初は要点だけでいい

完璧な指示は不要。様子を見ながら会話で軌道修正する

具体的なほど一発で決まる

ファイル・懸念点・手順まで書いた指示は、曖昧な指示より一度で成功しやすい

検証対象を渡すと自走する

テストケースや期待する出力を先に示すと、Claude は「検証」フェーズを自分で回せる

最初の指示は完璧である必要はありません。まず要点を伝え、様子を見ながら調整していきます。

Fix the login bug

[Claude が調査し、何か試す]

That's not quite right. The issue is in the session handling.

[Claude がアプローチを調整する]

最初の一手がうまくいかなくても、最初からやり直す必要はありません。会話を続けながら軌道修正すればよい、というのが原文の要点です。次の例のように、初手の指示を具体的にするほど後の修正は減ります。

The checkout flow is broken for users with expired cards.
Check src/payments/ for the issue, especially token refresh.
Write a failing test first, then fix it.

ファイル・懸念点・手順まで書いた具体的な指示は、曖昧な指示よりも一発で成功しやすいと原文は述べています。

検証対象を与えると、Claude は自分の作業を確認しながら進められます。

Implement validateEmail. Test cases: 'user@example.com' → true,
'invalid' → false, 'user@.com' → false. Run the tests after.

テストケースや期待する出力をあらかじめ示しておくことで、Claude はエージェントループの「検証」フェーズを自分自身で回せるようになります。

つまずきポイント

よくある誤解

チェックポイントがあれば、Claude にやらせた変更は何でも元に戻せる

実際は

戻せるのはファイル変更だけ。データベースの書き込み・API 呼び出し・デプロイなどリモートシステムへの影響は戻せない(そこは権限モードと権限ルールで防ぐ)

よくある誤解

エージェントループはコーディング専用の仕組みだ

実際は

原文冒頭にある通り、コマンドラインからできることなら何でも扱える。ドキュメント執筆・ビルド実行・ファイル検索といった非コーディング作業にも同じループが使われる

よくある誤解

セッションを再開すれば、以前のセッションの学びも覚えている

実際は

セッションはそれぞれ独立していて、新しいセッションは会話履歴を持たないまっさらな状態から始まる。引き継ぐには自動メモリか CLAUDE.md への明示的な記述が必要

よくある誤解

MEMORY.md はどれだけ書いても全部読み込まれる

実際は

セッション開始時に読み込まれるのは「先頭200行または25KBのうち、どちらか先に達した方まで」だけ

  • 参考(公式ではない): 迷ったら「今どのフェーズを Claude がやっているか(収集・行動・検証のどれか)」を意識すると、次に何を指示すべきかが見えやすくなります

関連リンク

出典

On this page