Claude Code SDKは、AIエージェントを「対話ツール」から「プログラマブルなインフラ」に昇格させる技術です。TypeScript SDKはWebアプリケーションやCI/CDとの統合に、Py
Claude Code SDKは、AIエージェントを「対話ツール」から「プログラマブルなインフラ」に昇格させる技術です。TypeScript SDKはWebアプリケーションやCI/CDとの統合に、Py
ブログ目次
HubSpot導入、AI活用、CRM整備、業務効率化までをまとめて支援しています。記事で気になったテーマを、そのまま相談ベースで整理できます。
Claude Code SDKを使うと、対話型のターミナル操作を超えて、PythonやTypeScriptのプログラムからAIエージェントを直接呼び出せます。 ヘッドレスモードと組み合わせることで、CI/CDパイプライン、定期バッチ処理、カスタムWebアプリケーションなど、あらゆる自動化シナリオにClaude Codeを組み込めます。
Claude Code SDKやヘッドレスモードを使ってAIワークフローを構築したいエンジニアに向けた記事です。
Claude Code SDKは、Claude Codeの機能をプログラムから呼び出すためのインターフェースです。通常のClaude Codeはターミナルで対話的に操作しますが、SDKを使えばPythonやTypeScriptのコードから直接AIエージェントを起動し、結果を受け取れます。
| SDK | 言語 | インストール | 主な用途 |
|---|---|---|---|
| TypeScript SDK | TypeScript/JavaScript | @anthropic-ai/claude-code (npm) |
Node.jsアプリ、Webサービス、CI/CD |
| Python SDK | Python | claude-code-sdk (PyPI) |
データ分析、バッチ処理、MLパイプライン |
CLI(--printモード) |
任意(シェル経由) | Claude Code本体 | シンプルな自動化、シェルスクリプト |
SDKはAnthropicが公式に提供しており、Claude Codeと同じ認証情報・設定ファイルを利用します。既存のClaude Code環境があれば、追加の認証設定なしでSDKを使い始められます。
TypeScript SDKは、Node.jsプロジェクトに最も自然に統合できる方法です。
npm install @anthropic-ai/claude-code
import { claude } from "@anthropic-ai/claude-code";
const response = await claude({
prompt: "src/ディレクトリのTypeScriptファイルを分析して、型定義の改善点を報告してください",
options: {
maxTurns: 10,
},
});
console.log(response.stdout);
claude()関数は非同期で実行され、Claude Codeのセッションを1つ起動します。promptに指示を渡すと、Claude Codeがファイルシステムの読み書き、コマンド実行などのツールを使いながらタスクを遂行し、結果を返します。
処理の進捗をリアルタイムで受け取りたい場合は、ストリーミングモードを使います。
import { claude, ClaudeEvent } from "@anthropic-ai/claude-code";
for await (const event of claude({
prompt: "package.jsonの依存関係を分析して、セキュリティリスクのあるパッケージを特定してください",
options: {
maxTurns: 15,
},
})) {
if (event.type === "text") {
process.stdout.write(event.content);
}
}
ストリーミングモードでは、Claude Codeが思考・ツール実行・テキスト出力を行うたびにイベントが発生します。UIにリアルタイムで進捗を表示したい場合に有効です。
同じコンテキストで複数の指示を送りたい場合は、セッションIDを引き継ぎます。
// 最初の呼び出し
const first = await claude({
prompt: "プロジェクト構成を分析してください",
options: { maxTurns: 5 },
});
// 同じセッションで追加の指示
const second = await claude({
prompt: "先ほどの分析を踏まえて、リファクタリング計画を作成してください",
options: {
maxTurns: 10,
sessionId: first.sessionId,
},
});
セッションを引き継ぐことで、前回の会話コンテキストが保持されます。複数ステップのワークフローを構築する際に重要な機能です。
Python SDKは、データ分析やMLパイプラインとの統合に適しています。
pip install claude-code-sdk
import asyncio
from claude_code_sdk import claude, ClaudeOptions
async def main():
result = await claude(
prompt="data/ディレクトリのCSVファイルを分析して、異常値を検出してください",
options=ClaudeOptions(max_turns=10),
)
print(result.stdout)
asyncio.run(main())
Python SDKは非同期(asyncio)ベースで動作します。既存の非同期アプリケーションにも自然に統合できます。
import asyncio
from claude_code_sdk import claude, ClaudeOptions
async def main():
async for event in claude(
prompt="テストカバレッジを分析してください",
options=ClaudeOptions(max_turns=10),
):
if event.type == "text":
print(event.content, end="", flush=True)
asyncio.run(main())
--printフラグ)--printフラグ)" style="width:100%;max-width:1200px;height:auto;margin:24px 0;border-radius:12px;box-shadow:0 4px 16px rgba(0,0,0,0.08);"/>
SDKを使わずに、CLIから直接非対話型で実行する方法もあります。--print(短縮形: -p)フラグを付けると、Claude Codeはユーザーの入力を待たずにタスクを実行し、結果を標準出力に返します。
# 単発実行
**claude -p "このリポジトリのREADME.mdを要約してください"**
claude -p "このリポジトリのREADME.mdを要約してください"
# パイプラインでの利用
cat error.log | claude -p "このエラーログを分析して、根本原因を特定してください"
# JSON出力
claude -p "src/の構成を分析してください" --output-format json
#!/bin/bash
# 毎朝のコードレビュー自動化
RESULT=$(claude -p "昨日のコミット(git log --since=yesterday)をレビューして、問題点があれば報告してください" --max-turns 15)
echo "$RESULT" > /tmp/daily-review.md
--printモードは、SDKを導入するほどではない軽量な自動化に最適です。シェルスクリプト、cron、GitHub Actionsなど、シェルコマンドを実行できる環境ならどこでも使えます。
プルリクエストが作成されるたびに、Claude Codeが自動でコードレビューを実行するパイプラインを構築できます。
# GitHub Actions例
name: AI Code Review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: AI Review
run: |
claude -p "このプルリクエストの変更をレビューしてください。
セキュリティリスク、パフォーマンス問題、型安全性の観点で確認してください。" \
--print --max-turns 20
Anthropicの公開事例によると、GitHubのようなプラットフォーム企業では、CI/CDにAIコードレビューを組み込むことで、レビューサイクルを大幅に短縮しています。
コードベースの変更に合わせて、ドキュメントを自動更新するバッチ処理を構築できます。
import { claude } from "@anthropic-ai/claude-code";
async function updateDocs() {
// Step 1: 変更検出
const changes = await claude({
prompt: "git diff HEAD~5 で変更されたAPIエンドポイントを一覧化してください",
options: { maxTurns: 5 },
});
// Step 2: ドキュメント更新
await claude({
prompt: `以下の変更に基づいて、docs/api-reference.mdを更新してください:\n${changes.stdout}`,
options: {
maxTurns: 15,
sessionId: changes.sessionId,
},
});
}
社内ツールにAIアシスタント機能を組み込む場合、TypeScript SDKをバックエンドから呼び出します。
import express from "express";
import { claude } from "@anthropic-ai/claude-code";
const app = express();
app.post("/api/analyze", async (req, res) => {
const { query, projectPath } = req.body;
const result = await claude({
prompt: query,
options: {
maxTurns: 10,
cwd: projectPath,
},
});
res.json({ result: result.stdout });
});
この方法なら、非エンジニアのチームメンバーもWebブラウザからAIエージェントの機能を利用できます。
SDK・CLIで使える主要なオプションを整理します。
| オプション | TypeScript SDK | Python SDK | CLI (--print) |
説明 |
|---|---|---|---|---|
| 最大ターン数 | maxTurns |
max_turns |
--max-turns |
エージェントの最大行動回数 |
| 作業ディレクトリ | cwd |
cwd |
実行時のカレントディレクトリ | ファイル操作の基準パス |
| セッション継続 | sessionId |
session_id |
--session-id |
前回セッションの引き継ぎ |
| 出力形式 | イベントストリーム | イベントストリーム | --output-format json |
出力のフォーマット |
| 許可ツール | allowedTools |
allowed_tools |
--allowed-tools |
使用可能なツールの制限 |
| システムプロンプト | systemPrompt |
system_prompt |
--system-prompt |
追加のシステムプロンプト |
| モデル指定 | model |
model |
--model |
使用するモデルの指定 |
SDKは他のClaude Code機能と組み合わせることで、さらに強力になります。
プロジェクトに定義したカスタムコマンドは、SDK経由でも利用できます。
const result = await claude({
prompt: "/review src/components/",
options: { maxTurns: 15 },
});
MCP(Model Context Protocol)で接続した外部ツールも、SDK経由のセッションで利用可能です。HubSpot、Slack、データベースなどの外部サービスと連携したAI自動化パイプラインを構築できます。こうしたAI活用に関心のある方は、経営データの可視化やコンテンツマーケティングの効率化の詳細もあわせてご覧ください。
Hooksを設定しておけば、SDK経由の実行でもツール呼び出し前後にカスタムスクリプトを挟めます。セキュリティチェックやログ記録の自動化に有効です。
SDKをプロダクション環境で使う際の注意点を整理します。
SDKはClaude Codeと同じ認証情報を使います。CI/CD環境では、環境変数 ANTHROPIC_API_KEY を設定してください。APIキーはシークレットストア(GitHub Secrets、AWS Secrets Managerなど)で管理し、コードにハードコードしないことが鉄則です。
allowedToolsオプションで、エージェントが使えるツールを制限できます。自動化パイプラインでは、必要最小限のツールのみ許可することで、意図しないファイル変更やコマンド実行を防止できます。
const result = await claude({
prompt: "コードを分析してください",
options: {
maxTurns: 10,
allowedTools: ["Read", "Glob", "Grep"], // 読み取り専用
},
});
maxTurnsを適切に設定し、無限ループを防止してください。バッチ処理では、1タスクあたりのターン数上限を設けることで、APIコストの暴走を防げます。
Claude Code SDKは、AIエージェントを「対話ツール」から「プログラマブルなインフラ」に昇格させる技術です。TypeScript SDKはWebアプリケーションやCI/CDとの統合に、Python SDKはデータ分析やMLパイプラインに、CLIの--printモードはシェルスクリプトによる軽量自動化に、それぞれ最適です
実践にあたっては、以下のポイントを押さえておくことが大切です。
--printモードで小さな自動化から始め、ユースケースが広がったらSDKへの移行を検討するのが実務的なアプローチですはい、必要です。ローカル環境では通常のClaude Codeの認証情報(claude loginで設定済みのもの)がそのまま使えます。CI/CDなどのサーバー環境では、環境変数 ANTHROPIC_API_KEY にAnthropicのAPIキーを設定してください。Maxプランのユーザーは、ローカル環境であればAPIキーなしでSDKを利用できます。
--printモードはどちらを使うべきですか?自動化の規模と複雑さで判断してください。シェルスクリプトで完結する単純なタスクなら--printモードで十分です。複数ステップのワークフロー、セッション管理、ストリーミング出力が必要な場合はSDKを選択してください。GitHub Actionsのような既存のCI/CD環境に組み込む場合も、--printモードが手軽です。
はい、有効です。SDK経由のセッションでも、cwdで指定したディレクトリの.claude/CLAUDE.mdが読み込まれ、カスタムコマンドも利用できます。つまり、対話型セッションで確立したワークフローを、そのまま自動化パイプラインに移行できます。MCP設定もプロジェクトの.claude/settings.jsonから読み込まれます。
株式会社StartLinkは、事業推進に関わる「販売促進」「DXによる業務効率化(ERP/CRM/SFA/MAの導入)」などのご相談を受け付けております。 サービスのプランについてのご相談/お見積もり依頼や、ノウハウのお問い合わせについては、無料のお問い合わせページより、お気軽にご連絡くださいませ。
株式会社StartLink 代表取締役。累計150社以上のHubSpotプロジェクト支援実績を持ち、Claude CodeやHubSpotを軸にしたAI活用支援・経営基盤AXのコンサルティング事業を展開。
HubSpotのトップパートナー企業や大手人材グループにて、エンタープライズCRM戦略策定・AI戦略ディレクションを経験した後、StartLinkを創業。現在はCRM×AIエージェントによる経営管理支援を専門とする。