◉CLAUDE LABEN
●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り45日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り45日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました
記事一覧/Claude Code
⟐ Claude Code/2026-05-05上級

Claude Code に拡張思考を組み込む 2026

Claude 4 の拡張思考(Extended Thinking)を Claude Code と API で活用する実践ガイド。思考バジェットの設定、ストリーミング処理、本番環境での適切な使いどころを解説します。

拡張思考Extended Thinking3Claude Code265Claude 4API27

「なぜこの答えになったのか」が見えると、AIへの信頼感が大きく変わります。

Claude 4 に搭載された拡張思考(Extended Thinking)は、モデルが答えを出すまでの推論プロセスを開示する機能です。ただ「使える」というだけでなく、実際に本番コードに組み込んだときに「どの場面で役立つか」「どこに落とし穴があるか」を知っておかないと、コストだけが膨らむ結果になりかねません。

ここでは拡張思考の基本的な使い方から、Claude Code での実践的な活用まで、実際に手を動かしながら学べるように整理しました。

拡張思考とは(何が変わるのか

通常の Claude API レスポンスでは、最終的な回答テキストだけが返ってきます。拡張思考を有効にすると、回答の前に thinking タイプのブロックが追加され、そこにモデルが辿った推論の過程が記録されます。

これは単なる「説明の追加」ではありません。モデルが思考プロセスを持てるようになることで、複雑な問題に対する答えの精度自体が上がります。特に数学的推論、多段階の判断が必要なコードレビュー、競合する要件の整理といったタスクで、その差が出やすいです。

ただし、思考プロセスはトークンを消費します。budget_tokens の設定次第でコストが大きく変わるため、使いどころの判断が重要です。

基本的な実装

import anthropic
 
client = anthropic.Anthropic()
 
response = client.messages.create(
    model="claude-opus-4-6",  # 拡張思考は Opus 4 / Sonnet 4 で利用可能
    max_tokens=16000,
    thinking={
        "type": "enabled",
        "budget_tokens": 10000  # 思考に使えるトークン上限
    },
    messages=[{
        "role": "user",
        "content": "このコードのセキュリティ脆弱性を全て指摘してください:\n\n```python\ndef authenticate(username, password):\n    query = f'SELECT * FROM users WHERE name={username} AND pass={password}'\n    return db.execute(query)\n```"
    }]
)
 
# レスポンスブロックを分類して処理
for block in response.content:
    if block.type == "thinking":
        print("=== 思考プロセス ===")
        print(block.thinking)
        print()
    elif block.type == "text":
        print("=== 回答 ===")
        print(block.text)

budget_tokens は max_tokens の上限内に収まるように設定します。上記の例では max_tokens=16000 に対して budget_tokens=10000 としているため、思考に最大1万トークン、回答に最大6千トークンが割り当てられます。

ストリーミングとの組み合わせ

長い思考プロセスをリアルタイムで受け取る場合はストリーミングが実用的です。

import anthropic
 
client = anthropic.Anthropic()
 
with client.messages.stream(
    model="claude-sonnet-4-6",
    max_tokens=8000,
    thinking={
        "type": "enabled",
        "budget_tokens": 5000
    },
    messages=[{
        "role": "user",
        "content": "この要件を満たす最適なデータベーススキーマを設計してください: [要件の詳細]"
    }]
) as stream:
    current_block_type = None
    
    for event in stream:
        # ブロックの開始イベントでタイプを記録
        if hasattr(event, 'type') and event.type == 'content_block_start':
            if hasattr(event.content_block, 'type'):
                current_block_type = event.content_block.type
                if current_block_type == 'thinking':
                    print("\n[思考中...]", flush=True)
                elif current_block_type == 'text':
                    print("\n[回答]", flush=True)
        
        # テキストデルタを出力
        elif hasattr(event, 'type') and event.type == 'content_block_delta':
            if hasattr(event.delta, 'thinking'):
                print(event.delta.thinking, end='', flush=True)
            elif hasattr(event.delta, 'text'):
                print(event.delta.text, end='', flush=True)

思考ブロックのストリーミングは、「AIが今どこまで考えているか」をユーザーに見せる UX として活用できます。特に時間がかかるタスクでの離脱防止に効果的です。

budget_tokens の設定指針

budget_tokens は「多ければ多いほど良い」わけではありません。タスクの複雑さに応じた設定が、コストと品質の最適なバランスを生みます。

1,000〜3,000トークン: 単純な質問の整理、短いコードの修正 5,000〜10,000トークン: 中程度の複雑さのコード設計、要件整理 15,000〜30,000トークン: 大規模システム設計、複雑な数学的問題

過大な budget_tokens を設定しても、モデルが必要以上の思考をするわけではありません。実際には「必要な思考量」で完了します。ただしトークン消費の上限が増えるため、予期せぬコスト増加を避けるために適切な上限設定を心がけてください。

Claude Code での実践的な活用シーン

Claude Code(CLI ツール)から拡張思考を直接制御する方法はまだ限られていますが、API を経由した活用は今すぐ実践できます。以下は実際に効果を感じているシーンです。

本番デプロイ前のコードレビュー

「このPRをマージしていいか」という最終判断を Claude に委ねるとき、拡張思考を有効にすると「なぜ問題なのか」の説明が格段に充実します。表面的なバグだけでなく、設計上の問題や将来の拡張性への懸念も丁寧に言語化してくれます。

複雑な要件定義のレビュー

複数の利害関係者からの要件が競合しているとき、拡張思考モデルに整理を任せると、「このトレードオフをどう考えたか」という判断プロセスが見えて、チーム内の合意形成に役立ちます。

ガイドの前提知識として、Claude Code のモデル選択戦略とトークン使用量の最適化管理を参照していただくと、コスト面での実践的な補完になります。

注意点:思考内容はキャッシュされない

現時点では、thinking ブロックの内容はプロンプトキャッシュの対象外です。マルチターンの会話で思考内容を次のターンに渡すことは技術的には可能ですが、キャッシュが効かないためコストが増大します。

実用上は「1ターンで完結するタスク」に拡張思考を使い、会話的なやりとりには通常モードを使うという切り分けが現実的です。

まず試してほしい一歩

既存のコードベースで「一番難しい」と感じているコードレビューに、拡張思考付きの Opus 4 を使ってみてください。思考ブロックの中身を読むだけで、「なぜこのコードが危ないのか」の新しい視点が得られるはずです。それだけでも、拡張思考の価値を体感できると思います。

シェア

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

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

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

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

⟐ Claude Code2026-04-24
Claude Code 環境変数 完全リファレンス — 開発者が本当に押さえるべき設定項目
Claude Code で設定可能な環境変数を実務で使う観点から体系化します。API接続・モデル選択・PowerShellツール・ログ・タイムアウトなど、公式ドキュメントに散らばる情報を一本にまとめ、個人開発からチーム運用まで使える推奨設定を提示します。
⟐ Claude Code2026-10-15
日本語フォルダ名を守るはずのフックが、一度も止めてくれませんでした — Python の stdin が cp932 で読んでいた話
「経理」「議事録」などの日本語フォルダを守る PreToolUse フックが、Python の stdin 既定が cp932 の環境では素通りします。再現の手順と 3 行の直し方、確認用の 1 コマンドを書き残します。
⟐ Claude Code2026-10-14
onFailure を block にしても、jq が無い環境では公式例の rm -rf ブロックは素通りしました
PreToolUse の門番フックは、落ちたときに通すのか止めるのか。公式例を jq の無い環境で走らせると exit 0 で素通りしました。終了コード10通りの実測、直し方、settings.json を走査して素通りを洗い出すスクリプトをまとめます。