◉GEMINI LABEN
●CLI — Gemini CLI の安定版は v0.62.0(9月29日)。nightly は v0.64.0(10月3日・prerelease)まで進んでいます●10/22 — veo-3.1 の preview 3種の停止まで残り17日。後継は gemini-omni-1.1-flash です●AUTH — 企業の Workspace アカウントで Gemini CLI の認証が通らないという報告(#29101)にコメント55件。切り分けの手順が求められています●NEW — Sheets から呼ぶ Gemini の月額を、年末の値上げ日をまたいで見積もる●TTS — gemini-3.8-flash-tts と gemini-3.8-flash-lite-tts が GA になりました(9月22日)。Voices エンドポイントも加わっています●12/31 — 導入価格の終了まで残り87日。3.8 / 3.7 / 3.6 Flash は入力 $0.75→$1.50、出力 $3.75→$7.50 になります●CLI — Gemini CLI の安定版は v0.62.0(9月29日)。nightly は v0.64.0(10月3日・prerelease)まで進んでいます●10/22 — veo-3.1 の preview 3種の停止まで残り17日。後継は gemini-omni-1.1-flash です●AUTH — 企業の Workspace アカウントで Gemini CLI の認証が通らないという報告(#29101)にコメント55件。切り分けの手順が求められています●NEW — Sheets から呼ぶ Gemini の月額を、年末の値上げ日をまたいで見積もる●TTS — gemini-3.8-flash-tts と gemini-3.8-flash-lite-tts が GA になりました(9月22日)。Voices エンドポイントも加わっています●12/31 — 導入価格の終了まで残り87日。3.8 / 3.7 / 3.6 Flash は入力 $0.75→$1.50、出力 $3.75→$7.50 になります
記事一覧/API / SDK
◈ API / SDK/2026-08-20上級

ANR のスレッドダンプをそのまま Gemini に投げない

ANR ダンプは 96 スレッドで 33,616 文字ありました。main だけを抜けば 98% 減りますが、原因のスレッドは消えます。待ちの連鎖だけを残す前処理を実測しながら組み立てます。

gemini-api286android8anrdebuggingprompt-engineering14

✦ プレミアム記事

段階公開を 5% で開始した翌朝、Play Console の Vitals に ANR がひとつ増えていました。

個人開発でアプリを出していると、この 5% の窓はとても短く感じます。24 時間ほど様子を見て、続けるか止めるかを決めなければなりません。クラッシュであれば Crashlytics のスタックトレースを読めば当たりが付きます。けれど ANR は事情が違いました。

開いたダンプには、96 個のスレッドが並んでいました。

5% の窓では、読む時間そのものが足りません

私は普段、段階公開を 5% → 25% → 50% → 100% と刻んで、Crash-free users と ANR 率を見ながら次に進めるかを決めています。クラッシュ側については、難読化を戻してから Gemini に渡す前処理を組んでいて、これは今もうまく回っています(この経緯は難読化されたスタックトレースを Gemini に渡していた記録に書きました)。

同じ調子で ANR ダンプも Gemini に丸ごと投げてみたのですが、これがうまくいきませんでした。返ってくる説明はどれも「メインスレッドが I/O を待っている可能性があります」といった、ダンプを見なくても言えることばかりだったのです。

原因は、渡し方にありました。

ANR ダンプはスタックトレースではなく、スレッドの一覧です

クラッシュのスタックトレースは、落ちた一本の呼び出し履歴です。読む対象が最初から一つに絞られています。

ANR ダンプは違います。ANR は「メインスレッドが一定時間応答しなかった」という事象なので、システムはプロセス内の全スレッドの状態を書き出します。広告 SDK・画像ローダ・Firebase・コルーチンのディスパッチャが載っている実アプリでは、これが数十から百を超える単位になります。

そして重要なのは、その中にスレッド同士の関係が書かれていることです。

"main" prio=5 tid=1 Blocked
  - waiting to lock <0x0e3a41c8> (a net.dolice.wallpapers.data.AssetIndex) held by thread 27
  at net.dolice.wallpapers.data.AssetIndex.lookup(AssetIndex.java:184)
  at net.dolice.wallpapers.ui.GridAdapter.onBindViewHolder(GridAdapter.java:96)

waiting to lock <アドレス> ... held by thread 27 の一行が、main と 27 番スレッドを結ぶ辺です。そして 27 番自身が別のロックを待っていれば、辺はさらに先へ伸びます。

ANR の原因は、この連鎖の終端にいます。main のフレームには「待っている」という事実しか書かれていません。

✦

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

この記事の続きを読む

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

この記事で得られること
✦ANR ダンプのどこを残してどこを捨てるかを、待ちの連鎖という一つの基準で自分で判断できるようになります
✦main スレッドだけを抜き出す前処理が原因を取りこぼす構造を理解し、実装してから気づく回り道を避けられるようになります
✦96 スレッド・33,616 文字のダンプを 3 スレッド・1,898 文字まで削る前処理を、自分の解析コードに組み込めるようになります
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

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

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

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

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

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

関連記事

◈ API / SDK2026-06-23
Gemini 3.2 Pro の Function Calling を iOS/Android アプリに統合する実装パターン
Gemini 3.2 Pro の Function Calling を iOS/Android アプリに統合する実装ガイド。SwiftUI・Kotlin 両対応の動くコード例と、個人開発の壁紙アプリで実証した本番設計パターン(コスト・レイテンシ・段階ロールアウト・回帰テスト)を解説します。
◈ API / SDK2026-05-16
Firebase Crashlytics のクラッシュログを Gemini API で自動分析した記録 — 個人開発アプリ v2.1.0 での実証
Firebase Crashlytics の生ログを Gemini API に渡して根本原因とコード修正案を自動生成するパイプラインを、個人開発の壁紙アプリ v2.1.0 の実開発で検証した記録です。RecyclerView クラッシュの Before/After 付き。
◈ API / SDK2026-04-29
Gemini API の動的 Few-Shot 設計 — ベクター検索で実例を選び続ける自己改善型プロンプト
Few-Shot プロンプトを「固定の3例」で書いているうちは精度もコストも頭打ちになります。Gemini Embeddings + ベクター検索で例を動的に選ぶ自己改善型プロンプト設計を、コピペで動くコードと運用ループまで通しで解説します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます