すべての記事
アプリに載せる AI 機能を、実行時呼び出しから配布前の一括処理に寄せました
アプリに Gemini を組み込むとき、実行時に呼ぶか配布前に呼び終えるかで呼び出し回数の増え方が変わります。素材数に比例させる設計へ切り替えた判断基準と、冪等な一括処理の実装をまとめました。
段階公開を止める判断だけは、Gemini に渡さないことにしました
段階公開の初日に見えるクラッシュ率には、良し悪しを判定できるだけの母数がありません。止める・進める・まだ言えないの3状態に分け、Gemini にはレビュー本文の帰属判定だけを任せた配線を残します。
メディエーショングループが20を超えたとき、設定の抜けをどう見つけるか
広告メディエーションのグループが増えると、設定の抜けや型のずれが静かに溜まります。設定を1枚の表に正規化して機械でずれを確定させ、判断が必要なセルだけを Gemini に渡す分担にした手順をまとめました。
アシスタント前提の記述が、自分のアプリに何箇所残っているか
9月4日から Android の Google アシスタントが Gemini へ置き換わります。自分のアプリのどこがアシスタント経由で開かれる入口なのかを grep で洗い出し、実機で確かめる発話まで用意する手順をまとめました。
通知文の長さ指示が英語版だけ効かなかった理由と、生成後に幅で詰める実装
日英2言語のプッシュ通知を Gemini に生成させたところ、英語版だけが実機で途切れていました。原因は文字数での長さ指示です。表示幅の実測値と、生成後に詰めるフィッティング実装をまとめました。
Gemini に書かせたレビュー返信を、送信前に止めるための最小の検査
ストアのレビュー返信は下書きより送信後が怖い作業です。守れない約束・連絡先の混入・文体崩れを送信前に機械で止める Python の検査を、実際に走らせた結果と誤検出の修正まで含めて置いておきます。
ANR のスレッドダンプをそのまま Gemini に投げない
ANR ダンプは 96 スレッドで 33,616 文字ありました。main だけを抜けば 98% 減りますが、原因のスレッドは消えます。待ちの連鎖だけを残す前処理を実測しながら組み立てます。
gemini-2.5-flash が「no longer available」で404を返しても、公式表の停止日は未告知のままです
gemini-2.5-flash の停止日は公式の廃止一覧から消えたままですが、404 の報告は7月から出ています。停止日の欄を安全マージンとして読むと外れる理由と、手元のキーで確かめる手順をまとめました。
Gemini 3.7 Flash と 3.1 Pro の使い分けを、速さではなくやり直しのコストで決める
新しい Flash が出るたびにモデル選定をやり直す作業を、判断基準ごと組み替えました。出力の誤りを機械で拾えるかどうかで振り分ける方法と、導入価格が切れる12月31日をまたいだ費用の出し方をまとめています。
Google アシスタントの置き換えは戻せないので、基準線は今しか取れません
9月4日から Google アシスタントが Gemini へ置き換わり、切り替わった端末は元に戻せません。音声から開かれた起動をアプリ側で見分けて記録し、置き換え前の基準線を残すまでの作業と、日付では前後を切れないという誤算をまとめます。
generated_images が消えたあとの受け取り方 — 戻り値から画像ファイルになるまでの3つの分岐
generate_content へ書き換えたあと、保存の行で落ちるのは戻り値の形が変わっているからです。画像 part が0件のとき・枚数が揺れるとき・拡張子を決めるときの3分岐と、そのまま使える受け取り関数をまとめます。
配布済みアプリに残るモデル名と、停止日をまたいだ切り戻しの設計
サーバー側の移行が終わっても、ユーザーの端末で動いている旧バージョンのアプリは古いモデル名を握ったままです。停止日をまたぐと切り戻しが復旧手段でなくなる構造と、モデル解決をサーバーに寄せる設計をまとめます。