◉GEMINI LABEN
●CLI 0.62.0 — Gemini CLI v0.62.0(9月29日)に Gemini 3.8 Flash と 3.5 Flash-Lite の対応が入りました。OAuth の更新トークンを保持する修正も入っています●10/02 — 本日、gemini-2.5-flash-image が提供終了日を迎えました。移行先は gemini-3.1-flash-image で、差し替え漏れの洗い出しが今週の作業です●TOOLS — Gemini CLI で MCP のツールが128個を超えると 400 エラーになる、という Issue が上がっています。ツール数の絞り方が論点です●NEW — 3月に増えた Docs・Sheets・Slides・Drive の Gemini 機能、半年後に残したものと外したもの●CLAUDE — Claude Code から Gemini 3.8 へ日本語処理を振る併用が Zenn で読まれています。振る仕事と振らない仕事の線引きが論点です●12/31 — 3.8 / 3.7 / 3.6 Flash と robotics-er-2 の導入価格終了まで残り90日。3.5 Flash は据え置きです●CLI 0.62.0 — Gemini CLI v0.62.0(9月29日)に Gemini 3.8 Flash と 3.5 Flash-Lite の対応が入りました。OAuth の更新トークンを保持する修正も入っています●10/02 — 本日、gemini-2.5-flash-image が提供終了日を迎えました。移行先は gemini-3.1-flash-image で、差し替え漏れの洗い出しが今週の作業です●TOOLS — Gemini CLI で MCP のツールが128個を超えると 400 エラーになる、という Issue が上がっています。ツール数の絞り方が論点です●NEW — 3月に増えた Docs・Sheets・Slides・Drive の Gemini 機能、半年後に残したものと外したもの●CLAUDE — Claude Code から Gemini 3.8 へ日本語処理を振る併用が Zenn で読まれています。振る仕事と振らない仕事の線引きが論点です●12/31 — 3.8 / 3.7 / 3.6 Flash と robotics-er-2 の導入価格終了まで残り90日。3.5 Flash は据え置きです
記事一覧/最新情報
◎ 最新情報/2026-08-18上級

Google アシスタントの置き換えは戻せないので、基準線は今しか取れません

9月4日から Google アシスタントが Gemini へ置き換わり、切り替わった端末は元に戻せません。音声から開かれた起動をアプリ側で見分けて記録し、置き換え前の基準線を残すまでの作業と、日付では前後を切れないという誤算をまとめます。

Gemini89Google アシスタントAndroid12運用設計15個人開発121

✦ プレミアム記事

段階公開のダイヤルを 5% から 25% へ上げる朝、私が見ている数字は毎回同じです。Crash-free users が 99.7% を割っていないか、ANR が 0.20% を超えていないか。この2つが平らなら次へ進みます。

Google Play Console でその2つを眺めていたときに、少しだけ落ち着かなくなりました。9月4日から、Android と Wear OS で Google アシスタントが Gemini へ置き換わります。切り替えは順次で、完了までに数週間かかる見込みで、そして一度切り替わった端末は元のアシスタントに戻せません。

仮に音声からアプリを開く経路がその前後で変わったとして、その変化は Crash-free users にも ANR にも現れません。クラッシュしないからです。例外も飛びません。ただ、来なくなるだけです。

来なくなったものは、数えていなければ気づけません。個人開発で6本のアプリを運用していますが、音声から開かれた起動が全体の何%を占めるのかを、私はこれまで一度も測っていませんでした。

戻せない置き換えでは、後から対照群を作れません

プラットフォーム側の変更に対しては、ふだん「壊れてから直す」で足ります。壊れたことが観測でき、前の状態へ戻す手段があるからです。今回はその両方が成り立ちません。

置き換えは端末単位で不可逆です。切り替わった端末を元へ戻す操作は用意されていません。ルーティンやサードパーティ連携は Gemini 側の枠組みへ引き継がれるものと、移行の過程で失われるものがあると報じられていますが、どちらに転ぶかを端末ごとに事前確認する手段は、少なくとも私の手元にはありません。

一方で、Google アプリまたは端末設定から自分のタイミングで先に Gemini へ寄せることはできます。つまり「置き換え前」を観測できる期間の終わりは決まっていて、その先へ延長する手段がありません。

対象9月4日以降の扱い
Android スマートフォン・タブレット順次 Gemini へ置き換え
Wear OS スマートウォッチ順次 Gemini へ置き換え
アシスタント対応ヘッドフォン順次 Gemini へ置き換え
スマートフォン投影型の Android Auto順次 Gemini へ置き換え
Google ビルトイン搭載車継続

停止日をまたぐ設計そのものについては、配布済みバイナリに残った設定の話を停止日をまたいだ切り戻しの設計に書きました。今回はサーバー側もクライアント側も自分では書き換えられない層、つまり端末の音声入力そのものが変わる場合の話です。

音声から開かれた起動を、アプリ側でどう見分けるか

まず前提を一つ。私は「音声で開かれた起動を確実に判定する方法」を持っていません。持っているのは、起動時に手元へ届く手がかりだけです。

起動時に手に入る手がかり

Activity が起動された時点で参照できるのは、おおむね次の3つです。

  1. Intent の action と data(ACTION_VIEW によるディープリンクか、検索由来か、ランチャーからの通常起動か)
  2. Activity.getReferrer() が返す呼び出し元のパッケージ名またはスキーム
  3. Intent の extras に載ってくる文字列(検索クエリやディープリンクのパラメータ)

このどれが埋まるかは、呼び出す側の実装に依存します。だからこそ、いま決め打ちで1つだけを見に行く設計にすると、置き換え後に呼び出し側の作りが変わったときに何も残りません。

判定せず、そのまま記録する

私が選んだのは、判定ロジックを薄くして、素の値を丸ごと1イベントに載せる形です。分類は後から、手元のデータに対して行えます。

// MainActivity.kt — 起動の出どころをそのまま記録する
// 方針: この時点で「音声かどうか」を判定しない。判定は後段の集計側で行う。
class MainActivity : ComponentActivity() {
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        recordLaunchOrigin(intent)
        // 以降は通常の初期化
    }
 
    private fun recordLaunchOrigin(launchIntent: Intent) {
        // referrer は API 22 以降。android-app://<package> 形式で来ることが多い
        val referrerHost = referrer?.host ?: "none"
        val action = launchIntent.action ?: "none"
 
        // 検索由来で載ることがある発話文字列。載らない経路のほうが多い
        val rawQuery = launchIntent.getStringExtra(SearchManager.QUERY)
 
        // ディープリンクのパラメータもまとめて拾う(キー名だけを残す)
        val extraKeys = launchIntent.extras?.keySet()
            ?.filterNot { it.startsWith("android.") }   // 端末側の内部キーは除外
            ?.sorted()
            ?.joinToString(",")
            ?: ""
 
        Firebase.analytics.logEvent("launch_origin") {
            param("action", action.takeLast(40))
            param("referrer_host", referrerHost.takeLast(40))
            param("has_query", if (rawQuery.isNullOrBlank()) 0L else 1L)
            param("extra_keys", extraKeys.takeLast(90))   // 100 文字上限に余裕を持たせる
            param("app_version", BuildConfig.VERSION_NAME)
        }
 
        // 発話文字列そのものは Analytics に入れず、同意済みの端末のみ自前の収集先へ送る
        if (rawQuery != null && consentManager.analyticsGranted) {
            utteranceCollector.enqueue(rawQuery.trim())
        }
    }
}

ここでの落とし穴は2つありました。1つ目は、Firebase Analytics のイベントパラメータに文字列長の上限があることで、extras のキー名を素直に連結すると静かに切り詰められます。2つ目は、発話文字列をそのまま Analytics へ送ると、意図せず個人情報が混ざる余地が残る点です。私は発話本文を Analytics から外し、同意済み端末に限って別経路へ送る形へ分けました。

何を前提に置かないか

「音声からの起動なら referrer_host に特定のパッケージ名が入る」という前提は置いていません。置き換え後に呼び出し元のパッケージが変わる可能性がありますし、そもそも経路によっては埋まりません。判定の代わりに、action と referrer_host の組み合わせの出現分布を残します。分布は、前提が外れても後から読み直せます。

✦

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

この記事の続きを読む

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

この記事で得られること
✦音声から開かれた起動を自分のアプリ側で見分けて記録できるようになり、置き換え後の増減を推測ではなく差分で語れるようになる
✦Crash-free 率や ANR には現れない種類の劣化を、9月4日より前にリリース監視の項目へ足しておけるようになる
✦集めた発話の文字列を Gemini で分類し、言い回しが変わったのか利用そのものが減ったのかを切り分けられるようになる
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

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

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

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

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

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

関連記事

◎ 最新情報2026-09-03
Wear OS と Android Auto では、失敗も声で返す必要がありました
9月4日から Google アシスタントが Gemini へ置き換わります。手の塞がる Wear OS と Android Auto では、失敗をトーストで伝えられません。メディアセッションのエラー状態として返す実装と、切り替え前に決めておくことを書き残します。
⟐ 開発ツール2026-08-21
アシスタント前提の記述が、自分のアプリに何箇所残っているか
9月4日から Android の Google アシスタントが Gemini へ置き換わります。自分のアプリのどこがアシスタント経由で開かれる入口なのかを grep で洗い出し、実機で確かめる発話まで用意する手順をまとめました。
◎ 最新情報2026-10-01
3月に増えた Docs・Sheets・Slides・Drive の Gemini 機能、半年後に残したものと外したもの
2026年3月に Docs・Sheets・Slides・Drive へ加わった Gemini 機能を、半年後の10月に「毎週使うか」で仕分けする方法。残す・保留・外すの3分類と、自分の画面で確かめる順番をまとめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます