メインコンテンツにスキップ
株式会社ゼットリンカー - Next.js システム開発専門
AI開発

Claude Opus 5.5への移行手順|Next.jsアプリの保守としてAIモデル更新に追従する

Conclusion

モデル更新はNext.jsの保守項目。環境変数化・事前洗い出し・切替後の計測の3点で次回も同じ手順で回せる。

稼働中のNext.jsアプリをClaude Opus 5.5へ移す手順を、保守運用の観点で整理します。モデルIDの環境変数化・破壊的変更4点の事前洗い出し・切り替え後の計測という3ステップで、次のモデル更新にも使える型を作ります。

モニターに表示されたAPIコードとモデル移行の確認作業を行う開発者の写真
12分で読めます
Next.jsNext.jsClaude Opus 5.5保守AI駆動開発運用設計

Next.jsアプリにAIを組み込むと、フレームワークのバージョンアップとは別に、モデルの更新という保守項目が増えます。 Next.js本体が年に数回のセキュリティリリースを出すのと同じように、AIモデルも数ヶ月おきに新版が出て、そのたびに移行の判断が発生します。

2026年9月22日に発表されたClaude Opus 5.5は、その典型例です。単価は下がりましたが、Opus 5向けに書いたコードがそのままでは400エラーで落ちる変更を4つ含んでいます。

本記事は「Opus 5.5とは何か」の解説ではなく、すでに稼働しているNext.jsアプリを、どう安全に新モデルへ移すかという運用の話です。モデルの特徴や料金の考え方そのものは経営者向けの解説記事(zetlinker.com)にまとめています。

先に結論です。

  • モデル更新はNext.jsの保守運用の一部として扱う。モデルIDを環境変数に逃がし、検証環境で先に踏み、切り替え後に計測する、という3点が土台になる
  • Opus 5.5には破壊的変更が4つある。該当コードがあるかを事前に洗い出せば、本番で400エラーを踏まずに済む
  • いちばん実害が出やすいのは破壊的変更ではなく、effort の既定値が high から medium に下がったこと。エラーにならないまま品質が変わる

AIモデル更新をNext.jsの保守運用として回す3ステップのフロー図。モデルIDの環境変数化、検証環境での破壊的変更の洗い出し、切り替え後の品質とコストの再計測という工程を示し、各工程で確認する項目を整理している

モデル更新を保守運用としてどう組み込むか?

先に運用の土台を作っておくと、次のモデルが出たときの作業が「調査」ではなく「確認」で済みます。

Next.jsアプリにClaude APIを組み込む場合、最低限この3つを押さえておくと移行コストが下がります。

① モデルIDをコードに直書きしない

モデル名をソースコードに埋め込むと、切り替えのたびにコード修正とデプロイが必要になります。環境変数に逃がしておけば、切り戻しも環境変数の変更だけで済みます。

// app/api/ai/route.ts
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic();
// 環境変数で切り替える。未設定時のみ既定値を使う
const MODEL = process.env.CLAUDE_MODEL ?? "claude-opus-5-5";

これにより、検証環境だけ新モデル・本番は旧モデル、という並行運用ができます。問題が出た場合の切り戻しも、デプロイを伴わずに実施できます。

② 破壊的変更を検証環境で先に踏む

モデル更新の告知には移行ガイドが付きます。本番を切り替える前に、移行ガイドに挙がっている変更点が自社コードに該当するかを検索で洗い出します。 後述の4点は、いずれも文字列検索で該当箇所を特定できます。

③ 切り替え後に品質とコストを計測する

モデルを変えると、エラーにならないまま挙動が変わることがあります。Opus 5.5の effort 既定値の変更がまさにこれです。切り替え前後で、同じ入力に対する出力と請求額を比較できる状態を作っておきます。

Opus 5.5で何が変わったのか

エンドポイント・リクエスト形式・トークナイザーはOpus 5と同じです。 トークン数の再見積もりは不要で、変わるのはthinkingとツール指定まわりの前提です。

項目Opus 5Opus 5.5
モデルIDclaude-opus-5claude-opus-5-5
料金(入力/出力)$5 / $25$4 / $20
キャッシュ読み取り$0.50$0.20
キャッシュ書き込み(5分)$6.25$5.00
コンテキストウィンドウ100万トークン100万トークン
最大出力12.8万トークン12.8万トークン
thinking既定ON(high 以下なら無効化可)常時ON(無効化不可)
effort既定値highmedium
tool_choiceauto / none / any / toolauto / none のみ
computer usecomputer_20251124computer_toolset_20260801

(2026年9月23日時点。出典:公式ドキュメント移行ガイド

Amazon Bedrockでは anthropic.claude-opus-5-5、Google Cloud・Microsoft Foundryでは claude-opus-5-5 を指定します。

この判断から次に進む

課題が整理できていなくても相談できます

困っている業務と、変えたいことだけでも大丈夫です。初回相談・モック・見積もりは無料です。

カジュアルに相談する

移行前に洗い出す4つの破壊的変更

この4点は本番切り替え前に検索で確認します。 該当がなければ、モデルIDの差し替えだけで移行できます。

① thinkingが無効化できない

検索するもの:thinking: を含む箇所

thinking: { type: "disabled" }thinking: { type: "enabled", budget_tokens: N } は、どちらも400エラーになります。Opus 5では high 以下のeffortに限って無効化できましたが、Opus 5.5では選択肢そのものがなくなりました。

トークン削減のためにthinkingを切っていた実装は、thinking フィールドを削除して output_config.effort を下げる形に置き換えます。

// NG:Opus 5.5では400エラー
await client.messages.create({
  model: "claude-opus-5-5",
  max_tokens: 16000,
  thinking: { type: "disabled" }, // "thinking.type.disabled" is not supported
  messages: [{ role: "user", content: prompt }],
});

// OK:thinkingは常時ON。effortで推論量を制御する
await client.messages.create({
  model: "claude-opus-5-5",
  max_tokens: 16000,
  output_config: { effort: "low" },
  messages: [{ role: "user", content: prompt }],
});

あわせて、レスポンスが必ず thinking ブロックから始まる点にも注意が必要です。検索するもの:content[0] のように先頭ブロックを決め打ちで読んでいるコードは、type で絞り込む形に直します。

const text = message.content
  .filter((b): b is Anthropic.TextBlock => b.type === "text")
  .map((b) => b.text)
  .join("");

tool_choice の強制指定が400エラーになる

検索するもの:tool_choice

tool_choice: { type: "tool", name: "..." }{ type: "any" } がサポート外になりました。トークンカウントAPIでも同じチェックが入ります。

構造化データの抽出でツール強制を使っていた実装は、auto + 明示的な指示 + strict: true に置き換えます。

// OK:auto + 指示文 + strict: true
await client.messages.create({
  model: "claude-opus-5-5",
  max_tokens: 16000,
  tools: [{ ...recordSummaryTool, strict: true }],
  tool_choice: { type: "auto" },
  messages: [
    { role: "user", content: `次の文書を record_summary ツールで記録してください。\n\n${doc}` },
  ],
});

JSONを確実に受け取りたいだけであれば、構造化出力(output_config.format のJSONスキーマ指定)が正攻法です。スキーマ通りの出力が保証されるため、Zodでのバリデーションとも相性が良い方法です。

③ thinkingブロックがモデルと会話に紐づく

検索するもの:フォールバック・リトライでモデルを切り替えている箇所

Opus 5.5が生成したthinkingブロックを読めるのは、Claude API上ではFable 5.1とMythos 5.1だけです。逆方向、つまりOpus 5以前のOpus・Sonnet・Haikuの会話をOpus 5.5へ引き継ぐことはできます(Fable・Mythos系からは引き継げません)。

実害が出るのは、リトライやフォールバックで会話が別モデルに切り替わるケースです。そのターンは推論の文脈を失って再計画が走るため、コストとレイテンシが一時的に増えます。

あわせて、会話履歴を途中で編集すると、以降のthinkingブロックが無効になります。2026年8月31日00:00 UTC以降に作成されたアカウントでは、編集後にthinkingブロックを送り返すと既定で400エラーになります。 根本対応は、会話履歴を追記専用(append-only)に保つことです。指示やツールを変えたい場合は、過去ターンを書き換えるのではなくメッセージの追加で行います。これはプロンプトキャッシュのヒット率を保つ実装とも一致します。

computer_20251124 が使えない

検索するもの:computer_20251124

Computer useを使っている場合、toolscomputer_20251124 を入れると400エラーになります。新しいツールセットを宣言する形に変わりました。

// OK:ベータヘッダ不要、name や画面サイズの指定も不要
await client.messages.create({
  model: "claude-opus-5-5",
  max_tokens: 4096,
  tools: [{ type: "computer_toolset_20260801" }],
  messages: [{ role: "user", content: "..." }],
});

エージェントループ側も変更が必要です。操作の種類は input.action ではなく tool_use ブロックの name に入り、1ターンに複数個返ることがあります。結果を返すときは toolset_name を毎回添えます。なおAmazon Bedrockでは computer_20251124 が引き続き動くため、提供先によって対応が分かれます。

エラーにならないまま品質が変わる:effort既定値の変更

破壊的変更ではないぶん、これがいちばん気づきにくい変更です。

effort を明示していないリクエストは、Opus 5では high 相当だったものが、Opus 5.5では medium で動きます。モデル名を差し替えただけで「速くなったが品質が落ちた」と見える場合、多くはこの既定値の差です。エラーは出ないため、計測していなければ気づけません。

low / medium / high / xhigh / max の5段階があり、output_config.effort で指定します。

const stream = client.messages.stream({
  model: MODEL,
  max_tokens: 64000,
  output_config: { effort: "medium" }, // 既定値でも明示しておく
  system: [
    {
      type: "text",
      text: SYSTEM_PROMPT, // 固定文言はキャッシュ対象に(読み取り$0.20)
      cache_control: { type: "ephemeral" },
    },
  ],
  messages: [{ role: "user", content: prompt }],
});

既定値であっても明示的に書いておくのが、運用上のポイントです。次のモデルで既定値がまた変わったときに、コードを見れば意図が分かる状態になります。

単価が下がっても、effortを上げれば出力トークンが増えて総額は戻ります。請求額は移行後に必ず再計測してください。

また、thinkingが常時ONで単一リクエストが長くなるため、ストリーミングを標準にすることも実務上は必須です(Vercelのタイムアウト対策としても効きます)。

移行後に気づきやすい2つの挙動変化

ツールコール間の進捗表示が消える

Opus 5ではツールコールの合間のテキストが text ブロックで返っていましたが、Opus 5.5ではFable 5.1と同じく thinkingブロック側(progress update)に移りました。 既定の thinking.display"omitted" で、この場合 thinking フィールドは空文字列になります。進捗をUIに流している実装は、切り替えた瞬間に無言になります。

復旧するには display を設定し、thinkingブロックから読みます。"updates"(ベータヘッダ thinking-display-updates-2026-08-18)は進捗更新のみ、"summarized" は推論の要約も含めて返します。

拒否レスポンスの種類が増えた

Opus 5.5は stop_reason: "refusal" を返すことがあり、stop_details.category はOpus 5より広く、"cyber" に加えて "bio""reasoning_extraction" が返ります。サイバーセキュリティ関連のタスクは安全策としてOpus 4.8へルーティングされる仕様もあるため、該当領域を扱う場合は挙動を検証環境で確認してください。サーバー側フォールバックを設定できますが、"reasoning_extraction" による拒否は再試行されず、そのまま返ります。

Opus 5.5とFable 5.1、どちらを使うか

公式ドキュメントは、まずOpus 5.5から検証することを案内しています。 多くのワークロードではOpus 5.5を使い、要求の厳しい推論や長時間のエージェント処理、あるいはOpus 5.5を高いeffortで評価しても品質が足りない場合にFable 5.1を検討する、という順番です。

単価もOpus 5.5が入力4ドル/出力20ドル、Fable 5.1が入力10ドル/出力50ドルと差があります。Fable 5.1側の移行時の注意点はClaude Fable 5.1移行|tool_choice廃止など3つの注意点とNext.js実装に整理しています。

まとめ

  • モデル更新はNext.jsの保守運用の一部。モデルIDの環境変数化・検証環境での事前確認・切り替え後の計測という3点を用意しておくと、次のモデルでも同じ手順で回せる
  • Opus 5.5の破壊的変更は4つ。thinking: / tool_choice / モデル切り替え箇所 / computer_20251124 を検索すれば、該当の有無を事前に判定できる
  • エラーにならない変更(effort既定値 highmedium)が実害としては大きい。 切り替え後に品質と請求額を再計測する
  • 会話履歴を追記専用に保つ設計は、400エラー回避とプロンプトキャッシュのヒット率の両方に効く

Next.jsのバージョン追従と同じく、AIモデルの更新も「いつ来るか分からないが必ず来る」保守項目です。追従の体制をどう作るかという観点は、Next.jsのCVE対応は誰がやるのかNext.js保守運用の費用と契約もあわせてご覧ください。

私たちは、Next.js構成でのClaude API組み込みを、モデル選定からPoC実装・本番移行まで一貫してお手伝いしています。「既存実装をOpus 5.5に安全に移行したい」「エージェント実装のコストを見直したい」という段階からのご相談を歓迎します。Next.js × AIでのPoC開発について、15分のカジュアルな相談も受け付けています(事例・要件が固まっていなくても大丈夫です/営業はしません)。

※本記事に記載したモデルの仕様・料金・提供条件は、2026年9月23日時点の公開情報(Anthropic公式発表移行ガイド)に基づく整理です。AI関連の状況は変化が速いため、実装・導入の判断にあたっては必ず公式情報で最新の内容をご確認ください。本記事はNext.js 16.x時点の情報です。

よくある質問

AIモデルの更新は、Next.jsの保守運用にどう組み込めばいいですか?

モデルIDを環境変数に逃がす、移行ガイドの破壊的変更を検証環境で先に確認する、切り替え後に品質と請求額を計測する、の3点を用意しておくと、次のモデルが出たときも同じ手順で回せます。特にモデルIDの環境変数化は、問題が起きたときにデプロイなしで切り戻せるため効果が大きい項目です。

料金は下がりましたか?

下がりました。100万トークンあたり入力5ドル→4ドル、出力25ドル→20ドルです。キャッシュ読み取りも0.50ドル→0.20ドル、キャッシュ書き込み(5分)も6.25ドル→5.00ドルになりました。ただしthinkingが常時ONで、effortを上げれば出力トークンが増えるため、請求額は移行後に再計測することをおすすめします。

モデル名を差し替えたら品質が落ちた気がします。なぜですか?

effortの既定値が変わったことが原因の可能性があります。Opus 5の既定値はhighでしたが、Opus 5.5ではmediumです。effortを明示していないリクエストは、差し替えた瞬間に推論量が下がります。output_config.effort で low / medium / high / xhigh / max を明示的に指定し、品質が必要な処理だけ引き上げてください。

ツールコールの合間に出していた進捗表示が消えました。

Opus 5ではtextブロックで返っていたツールコール間のテキストが、Opus 5.5ではthinkingブロック(progress update)側に移ったためです。既定の thinking.display は omitted で、この場合 thinking フィールドは空文字列になります。display を updates(ベータヘッダ thinking-display-updates-2026-08-18)または summarized に設定し、thinkingブロックから読み取ってください。

Opus 5.5とFable 5.1、API実装ではどちらを使うべきですか?

まずOpus 5.5からの検証をおすすめします。Anthropic公式ドキュメントも「多くのワークロードではまずOpus 5.5を使い、要求の厳しい推論や長時間のエージェント処理、あるいはOpus 5.5を高いeffortで評価しても品質が足りない場合にFable 5.1を検討する」という順番を案内しています。単価もOpus 5.5が入力4ドル/出力20ドル、Fable 5.1が入力10ドル/出力50ドルと差があります。

技術仕様・対象バージョンは本文と参照先をご確認ください。

最終更新:2026年9月23日

Share this article

課題が整理できていなくても相談できます

困っている業務と、変えたいことだけでも大丈夫です。初回相談・モック・見積もりは無料です。

カジュアルに相談する

先に整理したい方はシステム引き継ぎの初動・調査シート・AI相談プロンプトをご利用ください。未確認の項目は空欄のままご相談いただけます。

次に読む記事

ALL ARTICLES →

プライバシーポリシー

株式会社ゼットリンカー(以下、「当社」といいます。)は、お客様の個人情報の重要性を認識し、 その保護の徹底を図るため、以下のプライバシーポリシー(以下、「本ポリシー」といいます。)を定めます。

1. 個人情報の定義

本ポリシーにおいて「個人情報」とは、生存する個人に関する情報であって、 当該情報に含まれる氏名、生年月日その他の記述等により特定の個人を識別することができるもの、 及び他の情報と容易に照合することができ、それにより特定の個人を識別することができることとなるものを指します。

2. 個人情報の収集

当社は、お客様が当社のサービスをご利用になる際、お客様の個人情報を収集することがあります。収集する個人情報は以下の通りです:

  • 氏名
  • メールアドレス
  • 電話番号
  • 会社名・組織名
  • 住所
  • その他当社が定める入力フォームにお客様が入力する情報

3. 個人情報の利用目的

当社は、お客様からご提供いただいた個人情報を、以下の目的で利用します:

  • お客様への連絡やサービスの提供
  • お客様からのお問い合わせへの対応
  • 当社サービスの改善や新サービスの開発
  • メールマガジンの配信(お客様の同意がある場合)
  • 契約や法令等に基づく権利の行使や義務の履行
  • その他、上記利用目的に付随する目的

4. 個人情報の第三者提供

当社は、以下の場合を除き、お客様の同意なく個人情報を第三者に提供することはありません:

  • 法令に基づく場合
  • 人の生命、身体または財産の保護のために必要がある場合であって、本人の同意を得ることが困難である場合
  • 公衆衛生の向上または児童の健全な育成の推進のために特に必要がある場合
  • 国の機関もしくは地方公共団体またはその委託を受けた者が法令の定める事務を遂行することに対して協力する必要がある場合

5. 個人情報の管理

当社は、お客様の個人情報を正確かつ最新の状態に保ち、個人情報への不正アクセス、 個人情報の紛失、破損、改ざん及び漏洩などを防止するため、 セキュリティシステムの維持・管理体制の整備等の必要な措置を講じ、安全対策を実施し個人情報の厳重な管理を行います。

6. 個人情報の開示・訂正・削除

お客様は、当社に対してご自身の個人情報の開示を求めることができます。 また、開示の結果、個人情報の内容が事実でないことが判明した場合には、 速やかに訂正または削除に応じます。

7. 導入事例の公開について

当社は、お客様から依頼いただいたプロジェクトを導入事例として記事にさせていただく場合があります。導入事例として公開する場合は、以下の点に配慮いたします:

  • 機密情報や個人情報は公開いたしません
  • 社名を公開する場合は、公開内容について事前にお客様に確認いただきます
  • 社名を非公開とする場合でも、お客様のご要望に応じて公開内容を確認いただくことが可能です

8. Cookie(クッキー)の使用について

当社のウェブサイトでは、お客様により良いサービスを提供するため、Cookie を使用することがあります。 Cookie により個人を識別できる情報を収集することはありません。 お客様はブラウザの設定により Cookie の受信を拒否することができます。

9. SSL(Secure Socket Layer)について

当社のウェブサイトはSSLに対応しており、ウェブブラウザとウェブサーバーとの通信を暗号化しています。 お客様が入力する個人情報は自動的に暗号化されて送受信されるため、 万が一、第三者が傍受した場合でも内容を解読することは困難です。

10. プライバシーポリシーの変更

当社は、必要に応じて、本ポリシーの内容を変更することがあります。 変更後のプライバシーポリシーについては、当社ウェブサイトに掲載したときから効力を生じるものとします。

11. お問い合わせ

本ポリシーに関するお問い合わせは、以下の窓口までお願いいたします。

株式会社ゼットリンカー

〒160-0023

東京都新宿区西新宿3丁目3番13号西新宿水間ビル2F

代表取締役: 金原隆利

お問い合わせ先: info@zetlinker.com

制定日:2024年1月1日

最終改訂日:2026/9/23

利用規約

この利用規約(以下、「本規約」といいます。)は、株式会社ゼットリンカー(以下、「当社」といいます。)が 提供するウェブサイトおよびサービス(以下、「本サービス」といいます。)の利用条件を定めるものです。 お客様は、本規約に同意した上で、本サービスをご利用ください。

第1条(適用)

1. 本規約は、お客様と当社との間の本サービスの利用に関わる一切の関係に適用されるものとします。

2. 当社は本サービスに関し、本規約のほか、ご利用にあたってのルール等、各種の定め(以下、「個別規定」といいます。)を することがあります。これら個別規定はその名称のいかんに関わらず、本規約の一部を構成するものとします。

3. 本規約の規定と個別規定の規定が異なる場合は、個別規定において特段の定めなき限り、個別規定の規定が優先されるものとします。

第2条(定義)

本規約において使用する以下の用語は、各々以下に定める意味を有するものとします。

  • 「利用契約」とは、本規約を契約条件として当社とお客様との間で締結される、本サービスの利用契約
  • 「知的財産権」とは、著作権、特許権、実用新案権、意匠権、商標権その他の知的財産権(それらの権利を取得し、またはそれらの権利につき登録等を出願する権利を含みます。)
  • 「投稿データ」とは、お客様が本サービスを利用して投稿その他送信するコンテンツ(文章、画像、動画その他のデータを含みますがこれらに限りません。)

第3条(本サービスの提供)

1. お客様は、本規約に同意の上、当社の定める方法によって利用登録を申請し、当社がこれを承認することによって、本サービスを利用することができるようになります。

2. 当社は、お客様に以下のいずれかの事由があると判断した場合、利用登録の申請を承認しないことがあり、その理由については一切の開示義務を負わないものとします。

  • 利用登録の申請に際して虚偽の事項を届け出た場合
  • 本規約に違反したことがある者からの申請である場合
  • その他、当社が利用登録を相当でないと判断した場合

第4条(ユーザーIDおよびパスワードの管理)

1. お客様は、自己の責任において、本サービスのユーザーIDおよびパスワードを適切に管理するものとします。

2. お客様は、いかなる場合にも、ユーザーIDおよびパスワードを第三者に譲渡または貸与し、もしくは第三者と共用することはできません。

3. 当社は、ユーザーIDとパスワードの組み合わせが登録情報と一致してログインされた場合には、そのユーザーIDを登録しているお客様自身による利用とみなします。

第5条(禁止事項)

お客様は、本サービスの利用にあたり、以下の行為をしてはなりません。

  • 法令または公序良俗に違反する行為
  • 犯罪行為に関連する行為
  • 本サービスの内容等、本サービスに含まれる著作権、商標権ほか知的財産権を侵害する行為
  • 当社、ほかのお客様、またはその他第三者のサーバーまたはネットワークの機能を破壊したり、妨害したりする行為
  • 本サービスによって得られた情報を商業的に利用する行為
  • 当社のサービスの運営を妨害するおそれのある行為
  • 不正アクセスをし、またはこれを試みる行為
  • 他のお客様に関する個人情報等を収集または蓄積する行為
  • 不正な目的を持って本サービスを利用する行為
  • 本サービスの他のお客様またはその他の第三者に不利益、損害、不快感を与える行為
  • 他のお客様に成りすます行為
  • 当社が許諾しない本サービス上での宣伝、広告、勧誘、または営業行為
  • 面識のない異性との出会いを目的とした行為
  • 当社のサービスに関連して、反社会的勢力に対して直接または間接に利益を供与する行為
  • その他、当社が不適切と判断する行為

制定日:2024年1月1日

最終改訂日:2026/9/23