GEMINI LABEN
PRO35 — 報道が目標日としていた7月17日を過ぎましたが、Gemini 3.5 Proの公式発表もモデルカードも本日時点で確認できていません。予備日として7月24日が挙げられていますNB2LITE — Nano Banana 2 Lite(Gemini 3.1 Flash-Lite Image)が登場しました。約4秒で画像を生成し、1,000枚あたり0.034ドルという水準ですOMNI — Gemini Omni Flashが公開プレビューに入りました。最長10秒の動画を生成でき、価格は出力1秒あたり0.10ドルですEDIT — Omni Flashは会話による編集を軸に設計されています。登場人物の差し替え、ライティングの変更、アングルの調整を自然文で指示でき、元の音声と映像のトラックは保持されますSYNTHID — 新しい2モデルにはSynthIDの電子透かしが組み込まれており、生成物の来歴をGeminiアプリ側から確認できますSHUTDOWN — 旧来の画像生成モデルは非推奨となり、8月17日に停止されます。移行の期限をご確認いただければと思いますPRO35 — 報道が目標日としていた7月17日を過ぎましたが、Gemini 3.5 Proの公式発表もモデルカードも本日時点で確認できていません。予備日として7月24日が挙げられていますNB2LITE — Nano Banana 2 Lite(Gemini 3.1 Flash-Lite Image)が登場しました。約4秒で画像を生成し、1,000枚あたり0.034ドルという水準ですOMNI — Gemini Omni Flashが公開プレビューに入りました。最長10秒の動画を生成でき、価格は出力1秒あたり0.10ドルですEDIT — Omni Flashは会話による編集を軸に設計されています。登場人物の差し替え、ライティングの変更、アングルの調整を自然文で指示でき、元の音声と映像のトラックは保持されますSYNTHID — 新しい2モデルにはSynthIDの電子透かしが組み込まれており、生成物の来歴をGeminiアプリ側から確認できますSHUTDOWN — 旧来の画像生成モデルは非推奨となり、8月17日に停止されます。移行の期限をご確認いただければと思います
記事一覧/開発ツール
開発ツール/2026-07-18上級

難読化されたスタックトレースを Gemini に渡していました — retrace を前段に置くまで、診断はもっともらしく外れ続けます

release ビルドのスタックトレースは R8 で名前が潰れています。それをそのまま Gemini に渡すと、診断は落ち着いた文体のまま外れます。retrace を前段に置き、mapping を versionCode で突合し、復元できないときは断定させない。42件で数え直した記録です。

Gemini API189Android10R8Crashlytics個人開発89

プレミアム記事

java.lang.NullPointerException at a.a.a.b(SourceFile:0)

この 1 行を渡したとき、モデルは「RecyclerView.AdapteronBindViewHolder で、非同期に差し替えられたリストへ古い position でアクセスしています」と答えてきました。落ち着いた文体で、対処コードまで添えて。

私はしばらく、その答えを疑いませんでした。心当たりのある症状だったからです。ところが実際に該当箇所を追っていくと、a.a.a.b はアダプタではなく、画像のキャッシュキーを組み立てるユーティリティでした。RecyclerView はどこにも出てきません。

モデルは嘘をついたわけではありません。a.a.a.b という文字列には、もともと何の情報も残っていなかった。情報がない場所で「それらしいこと」を言わせれば、それらしい答えが返ってくる。当たり前のことを、私は 3 週間ほど見落としていました。

a.a.a.b(SourceFile:0) に、モデルは自信を持って答えました

個人開発で Android の壁紙アプリを運用していて、致命的でない例外——落ちはしないが握りつぶしている箇所——を自前のシンクに集めています。Crashlytics に上がるほどではないけれど、放っておくと表示が欠ける類のものです。

ここが盲点でした。Firebase のコンソールを開けば、スタックトレースは人間が読める名前で表示されます。Crashlytics の Gradle プラグインがビルド時に mapping ファイルを送っており、画面側で復元してくれているからです。私はその画面を毎日見ていたので、「Android のクラッシュログは読める形で手に入るもの」だと思い込んでいました。

自前で Thread.setDefaultUncaughtExceptionHandlertry-catch から拾った例外には、その復元が一切かかりません。

// 非致命的な例外を自前のシンクへ送る箇所。
// release ビルドでは e.stackTraceToString() の中身は R8 で名前が潰れています。
private fun reportNonFatal(e: Throwable, context: String) {
    val payload = NonFatalPayload(
        versionCode = BuildConfig.VERSION_CODE,   // ← 後でこれが効いてきます
        versionName = BuildConfig.VERSION_NAME,
        context = context,
        stackTrace = e.stackTraceToString(),      // release では "a.a.a.b(SourceFile:0)" 形式
    )
    sink.enqueue(payload)
}

debug ビルドで動かしている間は、この stackTrace は完全な形で出ます。R8 は release ビルドでしか走らないからです。手元では読める。本番では潰れている。そして本番のものだけが、私の分析パイプラインに流れ込んでいました。

Gemini に渡していたのは、後者です。

逆難読化は、確率で解く問題ではありません

ここが、この記事でいちばん伝えたいことです。

a.a.a.b から WallpaperCacheKeyBuilder.append を復元する作業は、答えが 1 つに決まる作業です。mapping ファイルという対応表があり、そこを引けば正解が出る。曖昧さはありません。

一方、言語モデルがやっているのは、文脈から最もありそうな続きを選ぶことです。対応表がなければ、a.a.a.b から復元できるはずがない。それでも何かを答えさせれば、学習データの中で頻出する「Android でよくあるクラッシュ」を語り始めます。RecyclerView が出てきたのは、たぶんそういう理由です。

私は、決定的に解ける問題を確率的な仕組みに投げていました。これは Gemini の限界ではなく、私の設計の誤りです。

判断の軸として、こう置き直しました。対応表を引けば済むことは、対応表を引く。モデルには、表を引いた後にしか分からないことを聞く。

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

この記事の続きを読む

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

この記事で得られること
難読化されたトレースを渡して「もっともらしいが的外れな」診断を受け取っていた人が、retrace を前段に挟むだけで根拠つきの診断に切り替えられます
mapping.txt をプロンプトに同梱する構成をやめ、versionCode で mapping を突合してから逆難読化する Python の完全なパイプラインを持ち帰れます
復元できなかったトレースを「捨てる・断定させない・そのまま通す」で切り分ける responseSchema と縮退の判断表が手に入ります
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

開発ツール2026-06-20
Geminiの工程別モデル割り当て — 下書きはFlash、仕上げは上位ティアで回す自動運用の組み方
Gemini 3.5 Flash の一般提供と 3.1 Flash-Lite の展開を機に、自動運用パイプラインの工程ごとにモデルを割り当て直した記録です。下書き・分類・仕上げの3段に分けるルーターの実装と、コストの見え方の変化、運用で決めた歯止めのルールを紹介します。
API / SDK2026-05-17
Gemini API で iOS/Android アプリのメタデータを30言語自動生成した実装 — Beautiful HD Wallpapers の多言語化で気づいたこと
累計5,000万DLの壁紙アプリで実際に試した、Gemini APIを使ったApp Store/Google Playメタデータの多言語自動生成。翻訳精度を担保するプロンプト設計から文字数制限への対応まで、実装コードとともに公開します。
開発ツール2026-07-16
生成ログを丸ごと残すのをやめました — 3層の保持設計とプロンプト指紋で追跡性だけを残す
障害調査のために Gemini API のリクエストとレスポンスを丸ごと保存していました。3層の保持設計とプロンプト指紋に切り替え、本文を消しても原因を辿れる状態を保った記録です。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →