◉GEMINI LABEN
●FLASH — 3.7 Flash と 3.5 Flash が非推奨に。旧名への要求は 3.8/3.6 Flash へ自動で回されます●NANO 2.1 — gemini-nano-banana-2.1 が GA。gemini-3.1-flash-image は非推奨で停止日は未発表●DEADLINE — veo-3.1 の preview と gemini-omni-flash-preview は 10/22、Deep Research の旧エージェントは 10/23 に停止(残り11〜12日)●Q&A — Gemini CLI でツールを 128 個超で渡すと 400 エラーになる、という報告が出ています●TTS 3.8 — Gemini 3.8 Flash TTS と Flash-Lite TTS が GA。Voices エンドポイントも追加されました●NEW — 家計や健康の相談を履歴に残さない。一時チャットと設定の確認●FLASH — 3.7 Flash と 3.5 Flash が非推奨に。旧名への要求は 3.8/3.6 Flash へ自動で回されます●NANO 2.1 — gemini-nano-banana-2.1 が GA。gemini-3.1-flash-image は非推奨で停止日は未発表●DEADLINE — veo-3.1 の preview と gemini-omni-flash-preview は 10/22、Deep Research の旧エージェントは 10/23 に停止(残り11〜12日)●Q&A — Gemini CLI でツールを 128 個超で渡すと 400 エラーになる、という報告が出ています●TTS 3.8 — Gemini 3.8 Flash TTS と Flash-Lite TTS が GA。Voices エンドポイントも追加されました●NEW — 家計や健康の相談を履歴に残さない。一時チャットと設定の確認
記事一覧/API / SDK
◈ API / SDK/2026-06-20上級

Gemini のモデル非推奨を CI で先回りして止める仕組み

ハードコードされた Gemini のモデル ID を CI で走査し、シャットダウン期限が近いものを残り日数つきで検知する仕組みを動くコードで組み立てます。稼働中モデル一覧との突き合わせ、GitHub Actions と日次 cron への組み込み、運用の工夫まで扱います。

Gemini API246モデル非推奨CI7運用自動化個人開発121

✦ プレミアム記事

6月25日に gemini-3.1-flash-image-preview と gemini-3-pro-image-preview が停止します。この一文を非推奨ページで見たとき、私が最初に困ったのは「移行手順」ではありませんでした。困ったのは、自分が運営している複数のリポジトリのうち、どこでこの2つのモデルIDを参照しているのかを即答できなかったことです。

個人開発で4つの技術ブログ(Dolice Labs)とモバイルアプリを並行して回していると、モデルIDは OGP 画像の生成スクリプト、記事内のサンプルコード、アプリ側の壁紙生成バッチと、あちこちに散らばります。1か所だけ古いIDが残っていて、停止当日に静かに 404 を返し始める——これが一番こわい壊れ方です。エラーは出るのに、出る場所が予想と違う。

そこで私が用意したのは、コードベースを走査してモデルIDを集め、停止期限が近いものを残り日数つきで CI に報告させる小さなガードでした。移行作業そのものより、「移行し忘れを検知する仕組み」を先に持つほうが、結局は気持ちが楽になります。ここから先は、そのガードを動く Python で一緒に組み立てていきます。

なぜ「非推奨の見落とし」は個人開発で起きやすいのか

大きなチームであれば、依存ライブラリのバージョン管理や SRE のダッシュボードで、こうした期限はどこかに記録されます。個人開発では、その記録が「自分の記憶」に置かれがちです。そして記憶は、3か月後のリリース直前に最も当てになりません。

もう一つの理由は、Gemini のモデルIDが文字列だからです。pip の依存解決のように壊れたら即座にビルドが落ちるわけではなく、停止日まではそのまま動きます。テストも通ります。だからこそ、停止日を「カレンダー」ではなく「CI の合否」に変換しておく価値があります。人間がカレンダーを見るのを忘れても、CI は毎回見てくれます。

私自身、2026年5月に gemini-2.0-flash 系の縮退を経験したとき、移行自体は一行の置き換えで済みました。けれど「どこを置き換えるか」を手で探す時間のほうが長く、しかも1か所取りこぼしていました。あの取りこぼしを CI で拾えていたら、と思ったのがこの仕組みの出発点です。

仕組みの全体像 — 3つの部品

組み立てるガードは、次の3部品からできています。役割を分けておくと、後で各部品を差し替えやすくなります。

部品役割入力 / 出力
スキャナリポジトリ内のモデルID参照を集めるソースツリー → 参照リスト
レジストリモデルごとの停止予定日を保持するYAML/辞書 → 期限マップ
判定器残り日数を計算し、存在確認も行い、終了コードを決める参照+期限+models.list → 合否

ここで一番悩むのは「停止日をどこから取るか」です。結論から言うと、停止日は API から確実には取れません。models.list はモデルの存在や説明は返しますが、「いつ止まるか」を機械可読な形で常に返してくれるわけではありません。そこで、停止日だけは自分の小さなレジストリで持ち、models.list は「そのIDがまだ生きているかの存在確認」に使う、という役割分担にします。これが実運用でつまずかないための肝です。

✦

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

この記事の続きを読む

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

この記事で得られること
✦シャットダウン期限を見落として本番パイプラインが突然壊れる、を二度と起こさない検知の仕組みを今日から動かせる
✦models.list の存在確認と、自分で持つ期限レジストリを突き合わせる実装パターンをコピペで導入できる
✦GitHub Actions と日次 cron の両方に同じスクリプトを差し込み、残り日数に応じて警告と失敗を出し分けられる
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

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

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

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

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

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

関連記事

◈ API / SDK2026-08-27
temperature が効いているかを測るより渡した値を記録する方が先です
非推奨になったサンプリングパラメータは 200 が返るまま無視されます。grep と AST が取りこぼした箇所を実行時に拾い、設定の組み立て元まで記録して CI の合否に変えるまでを、実際に動かした結果とともにまとめます。
◈ API / SDK2026-09-29
『F6号』と『A4くらい』が同じ列に並ぶ作品台帳を、Gemini の読み取りと号数表の換算で cm に揃えるまで
作家さんの作品台帳に『F6号』『41×31.8cm』『A4くらい』が混ざっていました。Gemini API には読み取りだけを頼み、換算は号数表、向きは画像で決める小さな道具を、動くコードとともに一本ずつ組み立てます。
◈ API / SDK2026-09-11
文字起こしの固有名詞が直らないとき、カスタム語彙に何を入れて何を諦めるか
gemini-3.5-transcribe の custom_vocabulary は最大1,000語ですが、枠を埋めることが目的ではありません。誤認ログの正解と出力の対から、枠を渡す語だけを選び直す60行のスクリプトと、その判断基準をまとめます。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます