◉RORK LABEN
●GPT-6.1 SOL — Rork のモデルメニューに追加(09-29)。Low/Medium/High を選べ、Pro・Max に含まれます●SONNET 5.5 — UI づくりが得意で、Sonnet 5 より出力が速いモデルが選べます(09-28)●SONNET 4.5 — Claude API での提供終了は 11/30、残り34日。API 連携を足したアプリは移行先の確認を●SDK 58 ISSUE — Android ウィジェットが定期更新されない、Stripe が静的リンクになるなど初期報告が出ています●OBSERVE — EAS Observe がネイティブクラッシュも記録します(SDK 57.0.21 以降・10/07)●NEW — 起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、…●GPT-6.1 SOL — Rork のモデルメニューに追加(09-29)。Low/Medium/High を選べ、Pro・Max に含まれます●SONNET 5.5 — UI づくりが得意で、Sonnet 5 より出力が速いモデルが選べます(09-28)●SONNET 4.5 — Claude API での提供終了は 11/30、残り34日。API 連携を足したアプリは移行先の確認を●SDK 58 ISSUE — Android ウィジェットが定期更新されない、Stripe が静的リンクになるなど初期報告が出ています●OBSERVE — EAS Observe がネイティブクラッシュも記録します(SDK 57.0.21 以降・10/07)●NEW — 起動広告が、背面から戻った回にしか出ていませんでした。「前面に戻った」合図が、…
記事一覧/開発ツール
⬡ 開発ツール/2026-10-27初級

Claude Sonnet 4.5 の API が 11 月 30 日に終わります。アプリに書いたモデル ID を、期限の前に洗い出す

Claude Sonnet 4.5 の API は 2026 年 11 月 30 日に提供終了の予定です。アプリのコードや設定に書かれたモデル ID を洗い出し、置き換えて、もう一度確かめるまでを小さなスクリプトで進めます。

Claude API14Sonnet 4.5モデル廃止3アプリ開発77個人開発229Rork603

期限のある連絡は、読んだ直後に「あとで見よう」と思って、そのまま忘れてしまうことがあります。今回の Claude Sonnet 4.5 の件も、私にとってはそうなりかけていました。

Anthropic の廃止予定ページ(platform.claude.com の Model deprecations)を 2026 年 10 月 27 日に確認したところ、claude-sonnet-4-5-20250929 は 9 月 30 日に非推奨となり、提供終了日は 2026 年 11 月 30 日(暫定) と書かれていました。推奨される置き換え先は claude-sonnet-5-5 です。終了日を過ぎると、このモデルへのリクエストは失敗します。

Rork で作ったアプリに AI 機能を足している方、あるいは書き出したプロジェクトに自分で Claude API を呼ぶ処理を加えた方は、この日付を一度ご自身のコードに照らしておくと安心です。洗い出しから置き換え、確認までを、実際に動かして確かめた手順で書き残します。

最初にお伝えしたいこと

直接影響を受けるのは、モデル ID を自分で書いている場合です。Rork のメニューからモデルを選んで使っているだけの方は、メニュー側が Sonnet 5.5 に置き換わっていることもあり、ご自身での作業は基本的にありません。

一方、書き出したプロジェクトの中の API 呼び出し、サーバー関数、.env の設定などに claude-sonnet-4-5-20250929 が残っていれば、終了日以降は動かなくなります。しかも、モデル ID は思わぬ場所に散らばりがちです。1 か所を直して安心していたら、別のファイルに同じ文字列が残っていた、ということが起こります。

手順 1:洗い出しのスクリプトを置く

目で探すと見落とすので、プロジェクトのフォルダを走査する小さなスクリプトを使います。Node.js で動き、追加の依存はありません。audit-models.mjs という名前で、プロジェクトの外か直下に置いてください。

// audit-models.mjs — プロジェクト内の Claude モデル ID を洗い出し、廃止予定のものに印を付ける
import { readdirSync, readFileSync, statSync } from "node:fs";
import { join, extname } from "node:path";
 
const ROOT = process.argv[2] ?? ".";
const SKIP_DIRS = new Set(["node_modules", ".git", ".expo", "ios", "android", "dist", "build"]);
const EXTS = new Set([".ts", ".tsx", ".js", ".jsx", ".mjs", ".json", ".env", ".toml", ".yml", ".yaml", ".md"]);
 
// 公式の廃止ページ(platform.claude.com/docs/en/resources/model-deprecations)で確認した値。実行前に見直すこと。
const RETIRING = {
  "claude-sonnet-4-5-20250929": { on: "2026-11-30", to: "claude-sonnet-5-5" },
};
// 別名(エイリアス)。固定のスナップショットではなく、先で指す先が変わりうるもの
const ALIAS = /^claude-sonnet-4-5$/;
 
// claude-<名前>-<数字>(-<数字>)(-<8桁日付>) の形を拾う
const MODEL_RE = /claude-(?:[a-z]+-)?(?:[a-z]+-)?\d+(?:-\d+)?(?:-\d{8})?/g;
 
const hits = [];
function walk(dir) {
  for (const name of readdirSync(dir)) {
    const p = join(dir, name);
    const st = statSync(p);
    if (st.isDirectory()) { if (!SKIP_DIRS.has(name)) walk(p); continue; }
    if (!EXTS.has(extname(name)) && !name.startsWith(".env")) continue;
    readFileSync(p, "utf8").split("\n").forEach((line, i) => {
      for (const m of line.matchAll(MODEL_RE)) hits.push({ file: p, line: i + 1, id: m[0] });
    });
  }
}
walk(ROOT);
 
