Claude Codeとは
この章ではClaude Codeについて、AIエージェントとしての仕組みから理解できるよう、ステップバイステップで解説します。
本ドキュメントで記載しているトピックの詳細については、各トピック毎にリンクを掲載しています。
1. AI エージェントとしての Claude Code
AI エージェントとは
Claude Codeは、Anthropic社が提供する、ソフトウェア開発タスクを支援するためのAIエージェントです。開発者が指示した内容を理解し、コードベースを自律的に編集したり、自動テストを実行した結果を自身で分析し適切な改修を実施したり、といった行動を取ることができます。
2025年9月現在ではAnthropic社が提供するClaude Code以外にも、OpenAI社が提供するCodexや、Google社が提供するGemini CLIなど、多くのAIエージェントがソフトウェア開発者に活用されています。
このように既に活用されているAIエージェントですが、そもそもAIエージェントとはどのような仕組みを指す言葉なのでしょうか。
Artificial Intelligence: A Modern Approachによる定義では、「エージェントとは、環境を認識し、目標を達成するために自律的に行動する存在」とされています。ここで言う環境とは、AIエージェントが働きかける場所のことを指します。例えば、ファイルシステムやインターネットのようなデジタル空間や、車の中といった物理空間を指します。
Claude Codeのようなコーディングエージェントを考える場合、物理空間は含めません。また、単に環境を認識するだけで良いのではなく、環境を認識した上で、環境自体にも作用を加える(ファイルなどに変更を加える)機能も必要です。
そのため、ここではAIエージェントを 「目標に向けて環境と相互作用しながらタスクをこなす知能システムのこと」 とします。
この定義は、本ドキュメントを執筆しているメンバーも執筆に関わっている現場で活用するための AI エージェント実践入門でも採用した定義です。
©株式会社ジェネラティブエージェンツ / はじめてのClaude Code ※引用画像は本サイト利用規約に基づく自由な使用、複製、翻案等の対象外です。
図では「行動」によって環境に働きかけた結果や、ユーザからの入力を「知覚」として受け付けます。そして、AIエージェントが保持してい る「メモリ」と「知覚」を「LLM」に入力し、その結果「行動」が出力として得られます。この「行動」を「環境」に適用し、また得られた結果が「知覚」として受け付けられることになります。
(このようなループを「エージェントループ」と呼ぶことがあります)
Claude CodeのAIエージェントとしての位置付け
この定義を踏まえると、Claude Codeは 「コードベースを環境として動作する AI エージェント」 と整理することができます。
©株式会社ジェネラティブエージェンツ / はじめてのClaude Code ※引用画像は本サイト利用規約に基づく自由な使用、複製、翻案等の対象外です。
Claude Codeでは「環境」からの入力は「プロンプト」として受け付けられます。これまでのユーザからの入力やツールの実行結果は「コンテキスト」として保持され、「プロンプト」と「コンテキスト」はLLM(Anthropic Claude)に入力されます。LLMは次に実行する「ツール」を推論し、出力します。最後に、ツールを実行することで、環境に作用を及ぼします。
このように、環境から情報を受け取り、推論を経て環境に作用するエージェントループを繰り返すのが、Claude Codeの基本的な仕組みです。
2. 環境に働きかけるための「ツール」
Claude Codeはツールを選択し続けるAI
先ほどのClaude Codeのエージェントループ図では、環境への働きかけには必ず「ツール」を経由していました。
Claude Codeでは下図のように、ベースツールとしてデフォルトで選択できるツールが提供されています。ユーザからの指示を達成するために、この中のいずれかのツールを選択する行動を取ります。
©株式会社ジェネラティブエージェンツ / はじめてのClaude Code ※引用画像は本サイト利用規約に基づく自由な使用、複製、翻案等の対象外です。
つまり、Claude Codeは「プロンプト」と「コンテキスト」を入力として、ツールを選択し続けるAIエージェントなのです。
©株式会社ジェネラティブエージェンツ / はじめてのClaude Code ※引用画像は本サイト利用規約に基づく自由な使用、複製、翻案等の対象外です。
Claude Codeで利用できるツール一覧
各ツールでできることは次の表の通りです。デフォルトでは、Claude Codeはこれらのツールを選択しながらタスクを遂行していきます。
| ツール名 | 説明 |
|---|---|
| Bash | 環境でシェルコマンドを実行 |
| Edit | 特定のファイルに対象を絞った編集を行う |
| Glob | パターンマッチングに基づいてファイルを検索 |
| Grep | ファイル内容のパターンを検索 |
| LS | ファイルとディレクトリを一覧表示 |
| MultiEdit | 単一ファイルに対して複数の編集をアトミックに実行 |
| NotebookEdit | Jupyter ノートブックセルを変更 |
| NotebookRead | Jupyter ノートブックの内容を読み取り表示 |
| Read | ファイルの内容を読み取り |
| Task | 複雑な多段階タスクを処理するサブエージェントを実行 |
| TodoWrite | 構造化されたタスクリストを作成・管理 |
| WebFetch | 指定された URL からコンテンツを取得 |
| WebSearch | ドメインフィルタリング付きで Web 検索を実行 |
| Write | ファイルを作成または上書き |
ツールを拡張するための「MCP」
MCP(Model Context Protocol)は、エージェントが利用できるツールを拡張するためのプロトコルです。Claude Codeでは、MCPを利用して、選択できるツールを拡張することができます。
Context7やPlaywrightのように配布されているものもありますが、FastMCPといった仕組みを使えば自身で開発することも可能です。
©株式会社ジェネラティブエージェンツ / はじめてのClaude Code ※引用画像は本サイト利用規約に基づく自由な使用、複製、翻案等の対象外です。
例えば開発標準のドキュメントなどをClaude Codeに読ませようとした場合、いちいちReadツールで1件ずつ読ませていたのでは、効率が悪いです。その場合、関連するドキュメントを検索して参照するMCPを独自開発すれば、Claude Codeの実行ステップを減らすことができます。
Claude Codeは実行ステップが多くなればなるほど、ステップの記録にコンテキストを消費してしまうため、指示追従性が悪くなる傾向にあります。 実行効率の分析の際には、Claude Codeの実行ログを、コンテキストサイズの大きいLLMに分析してもらうと、短時間で良い分析を得ることができます。筆者らのプロジェクトでは、ログ分析の際、入力に1Mトークン利用できる Gemini 2.5 Pro を活用しています。
MCP(Model Context Protocol)の詳細な解説は以下のドキュメントを参照してください。
3. ツール実行をプログラマブルに制御する「フック」
コード生成タスクでは、既に環境に整備されているデータベーススキーマをClaude Codeが変更しないよう、制 御したいシーンがあります。
このような場合、CLAUDE.mdなどに禁止事項として明記する手段も有効ですが、最終的に判断するのはLLM次第なので、必ず守られるとは限りません。
そこで利用するのが「フック」です。フックを利用することで、任意のタイミングにおいてルールベースでClaude Codeの行動を制御することができます。
例えばPreToolUseフックでは、Claude Codeのツール選択内容を引数にとり、スクリプトで正規表現などを利用して、ツール利用の許可や拒否を自動的に実行することができます。先の例で言えば、.sql形式のファイルを作らせないことにより、データベーススキーマの変更を強制的に禁止させたりすることができます。
©株式会社ジェネラティブエージェンツ / はじめてのClaude Code ※引用画像は本サイト利用規約に基づく自由な使用、複製、翻案等の対象外です。
フックには次のタイプがあります。これらのフックを使い分けながら、ルールベースでClaude Codeを制御します。
| フックタイプ | 説明 |
|---|---|
| PreToolUse | ツール呼び出しの前に実行(ブロック可能) |
| PostToolUse | ツール呼び出し完了後に実行 |
| UserPromptSubmit | ユーザがプロンプトを送信したときに、Claude が処理する前に実行 |
| Notification | Claude Codeが通知を送信するときに実行 |
| Stop | Claude Codeが応答を終了するときに実行 |
| SubagentStop | サブエージェントタスクが完了するときに実行 |
| PreCompact | Claude Codeがコンパクト操作を実行しようとする前に実行 |
| SessionStart | Claude Codeが新しいセッションを開始するか既存のセッションを再開するときに実行 |
| SessionEnd | Claude Codeセッションが終了するときに実行 |
比較的よく使われるフックは、PreToolUse、Notification、Stopです。
PreToolUseは、ツールの呼び出し前に、不正な行動をしないか事前チェックするために使用されます。これは先ほど.sqlファイルの作成を抑制する例でご紹介しました。
Notification、StopはClaude Codeの動作が終了したときに呼び出されるので、ユーザ(自分自身)に通知を送る際に利用されることが多いです。OSの通知や音声で作業の完了を通知すると、複数ウィンドウでClaude Codeを利用している場合に便利です。
フックの詳細な解説は以下のドキュメントを参照してください。