◉GEMINI LABEN
●ARGON — gemini-4-argon が 10/13 に GA。複雑なコーディング・エージェント・数学・科学向けです●DEEP RES — 旧 Deep Research エージェントは 10/23 に停止済み。呼び出しが失敗する場合は deep-research-preview-04-2026 へ●NANO — gemini-nano-banana-2.1 が GA(10/06)。gemini-3.1-flash-image は非推奨で停止日は未発表です●MCP — ツール結果が 8.5万トークンに膨らんだ事例を、ADK で 310 トークンに包んで抑えた報告が出ています●FLASH — gemini-3.7-flash と 3.5-flash は新しい Flash モデルに自動で回されます(10/08)●NEW — クラッシュ報告を毎回ゼロから読ませない — 既知バグ早見表を先に grep し…●ARGON — gemini-4-argon が 10/13 に GA。複雑なコーディング・エージェント・数学・科学向けです●DEEP RES — 旧 Deep Research エージェントは 10/23 に停止済み。呼び出しが失敗する場合は deep-research-preview-04-2026 へ●NANO — gemini-nano-banana-2.1 が GA(10/06)。gemini-3.1-flash-image は非推奨で停止日は未発表です●MCP — ツール結果が 8.5万トークンに膨らんだ事例を、ADK で 310 トークンに包んで抑えた報告が出ています●FLASH — gemini-3.7-flash と 3.5-flash は新しい Flash モデルに自動で回されます(10/08)●NEW — クラッシュ報告を毎回ゼロから読ませない — 既知バグ早見表を先に grep し…
記事一覧/API / SDK
◈ API / SDK/2026-07-27上級

消えないプロンプト資産をたたむ — 静的参照だけでは見えない稼働経路を炙り出す退役台帳

一本化したはずの旧プロンプトがまだ毎日呼ばれている——そんな見えない稼働経路を炙り出す退役台帳の設計です。静的参照、フラグ既定値、観測窓、モデル停止日、キャッシュ実効率の5つを突き合わせる判定基準と、実運用で得た設計の勘所を実行結果とともにまとめました。

Gemini API250プロンプト管理本番運用49コンテキストキャッシュ3アーキテクチャ14

✦ プレミアム記事

請求の内訳を眺めていて、指が止まりました。

壁紙の分類に使うプロンプトは、少し前に v3 へ一本化したはずでした。それなのに、v2 の系統が毎日きちんと呼ばれています。コードを検索しても wallpaper.classify.v2 という文字列はどこにも出てきません。出てこないのに、動いています。

原因そのものは、後から振り返れば単純なものでした。けれど、その日にいちばん堪えたのは、原因ではなく構造のほうです。個人開発でアプリを何本も抱えたままモデルを呼ぶ箇所が増えていくと、プロンプトはコードほど素直には死んでくれません。参照が消えても、設定に残り、スケジューラに残り、キャッシュのハンドルとして残ります。そして誰も見ていない場所で、静かに課金され続けます。

その週末に組んだのが、本稿で扱う退役台帳です。

プロンプトはコードほど素直に死なない

関数は、呼び出し元が消えれば静的解析が教えてくれます。リンタが未使用を警告し、削除しても何も壊れません。プロンプトはそうなりません。

理由は三つあると考えています。

第一に、プロンプトの識別子は文字列です。設定ファイルや環境変数、データベースの行に入り込むと、コンパイラの視界から外れます。第二に、実行の起点がアプリ本体の外にあります。スケジューラ、Webhook、バッチ、Apps Script — 呼ぶ側がリポジトリの中にいるとは限りません。第三に、Gemini API では資産がプロンプト本文だけで完結しません。ピン留めしたモデル ID、cachedContents のハンドル、responseSchema の版がぶら下がっていて、それぞれ別の寿命を持ちます。

とくに三つ目は 2026 年に入ってから重みが増しました。既定モデルが告知を伴わずに置き換わる場面が現実に起きていますし、旧来の画像生成モデルには停止日が設定されています。モデル ID をプロンプト側にピン留めしている資産は、放っておくと「消し忘れ」ではなく「期限切れ」として跳ね返ってきます。

だから必要なのは、プロンプトを消すための道具ではありません。消してよいかどうかを、複数の観点から同時に判定する台帳です。

最初の版は、稼働中の経路に「即時退役可」を出した

最初に書いたのは素直な実装でした。ソースを走査してプロンプト ID の文字列参照を集め、見つからなければ退役可、という判定です。フラグの既定値と最終実行日も見るようにして、上から順に当てはまった分類を返す先勝ち方式にしました。

サンプルの台帳に対して走らせた出力が、これです。

store.screenshot.caption.v1  MODEL_EOL           gemini-3.1-flash-image-preview は 2026-08-17 停止。移行期限あり
wallpaper.classify.v2        UNREACHABLE         ソース参照なし・最終実行 1 日前。即時退役可
wallpaper.caption.legacy     UNREACHABLE         ソース参照なし・最終実行 162 日前。即時退役可
review.reply.draft.v2        GATED               フラグ review_autoreply が既定 false。フラグ削除が先・現状は到達不能

二行目で手が止まりました。

「ソース参照なし」と「最終実行 1 日前」が、同じ行に並んでいます。判定は「即時退役可」。この助言に従っていたら、毎日動いている経路を消していました。

静的に見つからないことと、動いていないことは、別の事実です。頭では分かっていたつもりでしたが、先勝ちの分類器はそれを一つのラベルに潰してしまいます。静的解析の結果を優先した瞬間に、より確度の高い証拠である「昨日実行された」という観測を捨てていたわけです。

そこで、この状態に固有の名前を与えることにしました。PHANTOM — 静的には見えないのに稼働している経路です。退役台帳において、これは「消してよい」の対極にあります。消してはいけないどころか、真っ先に調べるべき対象です。ID がどこで組み立てられているのか分からない、という事実そのものが、その資産の管理が外れている証拠だからです。

判定はこう書き換えました。

referenced = pid in refs
live = idle <= period          # 直近 1 周期以内に実行された=稼働中
 
if not referenced and live:
    findings.append(("PHANTOM", f"ソース参照なし・しかし {idle} 日前に実行。ID が動的生成されている疑い"))
elif not referenced:
    findings.append(("UNREACHABLE", f"ソース参照なし・{idle} 日休眠。退役可"))

たった一行の分岐ですが、台帳の性格が変わりました。「参照が無い」を退役の根拠ではなく、観測と突き合わせるべき仮説として扱うようになったからです。

✦

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

この記事の続きを読む

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

この記事で得られること
✦静的参照が無いのに稼働する PHANTOM 経路を、last_hit との突き合わせで検出する判定ロジック(Python 実装つき)
✦一律90日の休眠判定が、年次バッチ(210日休眠)を誤削除し85日停止の日次資産を見逃すことの実行比較
✦cachedContents 実効率11%の資産を退役より先に是正する優先順位と、CI を落とす重大度の境界設計
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

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

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

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

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

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

関連記事

◈ API / SDK2026-04-26
マルチテナント SaaS で Gemini API を安全に提供する設計 — テナント分離・課金計測・暴走防止の本番アーキテクチャ
Gemini API を複数テナントに提供する SaaS の本番アーキテクチャを Python コードつきでまとめました。テナント分離モデルの選択、テナント別レート制限、リクエスト単位の課金計測、月予算ガードとサーキットブレーカーによる暴走防止まで扱います。
◈ API / SDK2026-05-21
Gemini API × Cloud Pub/Sub によるイベント駆動 AI ワークフロー設計 — 個人開発者の実装メモ
Gemini API を Cloud Pub/Sub のイベント駆動型ワークフローに組み込む実装メモ。アプリレビュー解析パイプラインを題材に、リトライ・デッドレター・冪等性・コスト管理までを個人開発の視点で整理しました。
◈ API / SDK2026-05-04
Gemma 4 と Nemotron 3 Nano Omni を、総合スコアではなく自分の画像100枚で採否判定する
日本語マルチモーダルのローカル運用を検討するとき、Heron-Bench や JMMMU の総合スコアは採否の材料になりません。壁紙アプリの分類を題材に、100枚の評価セットの組み方・誤りのコストで重み付けした判定・量子化更新での回帰検知までを動くコードで組み立てます。