◉ANTIGRAVITY LABEN
▣ アプリ開発

アプリ開発

Antigravity を使ったアプリ開発のカテゴリです。Unity・Xcode・Android Studio との連携から、Next.js や Expo でのアプリ構築、ストア公開や収益化の実践まで、開発の現場で役立つ記事を集めています。

2026-10-20中級

PHP の API が no-store を返し、Cloudflare は素通しでした。エッジの TTL だけを上書きした設計メモ

壁紙アプリの一覧 API が no-store を返していたため、Cloudflare の前に置いても毎回オリジンまで届いていました。端末側の挙動は変えずにエッジの TTL だけを上書きする Cache Rule、効いたかを確かめる検査スクリプト、古い応答を出さないための「アップロードとパージを一組にする」手順までを書き残します。

2026-10-20中級

文言を直したら、新しく足した字だけが豆腐になりました。日本語 Web フォントのサブセットに欠け字チェックを足す手順

日本語の文言を一行直しただけで、新しく加えた字だけが豆腐(□)になることがあります。サブセット化したフォントに無い文字をファイルと行番号つきで洗い出し、1 文字でも欠けたら止める小さなスクリプトを、実際に動かした出力つきで書き残します。

2026-10-18中級

エージェントに設定を任せる前に、.env* を無視していても .dev.vars が素通りだと分かり、点検スクリプトで先に塞ぎました

Cloudflare Workers のリポジトリを自分で点検すると、.gitignore の .env* では .dev.vars を守れていませんでした。git check-ignore を使い、エージェントに触らせる前の秘密の置き場を確かめる Python スクリプトの全文を残します。

2026-10-15中級

immutable を付けた資産を同じ URL で差し替えたら、利用者のブラウザだけが古いままでした

長期キャッシュを付けた JS を同じ URL で差し替えても、CDN をパージしてもブラウザは取り直しません。同じ URL・no-cache・クエリ付き・内容ハッシュ名の 4 方式を Chromium で並べて比べ、ビルドの最後にハッシュを付ける完全なスクリプトまでをまとめました。

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 の記述と、手元で実行した結果だけを根拠に組み立てた手順です。

2026-09-29上級

Cloudflare をパージしても古い壁紙が届き続けた原因は、オリジン側で JPEG を握っていた XPageSpeed

同じ URL に上書きした壁紙画像が、Cloudflare をパージしても古いまま届き続けた運用の記録です。ローカル・オリジン・エッジの三者を突き合わせて層を名指しする検査、プレフィックスパージの使いどころ、Xserver の XPageSpeed を .htaccess で安全に切る書き方まで扱います。

2026-09-19初級

見積書 PDF の自動化を一度にまとめて頼み、4 つに割り直すまで

受託の見積書を毎回コピーして作っていた手作業を、Antigravity に頼んで小さな PDF 出力ツールへ移した記録です。最初に全部をまとめて頼んで作り直すことになった理由と、データ・計算・見た目・保存の 4 つに割って渡し直した順番を、動くコードと一緒に書き残します。

2026-09-10初級

iOS 27 の配信日が決まってから、私が最初に grep したのは AGENTS.md でした

iOS 27 と iPadOS 27 の配信は9月14日です。版数の文字列はソースだけでなく、エージェントが読む設定ファイルにも残ります。両方を数えるスクリプトと、keyword 検索では拾えない一行の話を書き残します。

2026-09-08中級

年齢レーティングの質問票に、記憶ではなくリポジトリの宣言で答える

2026年9月から必須になった App Store の年齢レーティング質問票を、リポジトリ側の宣言ファイルと標準ライブラリだけの照合スクリプトで毎回同じ答えにする手順を、実際の出力とともにお伝えします。

2026-09-04上級

iOS 27 の RC から正式リリースまでの5日間 — 画面より先に、初期化の順番と権利の復元を確かめます

OS が入れ替わる直前の短い窓で、エージェントに渡す検証範囲を画面まわりではなく起動経路で切るまでの記録です。ATT と広告 SDK の順序、権利の復元、寸法のハードコード分岐を機械で洗い出す監査スクリプトを添えています。

2026-09-03中級

musllinux ホイールが無い依存は、Alpine で失敗せずに遅くなります

Antigravity Python SDK の musllinux ホイール対応を機に、Alpine コンテナで C 拡張が純 Python 実装へ落ちる経路を実測しました。protobuf の直列化は 0.043ms から 36.2ms へ変わります。事前の棚卸しと検知の手順まで書き残します。

2026-08-31上級

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

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

2026-08-29上級

ビルドが通ったことは、pbxproj の編集が正しかった証明になりません

エージェントに project.pbxproj を編集させると、ビルドは緑のままリソースやスクリプトだけが静かに外れます。構造で確かめる4つの検査と、1,200ファイル規模でも0.1秒で終わる監査スクリプトを、iOS アプリの実運用の側からまとめます。

2026-08-25上級

無視された設定キーが CI を通り抜ける経路と、その塞ぎ方

設定ファイルに書いたキーが無警告で無視されることがあります。tsc・ESLint・wrangler・npm・vitest の実測で挙動を3層に分け、効いているかを挙動で確かめるプローブと、警告を失敗へ昇格させるゲートの作り方をまとめました。

2026-08-24上級

消えたのは中身ではなく作業ディレクトリでした — 無人で走る破壊操作を fail-closed に組み直す

無人で走らせていた掃除処理が、掃除対象の中身ではなく作業ディレクトリそのものを消しました。mkdir -p が安全弁にならなかった理由と、取得失敗を既定値で埋める書き方が破壊側の分岐を選んでいた経緯を、実際の検証出力とともに整理します。

2026-08-19中級

Liquid Glass の猶予フラグ UIDesignRequiresCompatibility を、Xcode 27 に外される前に自分で外す

Info.plist の UIDesignRequiresCompatibility は Xcode 27 で無視される見込みです。フラグを自分の手で false に戻すと、来年強制される見た目が今日そのまま再現できます。個人開発の壁紙アプリで実際に崩れた箇所と、点検の順番をまとめました。

2026-08-18上級

API レベル 36 の期限に向けた、6本のアプリを上げる順番と段階公開の刻み方

Google Play の API レベル 36 要件は6本すべてに同じ期日で来ます。締切が同じなら決めるのは順番だけです。壊れやすさの棚卸しと、段階公開の刻み幅を必要観測数から逆算する手順をまとめました。

2026-08-15中級

壁紙アプリの30カテゴリ分類で、エージェントに選ばせる範囲をどこまで狭めるか

画像を見せて30個のカテゴリから選ばせる分類バッチは、定義を1つ足すだけで全件やり直しになります。エージェントには閉じた語彙のタグだけを出させ、カテゴリは決定的な規則で写像する設計へ切り替えた判断と実装を共有します。

2026-07-18中級

iOS 27 パブリックベータをどの端末に入れるか — 検証機の決め方と、戻れない前提での備え

iOS 27 のパブリックベータが 7/13 に公開されました。ビルド番号が開発者向けベータ3と同一である事実を起点に、どの端末に入れるか、入れる前に何をアーカイブするか、アプリのどこから確認するかを個人開発の視点で整理します。

2026-07-18上級

「Compose ファースト」の後で、View の画面をどの順に移すか — 画面数ではなく変更頻度で決める

Google が Android 開発を Compose ファーストと表明しました。View ベースの画面をどの順で移すかを、画面数ではなく git の変更履歴から決める判断軸と、実際に動かしたスコアリングスクリプトをまとめます。

2026-07-17上級

Android 17 のローカルネットワーク権限 — LAN に触る箇所を機械で洗い出してから、エージェントに直させる

新しい API レベルではローカルネットワークへの明示的な許可が必要になります。grep では 11 経路のうち 2 つしか見つかりませんでした。経路の種類で拾う検出器と、エージェントに渡せる作業単位への畳み方を実測とともに。

2026-07-15上級

エージェントが足した依存を、インストール前に検疫する — postinstall を既定で止めて通す設計

npm install の postinstall を既定で止め、エージェントが足した依存をインストール前に検疫する設計です。スクリプトを持つ依存の棚卸し、新規依存への検疫スコア付け、無人ランへの差し込みを実装し、導入後1ヶ月の運用も振り返ります。

2026-07-14上級

AdMob を載せた画面のスクリーンショットテストを、広告の非決定性から守る

広告つきの画面はスクリーンショットテストが毎回赤くなり、やがて誰も差分を見なくなります。AdMob バナーの非決定性を封じ、レイアウトの崩れだけを検知に残す設計を、Compose の実装例と Antigravity での差分トリアージまで含めてまとめます。

2026-07-14上級

デプロイは成功なのに、ユーザーには古いビルドが出ていたとき — 出荷したコミットがエッジに届いたかを検証するゲートの運用メモ

CI は緑、デプロイも成功表示、それでも本番には古いビルドが残っていた——その経験から、出荷したコミットがエッジに届いたかを検証するゲートを作りました。ビルドへの印の焼き込み、エッジからの実物取得、キャッシュの罠と実測効果をまとめた運用メモです。

2026-07-13中級

画像の一括最適化をエージェントに任せる前に置く、見た目の劣化を止めるゲート

壁紙アプリの数百枚のアセットをエージェントに一括再エンコードさせたら、数枚だけ色がくすんでいました。サイズ削減率だけでは劣化を見抜けません。SSIM・ΔE・ファイルサイズの3軸でマージ前に不良変換を弾くゲートの設計と、Pillow と scikit-image で動く判定スクリプトをまとめます。

2026-07-10上級

エージェントの書いたORMコードでp95が5倍に — クエリ回数をテストで測り、CIで止める

エージェントの書いた ORM コードで一覧 API の p95 が約5倍に跳ねた経験から、クエリ回数をテストで測れる数値にして CI で止める仕組みを作りました。固定閾値が効かない理由と、データ量の傾きで判定するアサーションの設計を解説します。

2026-07-09上級

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

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

2026-07-09上級

バックグラウンド更新は来ないことがある — 実行機会を測り、鮮度から設計をやり直した記録

BGTaskScheduler と WorkManager の実行機会は申請すれば得られるものではありません。実行率をログで測り、鮮度をSLOとして定義し、来ない前提の三層フォールバックへ組み直した設計を、計測コードとともに残します。

2026-07-09上級

エージェントが直した .proto がバイナリ互換を壊す前に — buf breaking で wire 互換を門番する

エージェントに .proto を編集させると、テキストとしては正しくても wire 互換を静かに壊すことがあります。フィールド番号の再利用と型変更をどう機械で止めるか、buf breaking と reserved を組み合わせたゲートを動くコードで示します。

2026-07-06上級

端末を熱くしないライブ壁紙 — WallpaperService の描画ループを電力予算から設計する

ライブ壁紙は常時描画のせいで電池を削りがちです。可視性・アイドル・熱状態の3軸で描画を止める WallpaperService.Engine の設計と、適応フレームレート制御による消費電力の実測を、個人開発の壁紙アプリの文脈でまとめました。

2026-07-05中級

自己デバッグのエージェントに、本番の広告を叩かせない — AdMob 無効トラフィックを断つ三層の遮断

Antigravity 2.0 の実ブラウザ自己デバッグが本番の AdMob 広告を描画すると、無効なトラフィックとして計上されます。テスト広告の強制・ネットワーク遮断・preflight ゲートの三層で、広告に触れない検証環境を作る手順を、実測値とともにまとめました。

2026-07-04上級

課金済みなのに広告が消えない — StoreKit 2 の Transaction.updates を起動直後に取りこぼす競合を Antigravity と塞いだ記録

起動直後に届く StoreKit 2 のトランザクションを取りこぼす競合を、View 寿命ではなくアプリ寿命にリスナーを固定して塞いだ実装記録。currentEntitlements での照合、finish() の徹底、StoreKitTest での回帰テスト化まで。

2026-07-04上級

App Intents で AppEnum が破綻する場面 — 毎日増える壁紙カタログを Siri に選ばせる EntityQuery 設計

App Intents のパラメータを AppEnum で書くと、選択肢が固定のうちは動きますが、毎日増えるコンテンツには耐えません。動的カタログを Siri とショートカットに正しく選ばせる AppEntity + EntityQuery 設計と、識別子の安定化・Spotlight 連携の落とし穴をまとめました。

2026-07-03上級

ユニバーサルリンクが黙って壊れる — 関連付けファイルのドリフトをエージェントの検証ゲートで塞ぐ

ユニバーサルリンク/App Linksは、関連付けファイルやエンタイトルメントがズレると例外を出さずにブラウザへ落ちます。ルート定義を単一の真実源にまとめ、エージェントに週次と公開前の検証を任せる設計をまとめました。

2026-07-03上級

エージェントが書いた App Intent を Siri に喋らせる前に — 副作用で分類して確認ゲートを挟む設計

Antigravity が生成した App Intent を Siri やアシスタントに無確認で走らせると、破壊的な操作が音声一つで発火します。副作用で3分類し、確認ゲートを機械的に挟む実装と、欠落を push 前に弾く静的チェックをまとめました。

2026-07-03上級

CI の検証が緑なのにストア審査でスクリーンショットが差し戻されるとき — 検証ルールの鮮度を計測する運用メモ

CI のストアアセット検証は緑なのに App Store 審査でスクリーンショットが差し戻される——検証ルールの鮮度切れが原因でした。仕様を鮮度つき契約ファイルに分離し、ロケール別のテキストあふれや知覚差分で静かな劣化を捕まえる運用を紹介します。

2026-07-03上級

クラッシュ一覧には一度も現れない不調 — ANR トレースを ApplicationExitInfo で回収し、エージェントに切り分けを渡す設計

クラッシュハンドラに映らない ANR を ApplicationExitInfo で起動時に回収し、トレースの切り分けを Antigravity のエージェントへ安全に渡すまでの実装と5週間の実測値です。

2026-07-03中級

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

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

2026-07-02中級

依存パッケージの更新を月イチの苦行にしない — エージェントに任せる週次アップデートのリスク分類と検証ゲート

未更新47件を前に固まった経験から、依存パッケージ更新をエージェントに任せる週次運用へ移行しました。更新を3つのリスク帯に分ける機械化スクリプト、やらないことを先に書くプレイブック、lockfile 差分を範囲で見る検証ゲートを紹介します。

← すべての記事