ANTIGRAVITY LABEN
記事一覧/アプリ開発
アプリ開発/2026-07-03中級

ダウンロードサイズの逆行に提出直前で気づかないために — AAB/IPA のサイズ予算をエージェントの週次ゲートで守る

メディエーションSDKやアセットの追加で静かに膨らむダウンロードサイズに、bundletool と App Thinning レポートを使ったサイズ台帳・予算ゲート・増分の内訳特定で歯止めをかける設計をまとめます。

antigravity411app-dev44android26ios33automation47

プレミアム記事

2026年5月、個人開発で運営している壁紙アプリの広告メディエーションを拡張し、Liftoff・InMobi・Unity Ads の3つのアダプタを追加しました。収益面の設定は狙いどおりに動いたのですが、内部テスト配信の後になって、端末あたりのダウンロードサイズが 8MB 以上増えていたことに気づきました。機能テストは通っていて、クラッシュもない。それでも「ダウンロードが重くなった」という逆行は、どのテストにも引っかからずに通り抜けていたのです。

サイズの逆行は、ビルドが壊れるわけでも例外が飛ぶわけでもないので、意識して測らない限り検知できません。私自身、audit のスクリプトや依存更新のゲートは整備してきたのに、サイズだけは「たまに Play Console を眺める」運用のままでした。以来、サイズにも予算(budget)を持たせて、Antigravity のエージェントに週次で見張らせる仕組みに切り替えています。本稿の設計はその実装記録です。

サイズはどこで静かに膨らむのか — 3つの典型経路

私のアプリで過去1年の増分を振り返ると、原因はほぼ次の3つに集約されました。

経路典型例1回あたりの増分気づきにくさ
依存の追加・更新広告アダプタ、解析SDK、UIライブラリ0.5〜4MB高い(lockfile の diff に MB 数は出ない)
アセットの追加内蔵壁紙、オンボーディング動画、フォント0.2〜10MB中(追加した本人は把握しているが台帳がない)
縮小設定の劣化R8/ProGuard ルールの緩和、App Thinning の設定ミス1〜8MB最も高い(何も「追加」していないのに増える)

厄介なのは3つ目です。クラッシュ対応で -keep ルールを広めに書いた、ビルド設定を触った、といった変更は差分だけ見るとサイズと無関係に見えます。逆行検知を「変更の種類」ベースでやろうとすると必ず漏れるので、結果の数値そのものを毎週測るしかない、というのが私の結論です。

「AAB のファイルサイズ」を測ってはいけません

最初の実装で私が間違えたのがここです。CI の成果物である .aab のファイルサイズを記録していたのですが、この数値はユーザー体験と一致しません。Android の場合、Play Store は AAB から端末構成ごとに分割 APK を生成して配信するため、ユーザーが実際にダウンロードするサイズは AAB より大幅に小さくなります。測るべきは bundletool が出す「端末あたりのダウンロードサイズ」です。

# AAB から端末あたりのダウンロードサイズを取得する
# (事前に bundletool build-apks で .apks を生成しておく)
bundletool build-apks \
  --bundle=app/build/outputs/bundle/release/app-release.aab \
  --output=/tmp/app.apks \
  --ks=$KEYSTORE --ks-key-alias=$ALIAS \
  --ks-pass=pass:$KS_PASS --key-pass=pass:$KEY_PASS
 
# MIN と MAX(構成による幅)が出る。ゲートには MAX を使う
bundletool get-size total --apks=/tmp/app.apks
# 出力例:
# MIN,MAX
# 21436512,24893440

MIN ではなく MAX を予算判定に使うのは、最も条件の悪い端末構成でも予算内に収めたいからです。iOS 側は Xcode の App Thinning Size Report が同じ役割を果たします。xcodebuild -exportArchivethinning を指定すると、App Thinning Size Report.txt に variant ごとの compressed / uncompressed サイズが出力されるので、そこから最大の compressed 値を拾います。

# iOS: App Thinning Size Report から最大ダウンロードサイズを抽出
grep "compressed" "App Thinning Size Report.txt" \
  | grep -oE '[0-9.]+ MB' | sort -rn | head -1
# 出力例: 31.2 MB

どちらも「ストアの管理画面で見る」のではなくローカル/CI で再現できるコマンドにしておくことが、後述の無人ラン化の前提になります。

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

この記事の続きを読む

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

この記事で得られること
依存やアセットの追加で少しずつ膨らむダウンロードサイズに、数値の予算と自動ゲートで歯止めをかけられる
bundletool と App Thinning レポートを使ったサイズ台帳の設計と、増分の内訳から原因コミットを絞り込む手順を習得できる
週次の無人ランでサイズ逆行を検知し、審査提出の直前に慌てない運用を自分のアプリに応用できる
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

アプリ開発2026-05-13
AntigravityでGoogle ML Kitを試したら、公式ドキュメントより速く動いた — でも1つだけ詰まった
Google ML KitをAntigravityでiOS/Androidアプリに統合する実践ガイド。テキスト認識・顔検出の実装コードとXcode 15バグ回避策、個人開発での使いどころをまとめています。
アプリ開発2026-04-03
Antigravity × Capacitor ハイブリッドアプリ実装ガイド:WebアプリをiOS/Android両対応ネイティブアプリに変換するAI駆動ワークフロー
長年の個人アプリ運用で得た知見を踏まえ、Capacitor と Antigravity で既存 Web アプリを iOS/Android ネイティブ化する実装手順を解説。カメラ・プッシュ通知・ストレージのネイティブ API 統合から AdMob 最適化、App Store / Google Play 申請までを実測値とともに整理しました。
アプリ開発2026-06-28
メディエーションを増やしたら iOS の計測が静かに痩せた — SKAdNetwork ID のズレを4アプリで揃える
メディエーションに新しいパートナーを足したのに iOS の収益が伸びず、SKAdNetwork ID の登録漏れが原因だった実体験。Info.plist の SKAdNetworkItems を4アプリで突き合わせ、Antigravity エージェントに照合させて人間が採否を決める運用を紹介します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →