GEMINI LABEN
MEMORY — Memory Bank の Memory Profiles が GA になりました。静的スキーマの構造化プロファイルにより、セッション中の検索を挟まずに情報へ到達できますSCOPE — プロファイルは取り込み時のスコープごとに分離され、スキーマとスコープの組み合わせに対して単一のプロファイルが維持されますINGEST — IngestEvents API が GA になり、イベントのストリーミング・メモリのリビジョン管理・メタデータの付与が扱えるようになりましたAUDIO — gemini-3.1-flash-tts-preview が streamGenerateContent 経由のストリーミングに対応し、読み上げ開始までの待ち時間が縮みましたCLASSROOM — 8月10日から、既にアクセス権を付与されている K-12 と高等教育の全年齢の学生が Gemini in Classroom を利用できるようになりますSUNSET — 停止日が迫っています。8月17日に画像生成モデル、20日に Grok 4.1 ファミリー、31日に gemini-robotics-er-1.6-preview ですMEMORY — Memory Bank の Memory Profiles が GA になりました。静的スキーマの構造化プロファイルにより、セッション中の検索を挟まずに情報へ到達できますSCOPE — プロファイルは取り込み時のスコープごとに分離され、スキーマとスコープの組み合わせに対して単一のプロファイルが維持されますINGEST — IngestEvents API が GA になり、イベントのストリーミング・メモリのリビジョン管理・メタデータの付与が扱えるようになりましたAUDIO — gemini-3.1-flash-tts-preview が streamGenerateContent 経由のストリーミングに対応し、読み上げ開始までの待ち時間が縮みましたCLASSROOM — 8月10日から、既にアクセス権を付与されている K-12 と高等教育の全年齢の学生が Gemini in Classroom を利用できるようになりますSUNSET — 停止日が迫っています。8月17日に画像生成モデル、20日に Grok 4.1 ファミリー、31日に gemini-robotics-er-1.6-preview です
記事一覧/開発ツール
開発ツール/2026-07-16上級

生成ログを丸ごと残すのをやめました — 3層の保持設計とプロンプト指紋で追跡性だけを残す

障害調査のために Gemini API のリクエストとレスポンスを丸ごと保存していました。3層の保持設計とプロンプト指紋に切り替え、本文を消しても原因を辿れる状態を保った記録です。

Gemini API207ログ設計データ保持運用8Firestore

プレミアム記事

深夜の自動処理が同じカテゴリばかり返してくるようになり、原因を探そうとログを開きました。

3ヶ月前のレコードまで遡れました。リクエスト本文も、レスポンス本文も、そっくり残っていました。便利です。便利すぎました。

そこにはアプリの利用者が打ち込んだ文章が、そのままの形で並んでいました。障害調査のために残したはずのものが、いつのまにか「消す理由を誰も検討していないデータ」になっていた。画面を見ながら、少し手が止まりました。

ストレージの請求額の話ではありません。私が個人で回している処理に、他人の言葉を無期限に置いておく理由があるのか、という話です。

私自身、消す設計を一度も書いていませんでした。書かなければ残る。ログとは、そういうものでした。

全部残す設計は、何を抱えていたのか

当時のログは素朴でした。Gemini API を呼ぶラッパーの中で、リクエストとレスポンスを丸ごと JSON にして Firestore へ書く。それだけです。

3ヶ月動かした結果が次の通りでした。壁紙分類・記事メタデータ生成・レビュー返信の下書きを合わせた、個人開発規模の数字です。

項目実測
レコード数約 41,000 件(3ヶ月)
1件あたり平均サイズ約 11 KB(本文込み)
合計約 450 MB
実際に人が開いたレコード62 件

41,000 件を保存して、開いたのは 62 件。0.15% です。

しかも開いた 62 件のうち、本文を読む必要が本当にあったのは 20 件ほどでした。残りは「どのモデルで」「いつ」「どれくらいのトークンで」「どう終了したか」を見れば足りていました。

つまり本文は、調査の主役ではなかった。主役は文脈のほうでした。

原因を辿るのに、最小限どこまで要るのか

先に「捨てた場合に何が困るか」を書き出しました。実際に過去に起きた調査だけを対象にしています。

  1. 出力の傾向が変わった → いつから変わったか、その前後でモデルまたはプロンプトが変わったか
  2. コストが跳ねた → どの処理が、どのトークン内訳で膨らんだか
  3. 特定の入力で必ず失敗する → その入力の(長さ・言語・添付の有無)と finishReason
  4. 出力が途中で切れる → maxOutputTokens と実際の出力トークン

4つとも、本文そのものを必要としていませんでした。必要なのは「そのとき何を投げたかを一意に識別できること」でした。

同じ入力を投げていたのか、違う入力だったのか。それさえ分かれば、あとは条件を再現して手元で試せます。

ここから設計が決まりました。本文を消す代わりに、本文の同一性だけを残す

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

この記事の続きを読む

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

この記事で得られること
本文を残さずに原因を辿るための「プロンプト指紋」の作り方と、指紋に何を含めて何を含めないかの線引き
Tier 0/1/2 の保持階層と Firestore TTL ポリシーの実装。保存量を約 92% 減らしても調査可能率を保った実測
失敗100%・成功3%の層別サンプリングと、指紋だけでモデル入れ替えを特定できた実例
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

開発ツール2026-08-05
テストは緑のまま、本番だけが止まる — 録画フィクスチャがモデル停止を隠す構造と freshness gate
録画済みAPIレスポンスで回るテストスイートは、モデル停止をすり抜けます。6件全部緑のまま404になる構造を最小構成で再現し、cassette走査のfreshness gateを実装・実測しました。
開発ツール2026-07-25
gemini-flash-latest への追従をやめた日 — モデルの静かな置き換えに耐えるバッチ設計
発表を伴わないモデル更新で、安定していたバッチの拒否率が一晩で4倍を超えました。gemini-flash-latest への追従をやめ、ピン留めとカナリア昇格の二段構えに移行するまでの実測と設計判断をまとめております。
開発ツール2026-07-18
難読化されたスタックトレースを Gemini に渡していました — retrace を前段に置くまで、診断はもっともらしく外れ続けます
release ビルドのスタックトレースは R8 で名前が潰れています。それをそのまま Gemini に渡すと、診断は落ち着いた文体のまま外れます。retrace を前段に置き、mapping を versionCode で突合し、復元できないときは断定させない。42件で数え直した記録です。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →