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

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

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

antigravity464android29agent20ui-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/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

▣ アプリ開発2026-04-03
Antigravity × Capacitor ハイブリッドアプリ実装ガイド:WebアプリをiOS/Android両対応ネイティブアプリに変換するAI駆動ワークフロー
個人で運用しているアプリの経験を踏まえ、Capacitor と Antigravity で既存 Web アプリを iOS/Android ネイティブ化する実装手順を整理しました。ネイティブ API の統合、AdMob の初期化順序、起動時の白画面対策、ストア申請前の確認項目までを、確認できた範囲と未確認の範囲を分けて記しています。
▣ アプリ開発2026-10-14
ドキュメントのないコードを仕様書に起こす前に、読ませる順番を fan-in で決めておく
ドキュメントのない既存コードをエージェントに読ませて仕様書にするとき、最初に渡すファイルをどう決めるか。import の被参照数(fan-in)とルート定義ファイルから「読ませる順番」を出す 36 行の Python と、77 ファイルの Next.js プロジェクトで測った割合をまとめます。
▣ アプリ開発2026-10-08
agy CLI をコンテナで動かす前に、擬似 agy で確かめておく 3 つの安全網
Antigravity CLI(agy)を Docker や Cloud Run のジョブから呼ぶ前に、インストーラーの取りこぼし・承認待ちの固まり・終了コード 0 の空振りを、擬似 agy で再現して潰します。公式 docs の記述と、手元で実行した結果だけを根拠に組み立てた手順です。