WindowsからiOSアプリをビルドする方法をフレームワーク別に
Flutter、React Native、Unity、Godot、MAUIのアプリは、Windowsで書けます。Macが必要なのはiOSのビルドだけです。どのツールも、最後の工程はXcodeに任せます。このページでは、フレームワークごとにMacで実行する作業をまとめます。できたものをアップロードする方法も紹介します。
フレームワーク別、Macが必要な作業
各プロジェクトの公式ドキュメントの内容です。2026年10月18日に確認しました。
- Flutter:iOSのリリースガイドには、Xcodeが必要で、macOSが動くデバイスを使う必要があると書かれています。DartのコードとAndroidのビルドは、WindowsやLinuxのままでかまいません。
- React Native:App Storeのガイドでは、リリースビルドをXcodeで行います。JavaScriptの作業とJestのテストは、どのOSでも動きます。
- Expo:EAS Buildは、ExpoのクラウドにあるmacOSマシンでiOSのビルドを行います。自分のMacは一度も要らないかもしれません。
- Unity:エディタがXcodeプロジェクトを書き出し、Xcodeがそこからアプリをビルドします。Unityによると、iOSのローカルビルドにはmacOSが必要です。
- Godot:ドキュメントには、iOS向けのエクスポートはXcodeが入ったmacOSのコンピュータから行う必要があると書かれています。つまり、エクスポートの工程からMacで行います。
- .NET MAUI:WindowsのVisual StudioがSSHでMacに接続し、Macがアプリをコンパイルして署名します。
一般的な内容は、以前の2つのガイドで扱っています。APIキー、署名、TestFlightについてはMacなしでの公開をご覧ください。リモートの画面とキーボードについてはWindowsでXcodeをご覧ください。このページではコマンドに絞って説明します。
始める前に:アカウントと署名
- 有料のApple Developer Programのメンバーシップが必要です。年間99 USDです。
- App Store Connectでアプリのレコードを作ります。これはどのブラウザからでもできます。
- MacのXcodeに自分のApple Accountを追加し、Signing and Capabilitiesでチームを選びます。
- Automatically manage signingはオンのままにします。証明書とプロファイルはXcodeが作ってくれます。
Flutter:flutter build ipa
MacにFlutterをインストールし、そこにリポジトリをクローンします。そのあと、プロジェクトのフォルダで次のコマンドを1つ実行します。
flutter build ipa
Flutterのドキュメントによると、これでbuild/ios/archiveに.xcarchiveが、build/ios/ipaに.ipaが書き出されます。バージョンは--build-nameと--build-numberで指定します。アップロードの方法は3つ紹介されています。Mac上でAppleのTransporterアプリに.ipaをドラッグする方法。Xcodeでアーカイブを開いてDistribute Appをクリックする方法。そして、App Store Connect APIキーを使ってターミナルからアップロードする方法です。
xcrun altool --upload-app --type ios -f build/ios/ipa/*.ipa \ --apiKey your_api_key --apiIssuer your_issuer_id
React Native:Xcodeでアーカイブ
React Nativeのガイドでは、リリースをXcodeのウインドウで行います。先にpodをインストールしてから、ワークスペースを開きます。
cd ios bundle exec pod install open MyApp.xcworkspace
- Product、Scheme、Edit Schemeで、RunのBuild ConfigurationをReleaseにします。
- デバイスをAny iOS Device (arm64)にして、Product、Archiveの順に選びます。
- アーカイブのウインドウで、Distribute App、App Store Connect、Uploadの順にクリックします。
ビルドはApp Store ConnectのTestFlightに表示されます。ターミナルからリリースしたい場合は、xcodebuild archiveと-exportArchiveを使います。フラグは公開ガイドにあります。WindowsとLinuxでの作業の流れ全体は、MacなしでのReact Native iOSビルドをご覧ください。
Expoなら、ビルドにMacは要りません。Windowsから次のコマンドを実行すると、ExpoのmacOSランナーでビルドされます。
eas build --platform ios
シミュレータやXcodeのデバッガを使いたいときは、やはりMacが必要です。
Unity:Windowsでビルドし、Macでアーカイブ
Build SettingsでiOSを選んでBuildをクリックすると、UnityがXcodeプロジェクトの入ったフォルダを書き出します。Run in XcodeのオプションはmacOSでしか表示されないので、Windowsではここまでです。SSHでそのフォルダをMacにコピーします。
scp -r Builds/iOS you@your-mac:~/MyGame-iOS
Macで、そのフォルダの中の.xcodeprojを開きます。Unity-iPhoneのスキームを選びます。これはUnityFrameworkを動かすランチャーのターゲットです。デバイスをAny iOS Deviceにして、Product、Archiveの順に選びます。あとはほかのiOSアプリと同じく、Organizerウインドウから配布します。
大きなゲームはフォルダも大きくなるので、コピーの時間はアップロード速度しだいです。UnityにはBuild Automationもあり、Unityのクラウドでゲームをビルドできます。
Godot:Macでエクスポート
GodotのiOSエクスポートはmacOSでしか動きません。MacにGodotとエクスポートテンプレートをインストールし、そこでプロジェクトを開きます。
- Project、Exportの順に開き、Addをクリックして、iOSを選びます。
- App Store Team IDとBundle Identifierを入力します。エクスポーターはどちらも必須です。
- Team IDは10文字のコードです。Xcodeに表示される名前ではありません。
- Export Projectをクリックし、ファイルの保存先に空のフォルダを選びます。
- 書き出された.xcodeprojを開き、Product、Archiveの順に選びます。
.NET MAUI:Visual StudioをMacとペアリング
MicrosoftのPair to Macは、SSHでMacのビルドを実行します。そのため、リモートログインをオンにしておく必要があります。Xcodeは手動でインストールし、一度起動しておきます。MicrosoftはMonoも求めていて、Appleシリコンの場合はRosettaも必要です。Visual Studioで、Tools、iOS、Pair to Macを開きます。Macが一覧にない場合は、アドレスを指定して追加します。
Windowsのコマンドラインから公開することもできます。これはMicrosoftのVisual Studio 2026向けの例から、パスワードを除いたものです。
dotnet publish -f net8.0-ios -c Release -p:ArchiveOnBuild=true \
-p:RuntimeIdentifier=ios-arm64 \
-p:CodesignKey="Apple Distribution: John Smith (AY2GDE9QM7)" \
-p:CodesignProvision="MyMauiApp" \
-p:ServerAddress={macOS build host IP address} \
-p:ServerUser={macOS username} -p:TcpPort=58181 \
-p:_DotNetRootRemoteDirectory=/Users/{macOS username}/Library/Caches/maui/PairToMac/SDKs/dotnet/net8.0-iosは、自分のターゲットフレームワークに変えてください。パスワードのフラグがなければ、Pair to Macは最初の接続で保存したSSHキーを使います。署名済みの.ipaは、PCのbin\Releaseの下にできます。アップロードには、MicrosoftはTransporterを勧めています。
アップロード:Appleが現在挙げている方法
Appleのアップロードのページには、Xcode、Swift Playground、altool、Transporterの4つのツールが載っています。Transporterとaltoolはすべてのターゲットタイプに対応し、altoolの終了日は書かれていません。TransporterはmacOSのアプリですが、コマンドライン版はWindowsでも動きます。ただし制限があります。その制限は公開ガイドで説明しています。
クラウドビルドか、レンタルのMacか
まず、何が必要かを考えます。.ipaがたまに要るだけなら、クラウドビルドで足りるかもしれません。Codemagic、EAS Build、GitHub ActionsのmacOSランナーは、どれもiOSアプリをビルドできます。設定の一例はGitHub Actionsのガイドで紹介しています。
レンタルのMacが向いている作業もあります。シミュレータで画面を確認したいときや、クラッシュをXcodeのデバッガで調べたいときです。署名のエラーは、Xcodeのウインドウで直すほうが簡単です。リリースの各工程を自分の目で見ながら進めたいチームもあります。
リリース日だけ$15のMacで
年に数回しかリリースしないアプリも多くあります。それなら、MacRunの1日パスは$15で、支払いは1回だけ、自動更新はありません。1週間なら$59で、審査のあとに修正する時間も取れます。数週間ごとにリリースするなら、月額プランは$139からです。
- 共有ではない専用のMac miniで、管理者権限があります。
- Xcode 27.1がデフォルトで、古いプロジェクト用にXcode 26.6も入っています。
- iPhone Duoを含むiOS 27.1のシミュレータがインストール済みです。
- Macは5分以内に使えるようになります。
- SSHと画面共有は、プライベートなTailscaleネットワーク経由で、WindowsやLinuxから使えます。
パスが終わるとMacのデータは消去されます。その前にコードをプッシュし、署名のファイルをコピーしておいてください。
よくある質問
WindowsでiOSアプリをビルドできますか?
+
Windowsで書くことはできます。iOSのビルドにはXcodeが必要で、XcodeはmacOSでしか動きません。その工程には、レンタルのMac、CIのランナー、クラウドのビルドサービスのどれかを使います。
FlutterでWindowsからiOSをビルドできますか?
+
できません。FlutterのiOSリリースガイドには、この工程ではmacOSが動くデバイスを使う必要があると書かれています。Macでflutter build ipaを実行し、Transporter、altool、Xcodeのどれかで.ipaをアップロードします。
MacなしでReact NativeのiOSアプリをビルドできますか?
+
Expoならできます。EAS Buildが、ExpoのクラウドにあるmacOSマシンでiOSのビルドを行うからです。Expoを使わない場合は、XcodeでアプリをアーカイブするためにMacが必要です。
UnityでWindowsからiOS向けにビルドできますか?
+
UnityはXcodeプロジェクトを書き出します。そのあとXcodeがアプリをビルドしますが、XcodeはmacOSでしか動きません。プロジェクトをMacにコピーしてそこでアーカイブするか、Unity Build Automationを使います。
WindowsからiOSアプリをアップロードするには?
+
AppleのTransporterのコマンドラインツールはWindowsで動きます。ただし、Xcodeがビルドと一緒に書き出すファイルが必要なので、ビルド自体はMacで行います。