Macなしで iOS アプリを公開する方法:Expo と EAS ガイド
著者:Mehdi Azizi
更新・9 分
Windows PC からでも、Expo と EAS で iOS アプリをビルドして Apple に提出できます。Mac なしでできること、難しいこと、iPhone が必要な理由を解説します。
Mac なしで iOS アプリを公開できますか?
できます。Expo と React Native で作るなら、Mac なしで iOS アプリを公開できます。EAS Build が Expo のクラウド上にある Mac でアプリをコンパイルし、EAS Submit がそれを App Store Connect に送信します。Expo のドキュメントにもはっきり書かれています。EAS Submit は macOS、Linux、Windows で動くので、iOS ビルドを提出するのに Mac は必要ありません。
ただし、代わりのきかないものが 3 つあります。有料の Apple Developer アカウント、アプリを実際にテストするための iPhone、そして App Store Connect でアプリ情報を入力するためのブラウザです。このガイドでは、Windows PC からできること、つまずくポイント、作業の順番を詳しく説明します。
僕の iOS アプリはすべて、Expo、EAS Build、EAS Submit という流れで公開しています。Solys と TradaZen もこの方法で App Store に出しました。僕自身は Mac で作業していますが、公開の工程はどれも Mac に依存していません。ビルドは Expo のクラウドで行われ、Apple への送信はコマンドラインで済みます。
Expo と EAS が Mac の代わりになる仕組み
何ができるのかを理解するには、なぜ Mac が必須だったのかを知る必要があります。iOS アプリは Apple のツールである Xcode でコンパイルしなければなりません。Xcode は macOS でしか動かず、しかも ITMS-90725 で弾かれないよう、十分新しいバージョンが必要です。そのあと開発者アカウントに紐づいた証明書で署名し、App Store Connect に送信します。
Expo はこの作業を 3 つのツールに分けています。
- Expo と React Native:どのパソコンでも、JavaScript か TypeScript でアプリを書けます。
- EAS Build:PC からコマンドを実行すると、コードが Expo の Mac に送られ、アプリのコンパイルと署名をしてくれます。インストールや提出にそのまま使えるファイルが返ってきます。
- EAS Submit:そのビルドを App Store Connect に送信します。Apple による処理(たとえばアイコンのチェック、ITMS-90717)が終わると、TestFlight に表示されます。
Mac は今も流れの中に存在します。ただ、それがあなたの Mac ではなくなっただけです。僕が初心者にこの構成を勧める理由は、モバイルアプリ開発のための React Native と Expo のページを読んでください。
Windows PC からできること
アプリを開発する
開発はすべて Windows で制限なくできます。エディタ(VS Code、Cursor)、Node.js、ターミナル。Claude や ChatGPT の力を借りてコードを書く場合も何も変わりません。このテーマについては AI で iOS アプリを作るを読んでください。
開発中のアプリを iPhone で確認する
最初は、iPhone に入れた Expo Go アプリがターミナルに表示される QR コードを読み取り、プロジェクトを読み込みます。変更は数秒で端末に反映されます。最初の画面を作る段階には最適です。2026 年 5 月以降、App Store 版の Expo Go は SDK 54 のままです。プロジェクト作成時にこのバージョンとの互換性を選ぶか、より新しい SDK を使うなら eas go と TestFlight を使ってください。
Expo Go には制限があります。Expo が提供するネイティブモジュールしか含まれていません。サブスクリプション用の RevenueCat SDK のように、含まれていないネイティブライブラリを使い始めたら、開発ビルドが必要です。これは EAS Build でコンパイルしたあなた専用のアプリで、iPhone にインストールして使います。
App Store を通さずに iPhone にビルドをインストールする
EAS には内部配布(internal distribution)があります。eas device:create コマンドで iPhone を登録し、internal 配布でビルドを実行します。インストール用のリンクが届きます。Apple はこの方法を制限しており、1 つのアカウントでこの方法で配布できるのは年間最大 100 台の iPhone です。また、新しい端末を追加するたびに、新しいビルドか再署名が必要です。自分と身近な数人だけなら十分です。
Xcode なしで証明書を管理する
署名は、Mac を使っていても初心者が一番つまずくところで、送信時に ITMS-90034 エラーが出ることもあります。EAS なら、コマンドラインから Apple アカウントにログインするだけで、ツールが配布用証明書とプロビジョニングプロファイルを自動で生成できます。キーチェーンアクセスを開く必要は一度もありません。
Apple にアプリを送信して公開する
eas submit --platform ios でビルドを App Store Connect に送信します。eas build の --auto-submit オプションを使えば、2 つの工程を続けて実行することもできます。それ以外はすべてブラウザで行います。App Store の掲載情報、スクリーンショット、プライバシーの申告、サブスクリプション、TestFlight、審査への提出。App Store Connect は Web アプリなので、Windows でも問題なく動きます。
Mac なしではできないこと(または難しいこと)
ローカルの iOS シミュレータ
iOS シミュレータは Xcode の一部なので、Windows では動きません。実際のところ、これは大した問題ではありません。テストには iPhone のほうがシミュレータより優れています。Expo は 2026 年 9 月にクラウド版の iOS シミュレータ EAS Simulator を発表しましたが、この記事を書いている時点ではまだ限定公開です。全員に開放されるまでは、それを前提に作業を組み立てないでください。
ネイティブコードのデバッグ
クラッシュの原因がネイティブコード(Swift、Objective-C、設定ミスのあるライブラリ)にある場合、Apple の診断ツールは Xcode の中にあります。Mac がなければ、EAS のビルドログと、インストール済みアプリのクラッシュを収集する Sentry のようなツールに頼ることになります。可能ですが、時間がかかります。だからこそ、最初のアプリでは Expo 互換でメンテナンスされているライブラリにとどめるのが得策です。そうすれば送信時の ITMS-90338 によるリジェクトも避けられます。
ネイティブ拡張を手で書く
ウィジェット、通知拡張、特殊なネイティブターゲット。Expo でも config plugin を使えば可能ですが、Xcode で生成されたプロジェクトを確認できないので、エラーのたびにビルドが 1 回余計にかかります。最初のアプリでは、こうした機能は後回しにしましょう。
ローカルでのコンパイル
EAS のローカルビルド(--local オプション)は Windows ではサポートされていません。そのため PC では、iOS ビルドは Expo のクラウドを使うことになります。EAS の無料プランには月あたりのビルド数に上限があり、順番待ちもあります。集中して作業する 1 週間を計画する前に、Expo の料金ページで最新の条件を確認してください。
Apple Developer アカウント:例外なく必須
この点を回避する方法はありません。大企業の社内アプリ向けの Apple Developer Enterprise Program も同じです。Apple Developer Program への登録がなければ、App Store Connect も TestFlight も内部配布も使えず、App Store への提出もできません。メンバーシップは 年間 99 ドルで、あなたの国の通貨で請求されます。
登録前のアドバイスを 2 つ。
- 個人アカウントと組織アカウントを慎重に選びましょう。 個人の場合、App Store の販売者としてあなたの名前が表示されます。組織の場合は団体名が表示されますが、Apple から D-U-N-S 番号を求められ、審査にも時間がかかります。
- 数日の余裕を見ておきましょう。 アカウントの承認はすぐとは限りません。公開すると決めたらすぐ登録してください。提出の前日では遅いです。
テスト用の iPhone が本当に必要な理由
技術的には、一度も手に取ったことのない iOS アプリを公開することもできます。でも僕は強くおすすめしませんし、Apple も同じです。審査ガイドライン(guideline 2.1)では、提出前にバグや安定性について実機でテストすることが求められています。それに、ユーザーが使うのは本物の iPhone だけです。
本物の iPhone でしか分からないことは次のとおりです。
- 実際の初回起動:開発サーバーなしの状態です。起動時のクラッシュはここに潜んでいます。
- App 内課金をテスト環境で確認し、ペイウォールに正しい価格が表示され、サブスクリプションでアプリがちゃんとアンロックされるかを確かめます。
- 通知、カメラ、バイブレーション、権限:ほかの環境では動きが違ったり、まったく動かなかったりします。
- 実際のレイアウト:ノッチや Dynamic Island、ホームバー、入力欄を覆ってしまうキーボード。
- 動作の滑らかさ:高性能なパソコンでは隠れてしまいがちです。
最近の中古 iPhone で十分です。ただし、使っている Expo SDK のバージョンがサポートする iOS が動くことが条件です。できれば画面サイズの違う iPhone も借りてください。大きな画面で問題なくても、小さな画面では表示が切れることがあります。僕が Solys でリジェクトされたのがまさにこれで、Apple がアプリをリジェクトする理由に書いています。
Mac なしでも公開はできます。でも iPhone なしでは、一度も動くところを見ていないアプリを Apple に送ることになります。
Windows からの手順(順番どおり)
npx create-expo-appでプロジェクトを作成し、Expo Go で最初の画面をテストします。npm install -g eas-cliで EAS CLI をインストールし、eas loginとeas build:configureを実行します。- プロジェクトが形になってきたら Apple Developer Program に登録します。
eas device:createで iPhone を登録し、開発ビルドを実行します。- App Store Connect でアプリを作成します。Bundle ID は Expo の設定と同じものにします。
eas build --platform iosで本番ビルドを実行します。eas submit --platform iosで送信し、TestFlight でテストします。この工程は TestFlight でアプリをテストするガイドで詳しく説明しています。- ブラウザで**掲載情報を入力し、審査に提出**します。プロモーションテキストは、あとから新しいバージョンなしで変更できます。
この段階でよくある落とし穴が 3 つあります。ビルド番号は送信のたびに増やす必要があります。EAS の自動インクリメントを有効にすれば、もう気にしなくて済みます。暗号化に関する質問は、回答するまで毎回ビルドを止めてしまいます。アプリの設定で一度申告しておけば済みます。そして Bundle ID はすべての場所で同じでなければなりません。違うと EAS Submit がアプリを見つけられません。掲載情報から承認までのその先については、App Store にアプリを公開するのページで各ステップを解説しています。
初めてのアプリを、Mac なしで迷わず公開する
もはや Mac は本当の障害ではありません。本当の障害は別のところにあります。稼げる見込みのあるアプリを選ぶこと、ちゃんと動くサブスクリプションを組み込むこと、Apple に通る提出物を準備すること。これを自分のペースで進められる 4 ステップでカバーしているのが iOS Kit です。提出物については、Apple Review Kit に僕の提出前チェックリストと審査担当者向けのメモをまとめています。トップページでは、Mac があってもなくても、Expo と Claude Code でゼロからではなくモバイルアプリを作る方法を紹介しています。
アプリを公開するかどうかの最終判断は Apple が下すもので、どんなキットもそれを保証できません。僕がお伝えできるのは、自分のアプリで実践している方法です。
よくある質問
Mac なしで iOS アプリを公開するには?
Expo と React Native を使えば、Expo がホストする Mac があなたの Mac の代わりになります。どのパソコンでもコードを書き、EAS Build がクラウドでアプリをコンパイル・署名し、EAS Submit が App Store Connect に送信します。ほかに、有料の Apple Developer アカウント、掲載情報を入力するためのブラウザ、そしてアプリを実際にテストするための iPhone が必要です。
Windows から iOS アプリを公開する手順は?
Expo でプロジェクトを作成し、EAS CLI をインストールして、Apple Developer Program に登録します。iPhone を登録して開発ビルドを実行し、Expo の設定と同じ Bundle ID で App Store Connect にアプリを作成します。続いて本番ビルドを実行し、EAS Submit で送信して TestFlight でテストしたら、ブラウザで掲載情報を入力して審査に提出します。
App Store でアプリを公開する費用は?
Apple Developer Program のメンバーシップは年間 99 ドルで、あなたの国の通貨で請求されます。これは必須で、なければ App Store Connect も TestFlight も内部配布も使えず、App Store への提出もできません。Expo 側では、EAS の無料プランに月あたりのビルド数の上限と順番待ちがあります。最新の条件は Expo の料金ページで確認してください。
Mac なしで iOS アプリを公開するのに iPhone は必要?
技術的には不要ですが、僕は強くおすすめしませんし、Apple も同じです。審査ガイドライン(guideline 2.1)では、提出前にバグや安定性について実機でテストすることが求められています。最近の中古 iPhone で十分です。ただし、使っている Expo SDK のバージョンがサポートする iOS が動くことが条件です。
Mac なしで iOS アプリをテストするには?
iPhone に Expo Go アプリをインストールします。ターミナルに表示される QR コードを読み取ってプロジェクトを読み込み、変更は数秒で反映されます。Expo Go には Expo が提供するネイティブモジュールしか含まれていません。RevenueCat SDK のように含まれていないネイティブライブラリを使う場合は、EAS Build でコンパイルした開発ビルドが必要です。最終ビルドのテストについては TestFlight でアプリをテストするを読んでください。
Mac なしの iOS 開発の制限は?
ローカルの iOS シミュレータは使えません。Xcode の一部なので、Windows では動かないからです。EAS のローカルビルド(--local)も Windows ではサポートされておらず、iOS ビルドは Expo のクラウドを使います。ネイティブコードのデバッグやネイティブ拡張を手で書くことは可能ですが、Apple のツールが Xcode の中にあるため難しくなります。