【Claude Code 連載 第76回】Agent SDK の概要 — Claude Code をライブラリとして使う

スポンサーリンク
【Claude Code 連載 第76回】Agent SDK の概要 — Claude Code をライブラリとして使う 用語解説
【Claude Code 連載 第76回】Agent SDK の概要 — Claude Code をライブラリとして使う
この記事は約11分で読めます。
よっしー
よっしー

こんにちは。よっしーです(^^)

スポンサーリンク

背景

この連載では、Claude Codeの公式ドキュメントを1ページずつ読み解いていきます。公式ドキュメントは情報が網羅されている分、「結局どの機能を、どんな場面で使えばいいのか」は自分で考える必要があり、読むのに意外と時間がかかります。そこで、私が実務で使うために読み込んだ内容を「使う場面→実例コード」の順に整理して残していくことにしました。専門家の解説というより、一次情報を読んだ記録です。推測や動作を確認していない部分には、その都度そう書きます。

1. 一言でいうと何か

このページは、Claude Code の中身をライブラリとして自分のアプリに組み込む——Agent SDK の入口です。

前回(第75回)が「CLI として claude -p で呼ぶ」話だったのに対し、今回は「Python / TypeScript のコードから直接動かす」話。第75回が明示的に委譲していた先が、ここです。

まずエージェントの定義が置かれています。

エージェントは、独自のステップを計画し、ファイルを読み取る、コマンドを実行する、またはコードを編集するツールを呼び出すことでタスクを完了するアプリケーションです。

そして SDK が提供するもの。Agent SDK は、Claude Code を強化する同じツール、エージェントループ、およびコンテキスト管理を提供し、Python と TypeScript でプログラム可能です。

第71回で見た「agentic ハーネス」——モデルに手足と記憶と作業場を与える枠組み——が、そのまま部品として配られている、という位置づけです。

言語の制約が重要です。**SDK は Python と TypeScript のライブラリとしてのみ利用可能です。**Go でも Rust でも Java でも使えません。ただし逃げ道は示されています。別の言語から同じエージェントループを駆動するには、-p フラグと --output-format json を使用して CLI をサブプロセスとして実行してください。

**Python / TypeScript 以外なら、第75回のやり方でプロセスとして呼べ。**これが公式の回答です。

2. どういう場面で役立つか

このページの中心は**「4つのうちどれを使うか」**の判断です。原文の表を順に見ていきます。

シーン1:ツールループを自分で書きたくない

ツールループを自分で実装せずにエージェントを構築しているなら Agent SDK。理由はエージェントループを実行する Python または TypeScript ライブラリです。

「Claude にツールを渡して、呼ばれたら実行して、結果を返して、また呼ぶ」——この往復を自前で書かずに済みます。

シーン2:ターミナルで日常的に使う

ターミナルからの対話的な開発またはワンオフタスクの実行なら Claude Code CLI。日常的な対話的使用のために構築されたターミナルインターフェース。

シーン3:API を直接叩きたい

API を直接呼び出し、ツールループを自分で実装しているなら Client SDK。Claude Code ではなく Anthropic API への直接アクセス。ツールループを自分で実装します。

シーン4:インフラを持ちたくない

独自のサンドボックスまたはセッションインフラストラクチャを管理せずに、長時間実行または非同期エージェントを実行しているなら Managed Agents。ホストされた REST API で、Agent SDK とは別の製品です。Anthropic がエージェントとサンドボックスを実行します。

Managed Agents は Agent SDK ではない——別製品だと明記されている点は押さえておくべきです。

不要・向かないケース

  • **Python / TypeScript 以外で書きたい。**SDK はありません。CLI をサブプロセスで呼びます。
  • **claude.ai のログインやレート制限をエンドユーザーに使わせたい。**ここが最も重要な制約です(後述)。
  • **自社製品を「Claude Code」として見せたい。**ブランドガイドラインで明確に禁止されています(後述)。
  • **サンドボックスやセッション基盤を自分で持ちたくない。**それは Managed Agents の領分で、Agent SDK ではありません。

3. 判断軸と制約の解説

**このページには読者向けのコードブロックが1つもありません。**概要ページであり、実装は下位ページ(クイックスタート、Python、TypeScript)に委ねられています。ここでは表と制約を整理します。

前提:このページ自体にバージョン要件の記載はありません。

4つの選択肢

対象使用するツール理由
ツールループを自分で実装せずにエージェントを構築しているAgent SDKエージェントループを実行する Python または TypeScript ライブラリです
ターミナルからの対話的な開発またはワンオフタスクの実行Claude Code CLI日常的な対話的使用のために構築されたターミナルインターフェース
API を直接呼び出し、ツールループを自分で実装しているClient SDKClaude Code ではなく Anthropic API への直接アクセス。ツールループを自分で実装します
独自のサンドボックスまたはセッションインフラストラクチャを管理せずに、長時間実行または非同期エージェントを実行しているManaged Agentsホストされた REST API で、Agent SDK とは別の製品です。Anthropic がエージェントとサンドボックスを実行します

軸を整理すると2つです。ツールループを自分で書くか(Client SDK)/書かないか(Agent SDK)。そして実行環境を自分で持つか(Agent SDK)/持たないか(Managed Agents)。

この連載の文脈で言えば、第71回で見た agentic ループを誰が実装し、どこで走らせるかの分岐です。

SDK で使える Claude Code 機能

連載でこれまで個別に扱ってきた機能が、そのまま SDK に来ています。

機能できること
組み込みツールファイルの読み取り、書き込み、編集、コマンド実行、ウェブ検索(第62回)
Hooksエージェントライフサイクルの重要なポイントでカスタムコードを実行(第11回)
Subagents特定のサブタスク用に特化したエージェントを生成(第9回)
MCPModel Context Protocol を介して外部ツールとデータソースを接続(第8回)
権限どのツールが自動的に実行されるか、どのツールが承認を必要とするかを制御(第16回)
セッション複数の交換にわたってコンテキストを維持し、後で再開またはフォーク(第68回)
Skills、コマンド、メモリプロジェクトの .claude/ と ~/.claude/ から自動的に読み込み、Claude Code と同じ(第7・10回)
PluginsSkills、エージェント、hooks、MCP サーバーをパッケージ化し、ローカルパスで読み込み(第61回)

7行目の一文が、この表で最も情報量があります。プロジェクトの .claude/ と ~/.claude/ から自動的に読み込み、Claude Code と同じ。

つまり**CLAUDE.md もスキルもカスタムコマンドも、SDK から動かしたときに同じように効く。**第75回で見たベアモード(--bare)が「それらを読まない」モードだったことと対になります。SDK は既定で読む側です。

Plugins のローカルパスで読み込みという限定も注目点です。第56・57回で扱ったマーケットプレイス経由のインストールではなく、パス指定である旨が明記されています。

認証の制約 — このページで最も重要な一文

注記として置かれていますが、事業上の判断に直結します。

事前に承認されていない限り、Anthropic は、Agent SDK 上に構築されたエージェントを含む、サードパーティの開発者が claude.ai ログインまたはレート制限を提供することを許可していません。代わりに、クイックスタートで説明されている API キー認証方法を使用してください。

意味するところは明確です。自分のアプリのユーザーに「Claude のサブスクリプションでログインしてもらう」形は、事前承認なしには認められない。****API キー認証を使います。

第74回のアーティファクトが「claude.ai サインイン必須」だったのと、ちょうど裏返しの関係になっています。CLI を人が使うならサブスクリプション、SDK で製品を作るなら API キー——という住み分けです。

第75回のベアモードで「OAuth 認証情報またはシステムキーチェーンを読み込まない」と書かれていたのも、同じ方向を向いた設計だと思います(この対応づけは筆者の解釈で、原文は関連を述べていません)。

ブランドガイドライン — 連載で初の話題

技術ドキュメントとしては珍しく、名乗り方のルールが定義されています。**Claude Agent SDK を統合するパートナーの場合、Claude ブランドの使用はオプションです。**使う場合のルールがこれです。

許可されているもの。

  • 「Claude Agent」(ドロップダウンメニューに推奨)
  • 「Claude」(既に「Agents」というラベルが付いたメニュー内の場合)
  • 「{YourAgentName} Powered by Claude」(既存のエージェント名がある場合)

許可されていないもの。

  • 「Claude Code」または「Claude Code Agent」
  • Claude Code ブランドの ASCII アートまたは Claude Code を模倣する視覚要素

原則が一文でまとめられています。製品は独自のブランドを維持し、Claude Code または任意の Anthropic 製品のように見えるべきではありません。

「Claude を使っている」とは言えるが、「Claude Code である」とは言えない。あの起動時の ASCII アートを真似るのも駄目、と名指しされているのが具体的です。判断に迷う場合はAnthropic 営業チームに連絡とあります。

ライセンス

Claude Agent SDK の使用は、Anthropic の商用利用規約によって管理されます。これは、Claude Agent SDK を使用して、独自のカスタマーおよびエンドユーザーに利用可能にする製品およびサービスを強化する場合を含みます。

例外規定も付いています。ただし、特定のコンポーネントまたは依存関係が、そのコンポーネントの LICENSE ファイルに示されているように異なるライセンスの対象である場合を除きます。

商用製品に組み込む用途が明示的に想定されている一方で、依存コンポーネントは個別に確認が要る、という構造です。

更新と不具合の追跡先

SDK は GitHub 上で公開されており、追跡先が明示されています。

目的TypeScriptPython
変更ログclaude-agent-sdk-typescript の CHANGELOG.mdclaude-agent-sdk-python の CHANGELOG.md
バグ報告同リポジトリの Issues同リポジトリの Issues

SDK の更新、バグ修正、および新機能の完全な変更ログを表示します。——公式ドキュメントより CHANGELOG のほうが早い、ということでもあります。

この先に続くページ

概要ページなので、次に読む先が列挙されています。連載としてはこれが今後の執筆候補リストにもなります。

  • クイックスタート:SDK をインストールし、API キーを設定し、既存のコード内のバグを見つけて修正するエージェントを構築する
  • マイグレーションガイド:Claude Code SDK パッケージから Agent SDK へマイグレーションする
  • エージェントループ:Claude がどのように計画を立て、ツールを呼び出し、タスクが完了したかを判断するか
  • TypeScript SDK / Python SDK:完全な API リファレンスと例
  • エージェントの例:ローカル開発用のデモアプリ(GitHub)
  • エージェントハーネス設計:Claude Code チームが多くのサブエージェントを一度にオーケストレーションするために動的ワークフローをどのように使用するか(ブログ)

最後の1つは第67回(動的ワークフロー)の背景にあたります。作った側がどう使っているかを書いたものなので、ワークフローを本格的に使うなら読む価値があると思います(この評価は筆者のものです)。

なお**「Claude Code SDK」から「Agent SDK」への名称変更**があったことが、マイグレーションガイドの存在から読み取れます。古い記事や記憶で claude-code-sdk を探している場合は、ここで切り替わったと考えられます。

4. まとめ + 次回予告

  • Agent SDK はClaude Code と同じツール・エージェントループ・コンテキスト管理を、Python と TypeScript のライブラリとして提供するもの。
  • 他言語には SDK がない。その場合はclaude -p --output-format json をサブプロセスで呼ぶ(第75回)。
  • 選択は4つ——ツールループを書きたくない=Agent SDK/ターミナルで対話=CLI/API を直接+ループ自作=Client SDK/実行基盤も任せたい=Managed Agents。
  • Managed Agents は Agent SDK とは別製品(ホストされた REST API)。
  • SDK では組み込みツール・Hooks・Subagents・MCP・権限・セッション・Skills/コマンド/メモリ・Pluginsが使える。
  • **.claude/ と ~/.claude/ から自動的に読み込み、Claude Code と同じ。**CLAUDE.md もスキルも効く。Plugins はローカルパスで読み込み。
  • 最重要の制約:事前承認がない限り、サードパーティ開発者が claude.ai ログインやレート制限をエンドユーザーに提供することは許可されていない。****API キー認証を使う。
  • **ブランドは「Claude Agent」「Claude」「{名前} Powered by Claude」は可、「Claude Code」「Claude Code Agent」は不可。**ASCII アートや Claude Code を模倣する視覚要素も不可。
  • ライセンスはAnthropic の商用利用規約。ただし依存コンポーネントは個別の LICENSE を確認。
  • 更新と不具合はGitHub の claude-agent-sdk-typescript / claude-agent-sdk-python を見る。
  • 「Claude Code SDK」からの改名があり、マイグレーションガイドが用意されている。

次回予告(暫定):Agent SDK の中核である**エージェントループ(agent-sdk/agent-loop)**を取り上げ、Claude がどう計画を立て、ツールを呼び、タスクの完了を判断するのかを扱う予定です。

よっしー
よっしー

何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。

それでは、また明日お会いしましょう(^^)

コメント

タイトルとURLをコピーしました