let urgent = 0;
for (const h of hits) {
  const r = RETIRING[h.id];
  const tag = r ? `要置換 → ${r.to}(${r.on} 終了)` : ALIAS.test(h.id) ? "別名: 指す先を公式で確認" : "対象外";
  if (r) urgent++;
  console.log(`${h.file}:${h.line}\t${h.id}\t${tag}`);
}
console.log(`\n合計 ${hits.length} 件 / 要置換 ${urgent} 件`);
process.exit(urgent > 0 ? 1 : 0);

使い方はこの 1 行です。

node audit-models.mjs ./my-app

要置換の行が 1 件でもあれば終了コードが 1 になります。あとで確認するときに、この値がそのまま合否の目印になります。

手順 2:試験用のフォルダで動かした結果

ご自身のプロジェクトに使う前に、私は試験用のフォルダで確かめました。.env、アプリ側の src/ai.ts、サーバー関数の supabase/functions/chat/index.ts、コメントだけを書いた src/notes.ts の 4 ファイルです。出力は次のとおりでした。

場所見つかった ID判定
.env の 1 行目claude-sonnet-4-5-20250929要置換
src/ai.ts の 1 行目claude-sonnet-4-5-20250929要置換
src/ai.ts の 2 行目claude-haiku-4-5-20251001対象外
src/notes.ts の 1 行目(コメント内)claude-sonnet-4-5別名。指す先を公式で確認
supabase/functions/chat/index.tsclaude-sonnet-4-5-20250929要置換

合計 6 件のうち、要置換は 3 件でした。ここで意外だったのは、同じ ID が 3 つの層(設定ファイル、アプリ、サーバー関数)に別々に書かれていたことです。試験用に私が作ったものですが、実際のアプリでも、あとから機能を足すたびに ID を写していけば同じことが起こるのだと思います。

手順 3:置き換えて、もう一度走らせる

置き換え先は、公式ページの移行例どおり claude-sonnet-5-5 です。完全に同じ ID の文字列だけを置き換えるので、他のモデルには触れません。

grep -rl "claude-sonnet-4-5-20250929" ./my-app --exclude-dir=node_modules --exclude-dir=.git \
  | xargs sed -i 's/claude-sonnet-4-5-20250929/claude-sonnet-5-5/g'
node audit-models.mjs ./my-app
echo "exit=$?"

試験用のフォルダでは、置き換えのあと「合計 6 件 / 要置換 0 件」となり、終了コードは 0 に変わりました。macOS の場合、sed -i のあとに '' を挟む(sed -i '' 's/…/…/g')必要があります。

落とし穴:置き換えて終わりではありません

スクリプトでわかるのは、文字列が残っていないことまでです。新しいモデルでアプリが期待どおりに動くかは、別に確かめる必要があります。モデルが変わると、返答の長さや言い回し、出力の形式が変わることがあります。JSON で返してもらう処理や、返答の先頭だけを見て分岐する処理は、特に動かしてみるのが確実です。

もう 1 つ、スクリプトの対象外にしたものがあります。claude-sonnet-4-5 のような日付なしの別名です。これがどのモデルを指すかは公式の記載で確認する必要があり、私の手元の確認では断定できませんでした。そのため「判定できない」と表示するだけにしています。

また、このスクリプトが見るのは、ソースと設定ファイルの文字列だけです。管理画面や、Supabase・Cloudflare などの環境変数に直接入力した値、あるいは別のサービスの設定は見えません。コードを直したあとに、そうした場所も一度ご自身の目で開いて確かめてください。

今後のために:モデル ID を 1 か所にまとめる

次に同じ連絡が来たときに慌てないよう、置き換えのついでに ID を定数にまとめておく形を載せておきます。こちらは試験フォルダで実行まではしておらず、考え方の見本としてご覧ください。

// src/config/models.ts — モデル ID はここだけに書く
export const CHAT_MODEL = process.env.CLAUDE_CHAT_MODEL ?? "claude-sonnet-5-5";

呼び出し側は `import { CHAT_MODEL } from "./config/models"` として使います。こうしておけば、次の廃止連絡があっても、直す場所は 1 行で済みます。

次にやること

まず、お使いのプロジェクトで node audit-models.mjs を 1 回走らせて、件数だけ確認してみてください。0 件であれば、それで今回の作業は終わりです。

個人開発では、機能を足すたびに文字列を写しがちです。私自身、モデル ID を 1 か所の定数にまとめておくべきだったと、この試験で改めて感じました。次に機能を足すときは、そこから始めようと思っています。廃止の日付は変わることもあるため、11 月に入ったら公式の廃止ページをもう一度開いておくと安心です。

シェア

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

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

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

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

関連記事

◉ AI モデル2026-10-25
Rork で作ったアプリが Sonnet 4.5 を呼んでいないか、11月30日の前に洗い出します
Claude Sonnet 4.5 の API 提供終了は 2026年11月30日の予定です。アプリ内に残ったモデル ID を数分で洗い出すスクリプトと、見つかった場所ごとの直し方・順番をまとめました。
⬡ 開発ツール2026-09-19
Rork が書き換えた箇所だけを読む — 再エクスポートのたびに回している差分確認の手順
再エクスポートしたコードを前回との差分として読むための手順です。追跡ファイルを一度消してから重ねる、雑音を外して数える、合流の前に一度止める——この3つで上書き事故を止めています。
⬡ 開発ツール2026-09-03
リンクを押してもアプリが開かないとき、疑うのは assetlinks.json の置き場所より先に署名鍵です
Android App Links が検証されずブラウザに吸われる原因の多くは指紋の食い違いです。keytool の実出力と、手元で照合できる小さな検査スクリプトの実行結果を添えて整理しました。