CLAUDE LABEN
FORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられていますFORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられています
記事一覧/API & SDK
API & SDK/2026-04-26上級

Claude API のReplay駆動テスト — 本番応答を録画して回帰テストを成立させる設計パターン

Claude APIの非決定的な応答を録画・再生してE2Eテストを安定運用するReplay駆動テストの本番設計。カセット形式・差分検証・CI統合まで実装パターンで解説します。

api-sdk13testing5production87claude-api81ci-cd8

プレミアム記事

「テストが LLM の気まぐれで毎回違う結果を返してきて、CI が落ちているのか本当に壊れているのか分からない」— Claude API を本番投入したチームの多くが、この壁にぶつかります。私もマルチエージェントの本番システムを運用していて、リファクタ後にテストが赤くなった原因を半日追いかけた末に「単に Claude が前回と少し違う言い回しをしただけだった」と気づいたことが何度もあります。

ここではRuby の VCR や Python の VCR.py、JavaScript の Polly.js が確立した「カセット(録画)方式」のテストパターンを、Claude API の Messages・Streaming・Tool Use の全シナリオに適用する設計と実装を扱います。単なる API モックではなく、本物の Claude 応答を一度だけ呼び出して保存し、CI ではそれを再生します。この仕組みが入ると、テストは決定的になり、CI コストはゼロに近づき、本番障害の再現も可能になります。

なぜ普通のモックでは足りないのか

Claude API のテストで最初に思いつくのは responses.createunittest.mock で差し替える方法でしょう。私もそこから始めましたが、3 ヶ月運用して限界を感じました。理由は3つあります。

1つ目は「モックの応答が本物と乖離する」問題です。 Claude のレスポンス形式は頻繁に拡張されます。stop_reason の新しい値、content 配列の新ブロック型、usage オブジェクトのフィールド追加。手書きのモックは本物の応答を写し取っただけのスナップショットなので、SDK のバージョンアップや新機能リリースに追従できません。テストは緑のまま本番だけ壊れる、という最悪のパターンに陥ります。

2つ目は「Tool Use のフローが組み立てづらい」問題です。 Claude にツールを使わせるテストでは、API が「このツールを呼んでください」と返した後、ツール結果を渡してさらに API を呼ぶ、という最低2往復のシーケンスが発生します。これを手書きモックで組み立てると、tool_use_id の一致、role の順序、content ブロックの種類など、間違いやすい箇所が大量に出てきます。

3つ目は「Streaming の SSE イベント列を再現するのが面倒」です。 message_startcontent_block_startcontent_block_deltacontent_block_stopmessage_deltamessage_stop を正しい順序で吐き出すモックを書くより、本物のストリームを録画してそのまま再生する方がはるかに信頼できます。

カセット方式は、これら全ての問題を「最初に1回だけ本物の API を叩いて、その応答を JSON または JSONL で保存し、テスト時はそれをそのまま返す」というシンプルな仕組みで解決します。

カセット方式の全体設計

実装に入る前に、設計の骨格を共有します。私が本番運用しているシステムでは、以下の3層構造で組み立てています。

第1層は「カセットストア」です。テストごとに固有の名前を持つ .json または .jsonl ファイルを tests/cassettes/ 配下に保存します。1テスト1カセットを徹底することで、どのテストが何を録画したかが grep で追えるようになります。

第2層は「インターセプター」です。anthropic.Anthropic クライアントの messages.create を実行時に差し替え、カセットが存在すれば再生、存在しなければ実 API を呼んで結果を保存します。record_mode というフラグで once(無ければ録画)、new_episodes(追加録画)、none(再生のみ。録画が無ければ失敗)の3モードを切り替えます。

第3層は「リクエストマッチャー」です。同じカセット内に複数のリクエストが録画されている場合、どの録画と現在のリクエストを照合するかのロジックです。messages 配列のハッシュ、model 名、tools の構成などを組み合わせてキーを作ります。

この3層が分離されていると、後からカセットフォーマットを変えたり、リクエスト一致の基準を緩めたりするときに、テスト側を書き換えずに済みます。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
LLM応答の揺らぎでCIが赤になり続けて疲弊していた人が、録画した応答を再生する仕組みで安定したテストを書けるようになります
VCR.py や Polly.js のカセットパターンを Claude API の Messages・Streaming・Tool Use 全てに適用する具体的な実装コードを習得できます
本番障害が発生したときに当該リクエストを再現してデバッグできる仕組みが手に入り、再現できないバグに振り回されなくなります
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

API & SDK2026-04-12
Claude API アプリケーションのテスト戦略 — AI出力の品質をユニットテスト・統合テスト・E2Eテストで保証する
Claude APIを組み込んだアプリケーションで「AIの出力が変わってテストが壊れる」問題を根本解決する。モック・セマンティックアサーション・スナップショットテストを組み合わせた実践的テスト設計パターン。
API & SDK2026-04-01
Claude API × Supabase でプロダクション対応AIアプリを構築する — pgvector RAG・リアルタイム同期・Row Level Security 統合の実装パターン
Claude API と Supabase を組み合わせてプロダクション対応のAIアプリを構築する実践ガイド。pgvector による RAG・リアルタイム同期・Row Level Security でマルチテナント対応のセキュアなAIアプリを実装する。
API & SDK2026-03-27
Claude API LLM評価パイプライン構築ガイド — Claude-as-Judge・プロンプトA/Bテスト・品質スコアリングの実装パターン
Claude API を使った LLM アプリケーション評価パイプラインの設計と実装。Claude-as-Judge、プロンプト A/B テスト、品質スコアリング、回帰テストの本番実装パターンを扱います。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →