MacなしWindowsユーザーがClaudeとGeminiでiOSアプリをリリースするまで
はじめに
この記事は以下に当てはまる人向けです。
- WindowsユーザーだけどiOSアプリを作りたい
- MacなしでApp Storeにリリースできるか不安
- AIを開発パートナーとして使いたい
結論から言うと、Macは一台も使わずにApp Storeへのリリースまで到達できました。
使ったのはExpo + EAS Build + Claude + Gemini(Antigravity)。
詰まった場所も全部書きます。
1. 環境
構成
| 項目 | 内容 |
|---|---|
| OS | Windows 11 |
| フレームワーク | React Native + Expo SDK 54 |
| ビルド | EAS Build(クラウドビルド) |
| 実機確認 | iPhone(Expo Go → Development Build) |
| エディタ | Antigravity IDE(Google製エージェントファーストIDE) |
Macなし縛りでiOS開発するにあたって、EAS Buildの存在がすべてです。
ローカルでXcodeを動かす必要がなく、クラウド上でipaファイルを生成してくれます。
セットアップ
npm install -g eas-cli
eas login
eas build:configure
eas build:configure を実行すると eas.json が自動生成されます。
{
"cli": {
"version": ">= 16.0.0"
},
"build": {
"development": {
"developmentClient": true,
"distribution": "internal"
},
"production": {}
}
}
EAS Buildの無料枠について
一点注意があります。EAS Buildの無料プランは月15回のビルド制限があります。
開発中は何度もビルドを回すことになるので、意外とあっという間に消えます。
対策としては:
- 細かい修正はExpo Goで確認してからビルドを回す
- ビルドが必要な変更(ネイティブモジュール追加など)をまとめてから回す
- 月初にリセットされるのでタイミングを意識する
課金(EAS プロプラン)も選択肢ですが、うまくビルドを節約すれば無料枠で十分リリースまで到達できます。
Macなし縛りの実態
正直なところ、詰まるポイントは全部ここに集約されます。
- Simulatorで確認できない
- ビルドエラーの原因調査が遠回りになる
- スクショのサイズ問題(後述)
ただしEAS Buildのログは丁寧なので、エラー内容を読んで対処すれば大抵なんとかなります。
2. AI三者協業体制
このプロジェクトでは3つのAIを役割分担して使いました。
| AI | 役割 |
|---|---|
| Claude | 設計・仕様の壁打ち・世界観の維持 |
| Gemini(DeepResearch) | 技術調査・SDK選定・市場調査 |
| Antigravity(Gemini実装) | 実際のコード生成・リファクタリング |
Claudeの使い方
設計の壁打ちと、「これはアプリの世界観に合ってるか?」の最終判断に使いました。
コードはAntigravityが書けます。調査はGeminiができます。
ただし「Sotto(今回リリースしたアプリ名)らしいかどうか」の判断は人間(俺)にしかできない。
その判断を言語化する相手としてClaudeが機能しました。
また、仕様の変遷をsummary.mdとして会話ごとに更新してもらい、
次のセッションに引き継ぐ形で長期プロジェクトを管理しました。
# 引き継ぎの流れ
1. 前回のsummary.mdをClaudeに渡す
2. 今日決めたことを話し合う
3. 会話の最後にsummary.mdを更新してもらう
4. 次回また渡す
Geminiの使い方
技術的な調査はGeminiのDeepResearch機能が優秀です。
- そもそもの市場調査、こんなアプリでも隙間があるかどうか、ニーズの精査など
- AdMob SDK選定
- App Store審査のガイドライン調査
- React Nativeのアーキテクチャレビュー
特に公平な目線でのコードレビューを依頼したところ、
アーキテクチャの問題点(taskStoreへのドメイン混在など)を的確に指摘してくれました。
Antigravityの使い方
実際のコード生成はAntigravity(Google製エージェントファーストIDE)に任せました。
ClaudeやGeminiで仕様を固めてから投げると精度が上がります。
「何を作るか」を人間が決めて、「どう作るか」をAntigravityに任せる分業が機能しました。
3. 詰まりポイントと解決
newArchEnabled問題
React Native の New Architecture(newArchEnabled: true)と
react-native-google-mobile-ads の互換性問題で、
広告視聴完了イベント(isEarnedReward)が正常に発火しないバグに遭遇しました。
暫定対応として app.json で以下を設定:
{
"expo": {
"newArchEnabled": false
}
}
本番ビルドで検証後、正式に切り戻しました。
ライブラリ側の対応を待ちながら、安定動作を優先する判断です。
スクショサイズ問題(Mac無しの洗礼)
App Store申請にはiPhone用スクショの特定サイズが必須です。
必要サイズ:1242×2688px / 1284×2778px など
手持ちのiPhoneで撮ったスクショがサイズ不一致で弾かれます。
MacがあればXcode Simulatorで解決できますが、Macなし環境では別の方法が必要です。
解決策:Canvaでリサイズ
-
Canva でカスタムサイズ
1284×2778pxのキャンバスを作成 - 実機スクショを貼り付けてリサイズ
- PNG書き出し
無料・ブラウザのみで完結します。
App Store審査リジェクト → 返信で突破
初回審査でGuideline 2.3(正確なメタデータ)に基づくリジェクトを受けました。
We were unable to locate some of the features described in your metadata.
Specifically, we were unable to locate the features shown in the screenshots.
原因は審査員(iPad Air M3使用)が、月末・22時以降という
時間条件付きの導線を見つけられなかったことでした。
対応:App Store Connectから英語で返信
メールへの返信ではなく、App Store Connect のApp Reviewページから返信します。
Thank you for your review.
Here is how to locate the features shown in the screenshots:
1. Add a task from the list screen (swipe right from home)
2. Tap the task to set it as today's focus
3. Long press the task to select "よくやった" (Well done)
4. After completing tasks, scroll down on the list screen
to find "今月の記録を見る" (View this month's record)
The monthly color feature updates based on completed
and released tasks throughout the month.
Please let us know if you need any further clarification.
返信後、数時間で審査が再開されて承認されました。
4. App Store申請の流れ
必要なもの
| 項目 | 内容 |
|---|---|
| Apple Developer Program | 年額$99(パスポートで本人確認) |
| プライバシーポリシーURL | GitHub Pagesなどで公開 |
| スクショ | 6.5インチ必須(前述のCanvaで対応) |
| AdMob | 事前に収益化審査を通しておく |
プライバシーポリシーの準備
App Store申請にはプライバシーポリシーのURLが必須です。
GitHub Pagesで簡単に公開できます。
AdMobを使う場合は最低限以下の記載が必要です:
<p>
当アプリでは、広告配信のために Google AdMob を使用しています。
広告配信事業者は、ユーザーの興味に応じた広告を表示するために
Cookie やデバイス識別子を使用することがあります。
</p>
<a href="https://policies.google.com/technologies/ads?hl=ja">
Google 広告規約
</a>
App Store Connectのプライバシー設定
AdMobを使う場合のチェック項目です。
| 項目 | 選択 |
|---|---|
| 広告(機能) | はい |
| 使用状況データ → 広告データ | チェック |
| 広告データの用途 | サードパーティ広告・アナリティクス |
| 個人情報への関連付け | いいえ |
| トラッキング目的での使用 | はい |
app-ads.txtの配置
AdMobの収益保護のために app-ads.txt が必要です。
注意:サブディレクトリに置いても意味がない
AdMobが見に来るのはルートドメイン直下のみです。
# NG
https://username.github.io/myapp/app-ads.txt
# OK
https://username.github.io/app-ads.txt
解決策は username.github.io という名前のリポジトリを作成して
そこに app-ads.txt を置くことです。
google.com, pub-XXXXXXXXXXXXXXXXX, DIRECT, f08c47fec0942fa0
AdMobの管理画面からコードを取得して貼り付けるだけです。
反映までは数日かかる場合があります。
審査メモ(App Review Information)
App Store ConnectのApp Review Informationに英語でメモを残しておくと
審査がスムーズになります。
This app does not require sign-in.
Regarding ads: This app uses optional rewarded ads.
Ads are shown only when users choose to watch them
as a way to support the developer. Users can always
select "No thanks" and continue using all core features
without watching any ads. The share feature is unlocked
as a reward for watching the first ad.
5. 振り返り
引き算の設計がそのまま開発コストも下げた
このプロジェクトを通じて気づいたのは、
「機能を足さない」という設計方針が開発の複雑度も下げたということです。
多機能なアプリを作ろうとすれば、状態管理が複雑になり、
UIの考慮点が増え、審査で説明すべき機能も増えます。
引き算の設計は、ユーザー体験だけでなく開発体験も守ってくれました。
AIとの協業で変わったこと
- コードを書かせるより、設計を言語化する相手として使う
- 「これはアプリらしいか?」の判断を言語化するのに有効
- 長期プロジェクトはsummary.mdやSTATE.mdで引き継ぎを管理する
AIが書いたコードでも、何を作るか・何を削るかの判断は人間がやる。
その構造さえ守れば、ソロ開発でも複雑なプロダクトを出せそう。
Macなし縛りの結論
結論として、2026年現在、MacなしでもiOSアプリはリリースできます。
詰まるポイントは確かにありますが、EAS Buildとクラウド環境が
かつてのMac必須の壁をほぼ取り除いてくれています。
同じ環境で悩んでいる人の参考になれば嬉しいです。
作ったもの
Sotto — 静かなタスクノート
アプリリンクは個人HPに置いておきます。
直リンはこちら
神経多様性を持つ人のための「引き算のタスクノート」です。
よかったら触ってみてください。