- 課題:Claudeを活用した3つのビルド手法(Agent SDK, Claude API, Claude Code)は一見似ているため、選定を誤ると不要な工数が発生したり、納品時にトラブルになったりする。
- 解決策:「誰がエージェントループ(Harness)を制御し、誰が実行環境(Deployment)を用意するか」というメンタルモデルで整理し、デリバリー状況に合わせたマトリクスで判断する。
- 効果:各ユースケースに応じた迅速な選定フレームワークと、本番環境への安全なデプロイのためのチェックリストが得られる。
クイックガイド: きめ細かなステップ制御を行い、AI機能を自社製品に組み込みたい場合はClaude APIを選択します。スクリプトやCI/CD、業務自動化などの自社インフラ上で、ファイル読み書きやコマンド実行をエージェントに自律的に行わせたい場合はClaude Agent SDKが最適です。ターミナル上でインタラクティブに作業したいならClaude Code、エージェント用のサンドボックス環境や実行インフラの管理をすべて任せたいならManaged Agents(Anthropicホスト)を選びましょう。以下では、実案件でのデリバリー(納品)状況に合わせた決定マトリクスと、本番環境(プロダクション)導入時のチェックリストについて詳しく解説します。
TL;DR (エグゼクティブ・サマリー)
- 課題: Agent SDK、Claude API、Claude Codeは名前やコンセプトが似ているため、直感で選んでしまいがちです。しかし、誤った選択のツケは開発中には見えず、納品時や想定外のトークン消費の請求書が届いたときに顕在化します。
- 解決策: 単純な機能比較ではなく、「エージェントループ(Harness)の実装は誰がやるか」と「実行環境(Deployment)は誰が管理するか」という2つの問いで整理すれば、4つの選択肢を綺麗に分類できます。
- 効果: 実案件のユースケース(PoC、社内自動化、納品プロダクト、CI/CD、コンプライアンス要件など)に応じた選定マトリクスと、本番導入時のチェックリストを提供します。
実務(デリバリー)視点での決定的な違い
公式ドキュメントには各ツールの概要が明確に書かれていますが、実際に顧客へシステムを**「選定・構築・納品する」**立場から見ると、以下の2つの問いに集約されます。
- エージェントループ(Harness)は誰が書くか? ―― 「Claudeがツール呼び出しを決定 → こちらでツールを実行 → 結果をClaudeに返却 → Claudeが次のアクションを決定」というループ処理と、会話が長くなった際の文脈(コンテキスト)管理システムを指します。これを「ハーネス(制御機構)」と呼びます。
- 実行インフラ(Deployment)は誰が用意するか? ―― プロセス、サーバー、サンドボックス、セッション状態の保存先などです。これを「デプロイメント(実行環境)」と呼びます。
これら2つの軸で整理すると、以下のようになります。
- Claude API(Tool Runner機能を含むMessages API)―― ツールを定義し、SDK(または開発者自身)がループを回し、自社サーバーでホストします。組み込みのツールやサンドボックスはありません。最も「魔法(ブラックボックス)が少ない」レベルであり、開発者がすべてを制御できる代わりに、すべてを自分で組み立てる必要があります。
- Claude Agent SDK ―― Claude Codeのエンジンをライブラリ(Pythonの
claude_agent_sdk、TypeScriptの@anthropic-ai/claude-agent-sdk)としてパッケージ化したものです。エージェントループ、コンテキスト管理、および強力な組み込みツール群(Read, Write, Edit, Bash, Glob, Grep, WebSearch, WebFetchなど)が最初から揃っています。開発者はプロンプトと設定を用意するだけで動かせますが、実行環境自体は**自社プロセス内(セルフホスト)**になります。 - Claude Code ―― SDKと同じハーネスを使用しますが、ターミナルから操作する対話型CLIツールです。機能はAgent SDKと同等ですが、インターフェースが異なります。
- Managed Agents ―― Anthropicがハーネスとデプロイメントの両方を管理します。Anthropicのインフラ上でエージェントループが動作し、セッションごとにサンドボックス環境が自動生成されます。開発者はREST経由でイベントを送り、結果を受け取るだけです。
ここで最も混同しやすいのが、「Agent SDK」と「Claude APIのTool Runner機能」は別物という点です。Tool Runner(anthropic / @anthropic-ai/sdk 内の client.beta.messages.tool_runner)は、自分が定義した独自のツールに対して単純なループ処理を肩代わりするだけの薄いヘルパー機能に過ぎず、組み込みツールやファイルシステムへのアクセス権は持ちません。一方、Agent SDK(claude-agent-sdk)は、Claude Codeのシステムそのものです。これらは異なるパッケージであり、動作するレイヤーも異なります。
「開発者による管理・制御」から「Anthropicへの委ね(利便性)」へのグラデーション:
| 選択肢 | 開発者が実装するもの | エージェントループの管理者 | ホスト先 |
|---|---|---|---|
| Claude API(手動ループ) | ループ全体 + ツール定義 | 開発者 | 自社(セルフホスト) |
| Claude API(Tool Runner) | ツール定義関数のみ | SDK(薄いヘルパー) | 自社(セルフホスト) |
| Claude Agent SDK | プロンプト + 構成設定 | SDK(Claude Codeの仕組み)+ 組み込みツール | 自社(セルフホスト) |
| Claude Code(CLI) | 対話コマンドの入力 | 既製品のシステム | 自社(ローカル端末) |
| Managed Agents | エージェント構成 + ツール結果 | Anthropic | Anthropic(セッションごとのサンドボックス) |
下に行くほど、開発者は管理コスト(最初はエージェントループ、最終的にはインフラ全体)をAnthropicに任せることができ、制御性と引き換えに利便性を得られます。
選定の前に:そのタスクは本当に「エージェント」が必要か?
これは最も見落とされがちな問いです。自律的にツールを呼び出して複数ステップを処理するエージェントは、通常のシングルリクエストと比較して莫大なトークンを消費し、動作の予測可能性も低くなります。私は、以下の4つの条件すべてを満たす場合にのみ、タスクを「エージェント」化します。
- 複数ステップが必要で、事前にフローを完全には定義できない ―― 「PDFからタイトルを抽出する」ような作業ではなく、「この設計書をもとにPR(プルリクエスト)を作成する」ようなケース。
- コストに見合う ―― エージェント化に伴うコストや遅延(レイテンシ)を上回る価値がアウトプットにある。
- Claudeの得意分野である ―― モデルが本来の実力を発揮できる種類のタスクである。
- 失敗してもリカバリー可能である ―― テスト、レビュー、ロールバックなど、エラーを検知して元に戻せる仕組みがある。
これらのうち1つでも欠けている場合は、よりシンプルなアプローチ(分類、要約、データ抽出などの通常のClaude APIリクエスト、またはコード側でフローを制御するプログラム的なワークフロー)にダウングレードすべきです。紹介記事ではあまり触れませんが、実案件のデリバリーにおいて最もコストを削減できるアドバイスは、**「SQLクエリ1本で解決する作業に、わざわざAIエージェントを持ち込まないこと」**です。
デリバリーシナリオ別の決定マトリクス
私がプロジェクトの技術選定を行う際、実際に使っているマトリクスです。技術的な機能比較ではなく、**「デリバリー状況(納品シナリオ)」**をメインの軸に据えています。なぜなら、最終的な意思決定で最も重要なのは「自分がプロジェクトを離れた後、誰が運用するのか」であり、「機能の多さ」ではないからです。
| シナリオ | 推奨ツール | 理由(デリバリー視点) | 技術的要件 |
|---|---|---|---|
| 顧客と要件・スコープを詰めるための迅速なPoC・デモ構築 | Claude Code (CLI) | 会議中にその場で即座に対話・軌道修正が可能。インフラコードを1行も書かずにデモができる。 | 単発、インタラクティブ |
| 自社製品の一機能としてAIを組み込み、厳格な出力制限と緻密な制御を行いたい | Claude API (+ Tool Runner) | 必要なツールだけをピンポイントで公開し、ファイルシステム全体へのアクセス等は遮断。ステップごとの挙動制御とテストが可能。 | 独自ハーネス、カスタムツール |
| 開発チーム内の繰り返し作業を自動化し、開発環境やCI上で動作させたい | Claude Agent SDK | インフラ上で実際のファイル読み書きやコマンド実行が必要。パッケージ化されたハーネスにより、エージェントループの実装工数がゼロ。 | セルフホスト、組み込みツール |
| CI/CDパイプラインでの自動PRレビュー、コード生成、マイグレーション実行など | Claude Agent SDK (headless) | 非対話型の実行環境。ツール実行前に介入・ログ記録するためのフック(Hooks)が利用可能。 | SDK、非対話実行 + フック |
| 長時間実行/非同期処理を行う自律エージェント製品を顧客に納品したいが、自社でサンドボックスを管理したくない | Managed Agents | Anthropicがエージェントループ、セッションごとのサンドボックス管理、バージョン管理をすべて代行するため、運用コストを削減できる。 | ハーネス + デプロイをAnthropicが管理 |
| 顧客(特に日本の顧客)から「データを自社環境の外に出したくない」と強く要求されている | Claude Agent SDK (セルフホスト) | 自社のプロセス内で実行され、自社インフラ上のファイルのみを操作するため、データレジデンシー(データ所在国要件)の証明が容易。 | セルフホスト、送信制御 |
要約すると、**「自社インフラで動かす社内自動化 = Agent SDK」「製品への組み込みと制御 = Claude API」「手元でのクイックな対話 = Claude Code」「インフラの運用負荷をゼロに = Managed Agents」**となります。
実案件で直面する「落とし穴」
- Agent SDKの実行コードは驚くほどシンプルです。 本質的には
query(prompt, options)を呼び出してメッセージのストリームを受け取るだけです。しかし、「動かすのが簡単」であることと「プロダクション(本番環境)で運用できる」ことは全く別物です(詳細は後述のチェックリストを参照)。 - 認証制限:サードパーティ製品に
claude.aiの個人アカウントでログインさせることはできません。 アプリケーションにAgent SDKを組み込む場合、APIキー(またはAmazon Bedrock / Google Vertex AIなど)を使用する必要があります。これは、ユーザーやセッションごとのトークン費用が発生することを意味するため、プロジェクトの初期段階から利用コストの計測と設計を行っておく必要があります。プロジェクトの終盤になってから気づくのでは遅すぎます。 - セッションの永続化:Agent SDKでは、セッション状態がローカルのファイルシステム上にJSONL形式で保存されます。 セッションの再開(Resume)や分岐(Fork)には非常に便利ですが、納品する際には「誰がこれをバックアップし、誰がクリーンアップし、保存期間はどうするか」という運用ルールを決める必要があります。Managed Agentsでは、この状態管理はAnthropicがホストするイベントログに保存されるため、利便性と制御のトレードオフになります。
- ブランド・商標の制約:Agent SDKを使って構築した製品に、「Claude Code」という名称やブランディングを使用することはできません。 細かい点に見えるかもしれませんが、顧客向けUIのデザインを作成する前に合意しておくべき重要なポイントです。
AIエージェント本番導入チェックリスト
適切なツールを選ぶことはスタートラインに過ぎません。一般的なテックブログやニュース記事では語られない、真の課題は「コストの暴走やエージェントの暴走を防ぎながら、いかに本番環境で安全に運用するか」です。Agent SDKやClaude Codeを採用する場合、私は以下の6つの観点でチェックを行います。
1. ツールの最小権限の原則(Least-privilege): allowed_tools(Python)または allowedTools(TS)で必要なツールだけを明示的に指定し、不要なツールは disallowed_tools で確実に遮断します。ファイルの読み取り専用エージェントであれば、絶対に Bash や Edit は有効にしないでください。これは設定の好みの問題ではなく、セキュリティ境界の設計そのものです。
2. トークンコストの天井設定: エージェントループは通常のAPIリクエストよりも遙かに多くのトークンを消費します。ステップ数の上限を設定し、タスクごとに適切なモデルを選択(すべての工程で最上位モデルを使わない)、固定されたシステムプロンプトにはPrompt Cachingを適用してコストを抑制します。
3. 非可逆なアクションにおけるHuman-in-the-loop: ファイルの削除、コードのプッシュ、外部APIの呼び出しなど、後戻りできない操作を行う前には、PreToolUse フックを挟んでユーザーに承認を求める仕組みを実装します。permission_mode を適切に設定し、自動実行の度合いをコントロールします。
4. 可観測性(Observability)の確保: PostToolUse フックを利用して、ファイルの修正やコマンド実行の履歴を監査ログ(Audit Log)として記録します。問題が発生した際に、「エージェントが何をしたのか」を推測するのではなく、ログから即座に追跡できるようにします。
5. 顧客ごとの認証と課金(Billing)の分離: APIキーはサーバーサイドで管理し、ユーザーごとの消費費用を初期段階から追跡します。これは将来的な価格設定や運用保守のコスト計算において、極めて重要なデータになります。
6. 納品・運用の引き継ぎ計画: 自分が開発から離れた後、誰がこのエージェントを保守するのか?セッションのJSONLファイルはどこに保存され、モデルの価格改定時の負担はどうするのか、APIキーの管理者は誰か?これらの問いにすべて回答できて初めて、エージェントの実装は本当の意味で「完了」したと言えます。
おわりに
Claude Agent SDK、Claude API、Claude Codeは優劣の関係ではなく、委ねるグラデーションのスペクトラムに位置しています。上に行けば行くほど(制御ループ、そしてインフラ全体を)Anthropicに委ねることになり、引き換えに開発効率と手軽さを得られます。正しい選定とは、状況に合わせた適切なステップを選択することであり、常に「本当にエージェントが必要か?」という問いから始め、「納品後に誰が運用するのか?」という問いで終わることです。
さらに深く知りたい方は、Claudeプラットフォーム構築の全体像を解説したClaude Platform 101、Messages APIとツール利用の基礎を扱うBuilding with the Claude API、ターミナルでの開発効率を最大化するClaude Code 101、そしてAgent SDKでも再利用されているIntroduction to Subagentsをご参照ください。学習ロードマップ全体は [/learn/claude?lang=ja] にまとめられています。
Nguyễn Phúc Nguyên Châu
Delivery Manager
ベトナム・日本市場向けに14年のデリバリー経験(Web・システム・AI自動化)
よくある質問
Claude Agent SDKとClaude API(Messages API)の違いは何ですか?
Claude APIでは、ツールの実行ループや個々のツールの実行ロジックを自分で実装する必要があります。一方、Claude Agent SDKは、Claude Codeと同様のエージェントループと組み込みツール群(Read, Write, Edit, Bash, Grep, WebSearchなど)が最初からパッケージ化されています。プロンプトと設定を与えるだけで動作しますが、その分ステップごとの細かい制御性は低くなります。
Agent SDKはClaude Codeと同じものですか?
制御機構(Harness)は同じですが、インターフェースが異なります。Claude Codeはターミナルで対話的に利用するCLIツールです。Agent SDKは、その制御機構をアプリケーションやスクリプト、CI/CDパイプラインなどに組み込むためのPython/TypeScript用ライブラリです。
エージェントを「使うべきではない」のはどのような場合ですか?
タスクが単一ステップで、事前に要件を完全に定義できる場合(分類、要約、データ抽出、単純なQ&Aなど)は、通常のClaude APIリクエストで十分です。エージェントを導入すべきなのは、複数ステップに及び、事前にすべてを定義しきれず、Claude自身が状況判断しながらアクションを選択する必要がある場合に限られます。
データの社外持ち出しが禁止されている(データレジデンシー要件)場合は、どれを選ぶべきですか?
Claude Agent SDKは自社のプロセス内で実行され、自社インフラ上のファイルに対して操作を行うため、Anthropic社がホストするサンドボックス環境で動作するManaged Agentsよりもデータレジデンシー要件をクリアしやすくなります。