ANTIGRAVITY LABEN
記事一覧/アプリ開発
アプリ開発/2026-08-31上級

有料導線とレビュー訴求が重なるのを、ダイアログではなくゲートで止めています

有料プラン案内・レビュー訴求・リワード広告のダイアログが同じ瞬間に重なった実例から、表示可否の判断を各ダイアログから中央ゲートへ移した設計と、エージェントに不変条件を渡す指示の書き方、CI での機械検査までをまとめました。

antigravity449android29agent18ui-design3

プレミアム記事

アプリを起動して1秒ほど経ったところで、有料プランの案内が開きました。その上にレビューのお願いが重なり、背後では動画リワードの確認ダイアログが表示待ちで控えていました。

手元のテスト端末では一度も再現しませんでした。起きたのは、前回の起動でカテゴリ画面まで進んだあと一度アプリを閉じ、翌日に開き直した端末だけです。

個人開発している Android の壁紙アプリで、実際に踏んだ順路でした。

単体では、三つとも正しく動いていました

三つのダイアログは、それぞれ自分の表示条件を自前で持っていました。

ダイアログ持っていた条件単体での妥当性
有料プラン案内起動回数が閾値を超え、ad-free 状態でない妥当
レビュー訴求累計利用日数が閾値を超え、未評価妥当
リワード動画の確認広告在庫のロードが成功し、ad-free 状態でない妥当

条件そのものは、どれも間違っていません。問題は、三つとも「自分が出てよいか」しか答えていないことでした。「いま他の誰かが出ていないか」を問う場所が、コードのどこにも存在しませんでした。

エージェントに一つずつ実装を頼むと、自然にこの形になります。私が渡した仕様が「このダイアログの表示条件」だったからです。エージェントは頼まれた範囲では正しく書いていました。抜けていたのは、私が渡さなかった横断的な条件のほうでした。

課金状態のような値については、判定の所在を一本化する設計を以前から取っていました。詳しくは課金状態の「正」はどこにあるか — ad-free の Source of Truth パターンに書いています。それでも、表示の可否は各ダイアログに残ったままでした。値は集約したのに、判断は集約していなかったわけです。

罠1: 条件は足し合わせても優先順位になりません

最初に考えたのは、各ダイアログの条件に「他が出ていないこと」を書き足す案でした。

これは伸びません。ダイアログが3つなら参照は6方向、4つなら12方向に増えます。しかも、追加のたびに既存の3ファイルを開いて条件を書き足す作業が発生します。エージェントに1つ追加を頼めば、頼んだ1ファイルだけが更新され、既存側は静かに古いままになります。

条件を分散させたまま整合を保つ設計は、追加が起きるたびに壊れます。壊れ方が「表示されない」ではなく「たまに重なる」なので、テストでも気づきにくいところが厄介でした。

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

この記事の続きを読む

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

この記事で得られること
自分のアプリのダイアログ表示条件を、各実装に残すか1か所へ集約するかを、コードを見て判断できるようになります
モーダルが重なる不具合を、再現を待たずに CI の機械検査で先に塞げるようになります
エージェントに UI 実装を任せるとき、機能単位ではなく不変条件の形で指示を書けるようになります
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

アプリ開発2026-06-21
戻るボタンで広告が出る/出ないが安定しない — 入れ子のifを独立ガードのリストに作り替えた記録
戻るボタン直後にインタースティシャル広告が稀に重なる不具合を、入れ子の if から理由を返す独立ガードの並びへ作り替えて解決した記録です。評価順序の明示、決定表を起点にしたテスト生成、複数の壁紙アプリへ展開したときに効いた点までまとめました。
アプリ開発2026-07-18
「Compose ファースト」の後で、View の画面をどの順に移すか — 画面数ではなく変更頻度で決める
Google が Android 開発を Compose ファーストと表明しました。View ベースの画面をどの順で移すかを、画面数ではなく git の変更履歴から決める判断軸と、実際に動かしたスコアリングスクリプトをまとめます。
アプリ開発2026-07-09
段階公開を止める瞬間を、先に言葉にしておく — 監視はエージェント、停止判断は手元に
Google Play の段階公開を監視するエージェントを Antigravity で組んだ記録です。クラッシュ率のベースライン比、ANR の遅延、母数不足時の判断保留を停止基準に落とし込み、halt の実行権だけを手元に残しました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →