◉ANTIGRAVITY LABEN
記事一覧/アプリ開発
▣ アプリ開発/2026-07-09上級

段階公開を止める瞬間を、先に言葉にしておく — 監視はエージェント、停止判断は手元に

Google Play の段階公開を監視するエージェントを Antigravity で組んだ記録です。クラッシュ率のベースライン比、ANR の遅延、母数不足時の判断保留を停止基準に落とし込み、halt の実行権だけを手元に残しました。

antigravity461staged-rolloutgoogle-play5agent19release-engineering

✦ プレミアム記事

深夜1時、Play Console の段階公開を 20% まで広げた直後のことです。

クラッシュ率の数字が、前バージョンより少しだけ高い。0.31% に対して 0.44%。止めるほどではない、と思いながら、私は結局2時間ほど画面を眺めていました。

翌朝、数字は 0.29% に落ち着いていました。夜間に流入したのは特定の古い端末群で、母数が小さかっただけだったのです。

あの2時間で失われたのは睡眠だけではありません。「基準を決めていなかった」という事実そのものが、判断を感情に明け渡していました。

停止基準を後回しにすると、判断は疲労に依存する

個人開発で Google Play にアプリを出していると、段階公開の監視は誰も代わってくれません。1%、5%、20%、50% と広げるたびに、数字を見て「進めるか、止めるか」を決めます。

このとき厄介なのは、止める判断が常に「今の自分の状態」に引きずられる点です。眠い夜は楽観的になり、リリース直後の緊張が残っている朝は悲観的になります。

エージェントに監視を任せる話をすると、しばしば「では停止もエージェントに」という流れになります。私はそこを分けました。

監視と集計は委ね、halt(公開停止)の実行だけは手元に残す。 その代わり、停止に相当する条件を、エージェントが読める形で先に書き切る。

判断を自動化するのではなく、判断の基準を自動化する。この順序を守ると、深夜の2時間は「基準に照らして続行」の10秒に置き換わります。

何を測るか — 最初の壁は母数の少なさ

段階公開の初期は、そもそも数字が信用できません。1% の露出で得られるセッションは、私の壁紙アプリでは1日あたり 600〜900 程度でした。ここでクラッシュが3件出ると、クラッシュ率は跳ね上がって見えます。

クラッシュ率は絶対値でなくベースライン比で読む

「クラッシュ率 1% 未満なら健全」という一般則は、アプリごとの実態を無視しています。私が採ったのは、直前の安定版(100% 配信中)を分母に置く比率です。

前版が 0.28%、新版が 0.42% なら比は 1.5。前版が 0.9%、新版が 1.1% なら比は 1.22 で、絶対値は高くても悪化はしていません。

警戒(warn)を 1.5 倍、停止候補(halt_candidate)を 2.0 倍に置きました。この閾値は絶対的な正解ではなく、私のアプリ群での過去12リリース分の変動幅(比 0.8〜1.35)の外側に取っただけです。

ANR は遅れて立ち上がる

クラッシュはインストール直後に出ますが、ANR(応答なし)はユーザーが実際に操作を続けた後に現れます。壁紙アプリの場合、初回起動から画像を数十枚スクロールした先で顕在化しました。

そのため ANR の判定は、クラッシュより 12 時間ほど遅らせています。同時に見ると、序盤の「ANR ゼロ」を健全さの証拠と誤読してしまうためです。詳しくは ApplicationExitInfo で ANR の死因を拾い、Antigravity に一次分類させる に書いた分類器を、そのまま監視ループに接続しています。

母数が足りないときは「判断しない」を返す

もっとも効いた設計は、これでした。閾値を満たしていても、セッション数が 800 未満なら結論を出さない。

エージェントは insufficient_data を返し、次のポーリングまで沈黙します。0/1 の判定に逃げず、「まだ言えない」という第三の返り値を持たせたことで、偽陽性の停止がなくなりました。

✦

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

この記事の続きを読む

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

この記事で得られること
✦クラッシュ率をベースライン比 1.5 倍で警戒、2.0 倍で停止候補とする三値判定の実装
✦母数 800 セッション未満は「判断しない」を明示的に返す設計と、その理由
✦露出量(推定セッション数)で待機時間を刻む4段階テーブルと、4リリース分の実測
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

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

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

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

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

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

関連記事

▣ アプリ開発2026-08-31
有料導線とレビュー訴求が重なるのを、ダイアログではなくゲートで止めています
有料プラン案内・レビュー訴求・リワード広告のダイアログが同じ瞬間に重なった実例から、表示可否の判断を各ダイアログから中央ゲートへ移した設計と、エージェントに不変条件を渡す指示の書き方、CI での機械検査までをまとめました。
▣ アプリ開発2026-08-18
API レベル 36 の期限に向けた、6本のアプリを上げる順番と段階公開の刻み方
Google Play の API レベル 36 要件は6本すべてに同じ期日で来ます。締切が同じなら決めるのは順番だけです。壊れやすさの棚卸しと、段階公開の刻み幅を必要観測数から逆算する手順をまとめました。
▣ アプリ開発2026-10-08
agy CLI をコンテナで動かす前に、擬似 agy で確かめておく 3 つの安全網
Antigravity CLI(agy)を Docker や Cloud Run のジョブから呼ぶ前に、インストーラーの取りこぼし・承認待ちの固まり・終了コード 0 の空振りを、擬似 agy で再現して潰します。公式 docs の記述と、手元で実行した結果だけを根拠に組み立てた手順です。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます