CLAUDE LABEN
AUTO — Claude Code の auto モード既定化は明日8月14日です。Pro・Max・Team の各プランが対象になりますSUNSET — 旧 Workbench と実験的プロンプトツール API の廃止は8月17日で、残り4日となりましたCOWORK — Cowork がモバイルとウェブに広がり、セッションとファイルが端末をまたいで続きます。バックグラウンド実行とスケジュール実行、外出先での承認にも対応していますDESIGN — Claude Design が公開されました。ブランドに沿った資料やランディングページ、試作を1つの対話で組み立て、PDF・PPTX・Canva・HTML に書き出せますAUDIT — Compliance API の対象が Cowork と Claude Code に広がりました。デスクトップ・ウェブ・モバイル・CLI のセッションを Enterprise 向けベータでまとめて取得できますPRICE — Sonnet 5 のプロモ価格 $2/$10 per Mtok は8月31日までで、9月1日から $3/$15 per Mtok になりますAUTO — Claude Code の auto モード既定化は明日8月14日です。Pro・Max・Team の各プランが対象になりますSUNSET — 旧 Workbench と実験的プロンプトツール API の廃止は8月17日で、残り4日となりましたCOWORK — Cowork がモバイルとウェブに広がり、セッションとファイルが端末をまたいで続きます。バックグラウンド実行とスケジュール実行、外出先での承認にも対応していますDESIGN — Claude Design が公開されました。ブランドに沿った資料やランディングページ、試作を1つの対話で組み立て、PDF・PPTX・Canva・HTML に書き出せますAUDIT — Compliance API の対象が Cowork と Claude Code に広がりました。デスクトップ・ウェブ・モバイル・CLI のセッションを Enterprise 向けベータでまとめて取得できますPRICE — Sonnet 5 のプロモ価格 $2/$10 per Mtok は8月31日までで、9月1日から $3/$15 per Mtok になります
記事一覧/API & SDK
API & SDK/2026-06-29上級

中間ファイルを毎回作り直さない — Code Execution のコンテナを跨いで多段パイプラインの状態を保つ

Code Execution ツールのコンテナを container ID で再利用し、生成済みファイルや前処理結果を次のリクエストへ持ち越す設計を解説します。実行時間課金の落とし穴と container_expired の安全な扱い方まで、実装コード付きで整理しました。

Claude API116Code Executionコンテナ2パイプライン3コスト最適化26

プレミアム記事

最初に Code Execution ツールでデータ集計を任せたとき、私は同じ CSV を毎リクエストでアップロードし直していました。抽出して、整形して、集計して、グラフにする。工程を分けてリクエストを重ねるたびに、前のリクエストで作ったはずの中間ファイルが消えていて、また一からやり直しになる。個人開発で複数サイトの数値を自動でまとめている身としては、この「毎回ゼロから」が地味に実行時間を食っていることに、請求の内訳を見て気づきました。

原因は単純で、リクエストごとに別のコンテナが立ち上がっていたからです。Code Execution のコンテナは container パラメータで明示的に再利用しない限り、リクエストをまたいで状態を共有しません。逆に言えば、前のレスポンスが返してきた container ID を次のリクエストへ渡すだけで、作ったファイルも展開済みのデータも、そのまま引き継げます。今日はこの「コンテナを跨いで状態を保つ」設計と、その裏にある課金の実像、そして避けて通れない失効の扱いを、実装コードと一緒に整理します。

コンテナIDを渡すだけで、作ったファイルが次のリクエストに残る

仕組み自体はとても素直です。レスポンスには container オブジェクトが含まれていて、その id を次のリクエストの container パラメータに指定すると、同じワークスペースが再利用されます。

import anthropic
 
client = anthropic.Anthropic()  # APIキーは環境変数 ANTHROPIC_API_KEY から読み込まれます
 
# 1回目: ファイルを作って /tmp に保存する
response1 = client.messages.create(
    model="claude-opus-4-8",
    max_tokens=4096,
    messages=[
        {
            "role": "user",
            "content": "乱数を1つ生成して '/tmp/seed.txt' に書き込んでください",
        }
    ],
    tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)
 
# レスポンスから container ID を取り出す
container_id = response1.container.id
 
# 2回目: 同じコンテナを再利用して、さっき書いたファイルを読む
response2 = client.messages.create(
    container=container_id,  # ← これだけで状態が引き継がれます
    model="claude-opus-4-8",
    max_tokens=4096,
    messages=[
        {
            "role": "user",
            "content": "'/tmp/seed.txt' の値を読み、その2乗を計算してください",
        }
    ],
    tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)
 
print(response2)

ポイントは response1.container.id を保持して、2回目の container= に渡しているところだけです。これを忘れると、2回目は新しいコンテナで立ち上がり、/tmp/seed.txt は「そんなファイルはありません」になります。私が最初にハマったのは、まさにここでした。

何が「持ち越せて」何が「消える」のか

再利用と聞くと「全部そのまま続きから」と思いがちですが、引き継がれるものとそうでないものは分けて理解しておく必要があります。

ワークスペース上のファイルは残ります。/tmp や作業ディレクトリに書き出したものは、同じ container ID を指定する限りそのまま見えます。これが再利用の主役です。一方、会話のコンテキスト(messages 配列)は別物です。コンテナを再利用しても、前のやり取りの内容を Claude が覚えているわけではありません。状態は「ファイルとして残っている」だけなので、2回目のリクエストでは「どのファイルに何が入っているか」を改めて伝える必要があります。

もう一つ注意したいのが、Python の REPL 上の変数(メモリ上の状態)です。これは基本のツールバージョンでは引き継がれません。インメモリの変数まで保持したい場合は、REPL 状態の永続化に対応した新しいツールバージョン(code_execution_20260120 以降、Opus 4.5+ / Sonnet 4.5+ で利用可)が必要になります。ただ実務では、変数を抱え込むより節目ごとに中間結果をファイルへ書き出す方が、失効や再実行に強い設計になります。私はこの工程を、出力を必ずファイルへ落とす形に統一することを推奨します。実体験として、その方が失効や再実行にずっと強いからです。

対象同じコンテナ再利用で引き継がれるか
ワークスペースに書き出したファイル(/tmp 等)引き継がれる
Files API でマウントした入力ファイルコンテナ上に残る(再マウント不要)
Python の REPL 変数(メモリ状態)基本版では引き継がれない(20260120 以降で対応)
会話の文脈(messages の中身)引き継がれない(毎回伝え直す)

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

この記事の続きを読む

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

この記事で得られること
container.id を渡してコンテナを再利用し、生成済みファイルと前処理結果を次のリクエストへ持ち越す具体的な実装
「ファイル同梱は呼ばれなくても実行時間課金」という見落としやすい課金トラップと、再利用で実行時間を削る考え方
container_expired を握りつぶさず、ソースから安全に作り直す防御パターン(30日失効・90秒セル上限を踏まえた段階設計)
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

API & SDK2026-08-01
会話の途中でツールを差し替える — プロンプトキャッシュを守るツールレジストリの設計
ターン間でツールを追加・削除できるようになった一方、ツール定義はキャッシュプレフィックスの最前列にあります。12種類の変更を指紋で実測し、安定コアと揮発テールに分けるレジストリ設計とガード実装をまとめました。
API & SDK2026-07-02
9月1日に単価は1.5倍へ戻る — Sonnet 5 導入価格の期限を織り込む実効日付きコスト予測
Claude Sonnet 5 の導入価格 $2/$10 は 2026-08-31 で終わり、9月からは $3/$15 になります。静的な単価表のままでは月次予測が3割ずれる問題を、有効期間つき単価テーブルと予測シミュレータで解く設計をまとめました。
API & SDK2026-07-01
Claude API のドキュメント抽出が「自信満々に間違える」とき — 沈黙する誤りを不変条件で捕まえる運用メモ
請求書や契約書の構造化抽出で一番怖いのは、クラッシュではなく「スキーマも通り信頼度も高いのに値だけ間違っている」沈黙の誤りです。不変条件・二段抽出・フィールド単位の誤り率で運用する実装メモを共有します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →