◉ANTIGRAVITY LABEN
記事一覧/アプリ開発
▣ アプリ開発/2026-04-18中級

AntigravityでアートアプリをiOS/Androidに同時リリースした話 — 企画・開発・審査の全記録

自分のアート作品を見せるアプリを Antigravity で作り、iOS / Android に同時リリースするまでの全記録です。作品の延長として考えるコンセプト設計、React Native と Expo を選んだ理由、審査で詰まった2つのポイントを共有します。

Antigravity386アートアプリiOS27Android27リリース個人開発108

「自分のアート作品を見せるアプリを自分で作る」というアイデアは、アーティストなら誰でも一度は思い浮かべるものではないでしょうか。

Antigravityを使って実際にやってみました。iOS・Android同時リリースまでの全プロセスを、技術的な内容だけでなくコンセプト段階から正直に記録します。

コンセプト設計——「ギャラリーアプリ」ではなく「作品の延長」として考える

最初に決めたのは、このアプリを「ポートフォリオ表示ツール」ではなく「作品そのもの」として設計するということです。

一般的なポートフォリオアプリは機能が主役です。「写真を見る、タップすると拡大、スワイプで次へ」——これは機能は正しいですが、美術展示の体験とは異なります。私が目指したのは、アプリを開いた瞬間から「この人の世界観だ」と感じてもらえる体験でした。

具体的には次のことを設計段階で決めました。

インタラクションを最小化する: ナビゲーションボタン、ハンバーガーメニュー、タブバーはすべて排除。作品に集中できる余白を最優先にします。

色を作品に合わせる: UI要素の色は作品に合わせて動的に変わる(Dynamic Color)。背景色が作品のトーンに寄り添う。

テキストは最低限: 作品タイトルと制作年のみ。長い説明文は不要。

この方向性をAntigravityのAGENTS.mdに書き込んでから開発を始めたことで、後のやりとりがスムーズになりました。

技術スタックの選択——React NativeとExpoを選んだ理由

iOS/Android同時リリースを前提にしているため、ネイティブで2つ作るのではなくReact Native(Expo)を選びました。

AntigravityはReact NativeとExpoのコード生成が安定しており、「画像ギャラリー+全画面表示+スワイプナビゲーション」の基本構造は最初のプロンプトで80%完成しました。

AGENTS.mdの内容(抜粋):
- アーキテクチャ: React Native + Expo SDK 52
- 画像表示: expo-image(パフォーマンス優先)
- 状態管理: Zustand(シンプルなグローバル状態のみ)
- アニメーション: react-native-reanimated v3
- デザイン原則: 最小限のUI要素、作品が主役

Dynamic Colorの実装(画像の支配色を取得してUIに反映する処理)はAntigravityだけでは難しく、expo-imageのcolor取得機能とreact-native-reanimatedを組み合わせる部分は、自分でコードを読んで理解しながら調整する必要がありました。

ただ、Antigravityに「expo-imageから支配色を取得してアニメーション付きで背景色を変えたい」と伝えたところ、正確ではないもののベースになるコードを出してくれたので、そこから修正する形で進めることができました。

Apple / Google審査で詰まった2つのポイント

Apple: Privacy Manifestが必要だと分からなかった

初回申請がリジェクトされた理由の一つが、Privacy Manifestファイルの不備でした。サードパーティライブラリ(expo-imageなど)を使っている場合、そのライブラリのプライバシー利用を宣言するPrivacy Manifest(PrivacyInfo.xcprivacy)が必要です。

Antigravityに「このエラーを解決したい」とリジェクト文を渡したところ、必要なファイルの内容と配置場所を教えてくれました。ただし、Privacy Manifestの内容が正確かどうかは自分で確認する必要がありました。Apple公式ドキュメントと照らし合わせながら修正して再申請し、通過しました。

Google Play: ターゲットAPI要件の変更

Google Playは定期的にターゲットAPIレベルの要件が変わります。申請時点でAPI level 34以上が必要でしたが、Expoのデフォルト設定がそれを満たしていなかったためリジェクトされました。

app.json(またはapp.config.js)のtargetSdkVersionを更新してビルドし直すだけで解決しました。Antigravityに直接「このリジェクト理由への対処を教えて」と聞いても回答は出てきましたが、Expo固有の設定ファイルとAndroid Studioの設定の違いに混乱したため、Expoの公式ドキュメントを参照しながら自分で修正しました。

リリース後に分かったこと

アートアプリで特徴的なのは、ダウンロード数より滞在時間が重要な指標になるということです。

Analytics(Firebase)で確認すると、1画面の平均表示時間が通常のアプリ(数秒程度)より長く、1枚の作品に数十秒留まってくれるユーザーが多かったです。これは「見せ方」への投資が機能している証拠だと感じました。

App StoreのレビューにはSNSではつながっていない人からのコメントが届くことがあり、アプリという形でアートを届けることの特殊な価値を実感しました。

これから同じことをやりたい人へ

Antigravityでアートアプリを作るとき、一番重要なのは「コンセプトを先に言語化すること」です。

技術的な構造よりも「このアプリを開いた人にどんな体験をしてほしいか」を文章にして、AGENTS.mdに書いておく。そうするとAntigravityの提案が、機能的に正しいだけでなく「この世界観に合っている」ものになってきます。

アートとコードの両方が好きな人には、Antigravityでの個人アプリ開発は特別な体験になると思います。自分の作品を、自分で作ったプラットフォームで届けることの面白さを、ぜひ体験してみてください。

シェア

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

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

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

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

▣ アプリ開発2026-05-25
Antigravity の Inline Edit と Agent モードを壁紙アプリ運用で1ヶ月使い分けた所感
壁紙アプリ4本の実運用で Antigravity の Inline Edit と Agent モードを1ヶ月使い分けた所感です。実測値・AGENTS.md への判断軸の固定・dSYM 一括統一・クレジット消費まで、現実的な運用設計を共有します。
▣ アプリ開発2026-10-15
immutable を付けた資産を同じ URL で差し替えたら、利用者のブラウザだけが古いままでした
長期キャッシュを付けた JS を同じ URL で差し替えても、CDN をパージしてもブラウザは取り直しません。同じ URL・no-cache・クエリ付き・内容ハッシュ名の 4 方式を Chromium で並べて比べ、ビルドの最後にハッシュを付ける完全なスクリプトまでをまとめました。
▣ アプリ開発2026-09-29
Cloudflare をパージしても古い壁紙が届き続けた原因は、オリジン側で JPEG を握っていた XPageSpeed
同じ URL に上書きした壁紙画像が、Cloudflare をパージしても古いまま届き続けた運用の記録です。ローカル・オリジン・エッジの三者を突き合わせて層を名指しする検査、プレフィックスパージの使いどころ、Xserver の XPageSpeed を .htaccess で安全に切る書き方まで扱います。