SuperPowers:Claude Codeの開発ワークフローを変えるプラグイン
Claude Code用プラグイン「SuperPowers」の導入方法と主要スキルを解説。brainstorming(設計)、TDD(テスト駆動開発)、サブエージェント並列開発など、AIコーディングの品質を体系的に引き上げる仕組みを、ソースコードに基づいて詳しく紹介します。

Claude APIのExtended Thinking(拡張思考)機能を徹底解説。Adaptive Thinking、Summarized Thinking、Tool Useとの組み合わせ、コスト管理まで、実装コード付きで開発者向けにわかりやすく紹介します。
注意: 本記事は2026年4月時点のAnthropic公式ドキュメントに基づいています。APIの仕様は変更される可能性があるため、最新情報は公式ドキュメントをご確認ください。
「Claude APIに複雑な問題を投げたら答えは返ってきたが、なぜその結論に至ったかがわからない...」
「GPT-4でうまくいかなかった多段推論タスクをClaudeで試したが、結果がいまいち改善しない...」
LLMをAPI経由で使う開発者なら、こうした壁にぶつかったことがあるのではないでしょうか。複雑なタスクほど、AIが「答えを出す」だけでなく「考えるプロセス」そのものが重要になります。
Claude APIのExtended Thinking(拡張思考)は、Claudeが最終回答を出す前に内部で段階的に推論し、その過程をレスポンスとして受け取れる機能です。実装方法、コスト管理、Tool Useとの組み合わせまでを順に見ていきます。
通常のClaudeは「答え」だけを返します。Extended Thinkingを使うと、その答えに至るまでの思考の過程もレスポンスとして受け取れます。「なぜその結論か」を確認できるため、出力の信頼性を検証しやすくなります。
技術的には、通常のtextブロックに加えてthinkingコンテンツブロックがレスポンスに追加される仕組みです。
{
"content": [
{
"type": "thinking",
"thinking": "まずこの問題を分解してみよう。条件Aが成立する場合...",
"signature": "WaUjzkypQ2mUEVM36O2TxuC06KN8..."
},
{
"type": "text",
"text": "結論として、条件Bが最も適切なアプローチです。"
}
]
}thinkingブロックにはClaudeの思考内容が、textブロックには最終回答が入ります。signatureフィールドはAnthropic側で暗号化された検証用データで、マルチターン会話で思考を引き継ぐ際に使用します。
公式ドキュメントでは以下のタスクで特に有効と説明されています。
複雑な数学・論理問題 Euclidean algorithmのような多段階の計算や、命題論理の証明など「手順が複数あり、前の結果が次に影響する」問題が得意です。通常のリクエストでは途中の計算を省略して誤答することがありますが、思考トークンを使って一歩ずつ展開することで精度が上がります。
コーディングタスク 「このアルゴリズムの時間計算量を求めて」「このバグの原因を特定して」のような、コードを読んで推論が必要な問いに向いています。実装を出力するだけでなく、設計上のトレードオフを比較してから答えを出せるため、レビュアーとして使う場面でも効果的です。
分析・推論 「条件Aが成立する場合はX、Bが成立する場合はY」のように複数の条件が絡む意思決定や、リスク評価が当てはまります。思考ブロックを見ることで「どの条件を考慮して判断したか」が追えるため、ビジネス判断の根拠確認にも使えます。
長文読解と要約 複数の文書間で記述が矛盾していないか確認するような整合性チェックに向いています。単純な要約ではなく「この文書のこの記述と、あの文書のこの記述が矛盾する」という比較推論が必要なタスクで差が出ます。
Extended Thinkingに対応しているモデルは以下の通りです(2026年4月時点):
| モデル | 推奨設定 | 備考 |
|---|---|---|
Claude Opus 4.6 (claude-opus-4-6) |
Adaptive Thinking | budget_tokens指定は非推奨 |
Claude Sonnet 4.6 (claude-sonnet-4-6) |
Adaptive Thinking | budget_tokens指定は非推奨 |
Claude Opus 4.5 (claude-opus-4-5-20251101) |
manual (type: "enabled") |
interleaved-thinkingベータ対応 |
Claude Haiku 4.5 (claude-haiku-4-5-20251001) |
manual (type: "enabled") |
— |
Claude Sonnet 3.7 (claude-3-7-sonnet-20250219) |
manual | 非推奨(deprecated) |
ポイント: 最新モデルのOpus 4.6とSonnet 4.6では、Adaptive Thinkingが推奨です。従来のbudget_tokensによる手動制御は非推奨となっており、将来のリリースで削除される予定です。
最新モデルではtype: "adaptive"とeffortパラメータを使います。
curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "content-type: application/json" \
--data '{
"model": "claude-sonnet-4-6",
"max_tokens": 16000,
"thinking": {
"type": "adaptive"
},
"messages": [
{
"role": "user",
"content": "1071と462の最大公約数を求め、Euclidean algorithmで計算過程も示してください。"
}
]
}'Adaptive Thinkingでは、Claudeがタスクの複雑さに応じて思考トークン数を自動調整します。単純な質問はスキップし、複雑な問題は深く掘り下げる。この判断はモデル側で自動的に行われます。
Opus 4.5など旧モデルでは従来のtype: "enabled"を使います。
curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "content-type: application/json" \
--data '{
"model": "claude-opus-4-5-20251101",
"max_tokens": 16000,
"thinking": {
"type": "enabled",
"budget_tokens": 10000
},
"messages": [
{
"role": "user",
"content": "n mod 4 == 3 を満たす素数は無限に存在しますか?"
}
]
}'budget_tokensは思考に使える最大トークン数を指定します。最小値は1,024。大きいほど詳細な推論が可能ですが、コストとレイテンシが増加します。
import anthropic
client = anthropic.Anthropic()
# Adaptive Thinking(Opus 4.6 / Sonnet 4.6推奨)
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=16000,
thinking={
"type": "adaptive"
},
messages=[
{
"role": "user",
"content": "このアルゴリズムの時間複雑度を分析してください: ..."
}
]
)
# レスポンスの処理
for block in response.content:
if block.type == "thinking":
print(f"[思考プロセス]\n{block.thinking}\n")
elif block.type == "text":
print(f"[最終回答]\n{block.text}\n")Claude 4系モデルでは、デフォルトでClaudeの思考はサマリー(要約版)として返ってきます。これは完全な思考コンテンツをそのまま返すのではなく、要点をまとめたものです。
公式ドキュメントによると、要約版の提供理由は以下の通りです:
注意点: 要約思考では、請求される出力トークン数はレスポンスに見えるトークン数と一致しません。内部で生成された完全な思考トークン数が課金対象となります。レスポンスに含まれる要約の分量ではありません。
Claude Sonnet 3.7のみ、従来通り完全な思考内容を返します。
アプリケーションでユーザーに思考プロセスを表示しない場合、display: "omitted"を指定することでレスポンスの最初のテキストが届くまでの時間(TTFT: Time to First Token)を短縮できます。
"thinking": {
"type": "enabled",
"budget_tokens": 10000,
"display": "omitted"
}このとき、レスポンスのthinkingフィールドは空になります:
{
"content": [
{
"type": "thinking",
"thinking": "",
"signature": "EosnCkYICxIMMb3LzNrMu..."
},
{
"type": "text",
"text": "答えは12,231です。"
}
]
}重要: display: "omitted"を使っても課金される思考トークン数は変わりません。削減されるのはレイテンシだけです。signatureフィールドは通常通り返ってくるため、マルチターン会話での引き継ぎも機能します。
Extended ThinkingはTool Use(関数呼び出し)と組み合わせることができます。ただし、いくつかの制約があります。
tool_choice: {"type": "auto"}(デフォルト)またはtool_choice: {"type": "none"}のみ対応。"any"や"tool"の強制指定はエラーになります。Tool Useでマルチターン会話を行う場合、前のアシスタントターンのthinkingブロックをそのままAPIに返す必要があります。Claudeの推論の継続性を保つためです。
# 1回目のリクエスト
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=16000,
thinking={"type": "adaptive"},
tools=[weather_tool],
messages=[{"role": "user", "content": "パリの天気は?"}]
)
# アシスタントのコンテンツ(thinkingブロック含む)を保持
assistant_content = response.content
# tool_resultを含む2回目のリクエスト
# ← thinkingブロックをそのまま渡す(変更・省略しない)
messages = [
{"role": "user", "content": "パリの天気は?"},
{"role": "assistant", "content": assistant_content}, # thinkingブロック含む
{"role": "user", "content": [{"type": "tool_result", "tool_use_id": "...", "content": "20°C、晴れ"}]}
]通常のExtended Thinkingは「最初に一度考えてから、あとはツールを呼び出し続ける」という流れです。Interleaved Thinkingを使うと、ツールの結果を受け取るたびに思考ブロックが挟まるようになります。

ツールの結果を見て「次に何をすべきか」を都度推論できるため、複数のツールを連鎖させるエージェント的な用途で特に効果を発揮します。
| モデル | 設定方法 |
|---|---|
| Claude Opus 4.6 | Adaptive Thinkingで自動有効(ベータヘッダー不要) |
| Claude Sonnet 4.6 | Adaptive Thinkingで自動有効(推奨)、またはinterleaved-thinking-2025-05-14ベータヘッダーで有効 |
| Claude Opus 4.5 / Opus 4.1 / Opus 4 / Sonnet 4.5 / Sonnet 4 | interleaved-thinking-2025-05-14ベータヘッダーが必要 |
Opus 4.5などの旧モデルでは、リクエストヘッダーに以下を追加します。
curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "anthropic-beta: interleaved-thinking-2025-05-14" \
--header "content-type: application/json" \
--data '{
"model": "claude-opus-4-5-20251101",
"max_tokens": 16000,
"thinking": {
"type": "enabled",
"budget_tokens": 10000
},
"tools": [...],
"messages": [...]
}'公式ドキュメントに記載されている重要な挙動を2点挙げておきます。
budget_tokensがmax_tokensを超えられる: Interleaved Thinkingでは、budget_tokensはアシスタントターン内の全思考ブロックの合計予算として扱われます。そのため通常は禁止されているmax_tokensを超える設定が許容されます(上限はコンテキストウィンドウ全体)。
Messages API専用: Interleaved ThinkingはMessages API経由でツールを使う場合のみ対応しています。
Extended Thinking使用時の課金対象:
Summarized Thinkingの場合、課金されるのは完全な思考トークン数であり、レスポンスに含まれる要約版の分量ではありません。
# トークン数の追跡
print(f"入力トークン: {response.usage.input_tokens}")
print(f"出力トークン(課金対象): {response.usage.output_tokens}")
# ※ 要約思考の場合、output_tokensはレスポンスの可視トークン数より大きい場合があるExtended Thinking有効時のコンテキストウィンドウは以下のように計算されます:
コンテキストウィンドウ =
(現在の入力トークン - 過去のthinkingトークン) +
(思考トークン + 暗号化思考トークン + テキスト出力トークン)注意: 前のターンのthinkingブロックはコンテキストウィンドウにカウントされません。ただし、Tool Useで引き継ぐ場合は入力トークンとして課金されます。
単純なQ&Aや定型文生成ではExtended Thinkingは不要です。思考トークン分のコストが追加でかかります。複雑な推論・多段階分析・コードレビューなど、「じっくり考えてほしい」タスクに限定して使いましょう。
budget_tokensを32k以上に設定する場合、リクエストの実行時間が長くなりHTTPタイムアウトのリスクが高まります。公式ドキュメントではバッチ処理(Batch API)の使用を推奨しています。
思考トークンが多いほどレスポンスが返ってくるまでの時間が長くなります。ユーザー向けのインタラクティブなアプリではサーバーサイドイベント(SSE)でストリーミングし、思考中であることを示すUI(スピナーなど)を表示しましょう。
# ストリーミングの例
with client.messages.stream(
model="claude-sonnet-4-6",
max_tokens=16000,
thinking={"type": "adaptive"},
messages=[{"role": "user", "content": "..."}]
) as stream:
for event in stream:
if hasattr(event, 'type'):
if event.type == 'content_block_start':
if event.content_block.type == 'thinking':
print("[思考中...]")
elif event.type == 'content_block_delta':
if event.delta.type == 'text_delta':
print(event.delta.text, end='', flush=True)Extended Thinkingには以下の制約があります。これらを事前に把握しておくと、実装時に余計なエラーハンドリングを防げます。
| 制約 | 対処方針 |
|---|---|
temperature・top_kは設定不可 |
温度調整が必要なタスクではExtended Thinkingを使わない |
top_pは0.95〜1のみ |
特に理由がなければデフォルト(1)のまま使う |
| レスポンスの事前入力(pre-fill)は非対応 | 先頭テキストを指定するパターンは使えない |
Tool Choiceでany・特定ツール強制は不可 |
autoまたはnoneに変更する |
Extended ThinkingのようなLLMの「なぜ?」を可視化する機能は、特に以下のような場面で力を発揮します。
思考プロセスが見えることで、AIの出力をレビューするハードルが下がります。「なぜそうなったか」が分かれば、プロンプトの改善も具体的になります。
Claude APIのExtended Thinkingで変わるのは、「答えだけもらう」から「なぜその答えか」まで確認できるようになること。特に複雑な推論が絡むタスクで、出力の信頼性と改善サイクルが変わります。
display: "omitted"でレイテンシ削減まずは小規模なタスクでAdaptive Thinkingを試し、思考ブロックの内容を見ながらプロンプトを改善していくのが現実的な入り口です。「なぜその結論か」が追えるようになると、AIへの丸投げではなくレビュー付きの協働に変わります。
Claude Codeを活用した開発ワークフロー全体に興味があれば、こちらも読んでみてください。