「WindowsやLinuxからCapacitorアプリをiOS向けにビルド、テスト、リリースできるか?」という質問を毎週いただきます。正直に答えれば、いくつかの例外を除いて、ほぼすべて可能です。このページでは、各タスクにmacOSが必要かどうか、そして代替手段についてまとめています。
タスク一覧
| タスク | macOSは必要? | WindowsやLinuxから開発する方法 |
|---|---|---|
| アプリを書き、ブラウザで実行する | いいえ | エディタやOSは自由 |
| Apple Developer Programへの登録 | いいえ | ブラウザ |
| App IDとApp Store Connectの作成 | いいえ | ブラウザ |
| 配布用証明書 | いいえ | OpenSSL、または 証明書ジェネレーター |
| プロビジョニングプロファイル | いいえ | Apple Developer ポータル |
| App Store Connect API キー | いいえ | App Store Connect ウェブサイト |
cap add ios, cap sync ios |
いいえ | Capacitor CLI において、CocoaPods の警告が表示されるのは想定内です |
| IPAのコンパイルと署名 | はい | Capgo のビルド クラウド上でXcodeを実行 |
| TestFlightへアップロード | はい、通常通りです | API キーを使用して Capgo ビルドをアップロード |
| App Storeの審査へ提出 | いいえ | App Store Connectのウェブサイト |
| テスト用にiPhoneへインストール | いいえ | TestFlightアプリ、またはad hoc IPAリンク |
| リリース後のアップデート配信 | いいえ | Capgo Live Updates |
| iOS シミュレーター | はい | 代用不可。実機のiPhoneを使用してください |
| iOS上のSafari Web Inspector | はい | リモートログ、共有Webレイヤー用のAndroid版Chrome DevTools |
| ネイティブクラッシュ用のXcodeデバッガ | はい | 必要な時にMacを時間貸しでレンタル |
編集 Info.plist, エンタイトルメント、アイコン |
いいえ | テキストや画像ファイルを投入 ios/ |
| ネイティブiOS code を持つ Capacitor プラグインを追加 | いいえ | インストール、 cap sync ios, クラウドビルド |
| カスタムSwift code を記述 | 部分的に | 任意のエディタで編集。コンパイルエラーはクラウドビルドのログで確認可能 |
なぜコンパイルにmacOSが必要なのか
AppleはiOSの SDK を xcodebuild と codesign macOS専用として提供しており、そのライセンスはApple製ハードウェアに紐付けられています。App Storeで受理されるIPAを生成できる、サポートされたLinuxやWindows用のツールチェーンは存在しません。LinuxからiOSをクロスコンパイルするプロジェクトは研究目的として存在しますが、署名ができず、App Store Connectに受理されることもありません。そのため、「Macなし」で動作するワークフローは、必ずコンパイルの工程でmacOSマシンへ移行することになります。
macOSを確保する3つの方法:
- Macを購入する。 シンプルですが、AppleがXcodeの最小要件を引き上げるたびにアップデートが必要になります。2026年4月以降はXcode 26が必須となり、最新のmacOSが必要になります。
- クラウドでMacをレンタルする。 フルコントロールが可能ですが、メンテナンスの負担がすべてかかり、ビルドの有無に関わらず時間単位のコストが発生します。
- ビルドサービスを利用する。 プロジェクトを送信すると、署名済みのIPAが返されるか、アップロードされます。Capgo Buildはこの選択肢であり、常に最新のXcodeでメンテナンスされているため、Appleの期限を気にする必要はありません。
最小限の「Macなし」ワークフロー
# once
bunx cap add ios
bunx @capgo/cli@latest build init --platform ios
# every native release
bun run build
bunx cap sync ios
bunx @capgo/cli@latest build request com.example.app --platform ios --build-mode release
# every web-only change
bunx @capgo/cli@latest bundle upload --channel production
最初のブロックでプロジェクトを生成し、署名情報を保存します。2番目のブロックで署名済みビルドを作成し、TestFlightへ送信します。3番目のブロックでは、Webの変更に対してNative Buildを完全にスキップします。
Keychain Accessを使わない証明書管理
多くの人が難しく感じる部分ですが、実際には3つのOpenSSLコマンドと2つのブラウザ操作だけで済みます:
openssl genrsa -out ios_distribution.key 2048
openssl req -new -key ios_distribution.key -out ios_distribution.csr -subj "/emailAddress=you@example.com/CN=Your Name/C=US"
# upload the CSR in the Apple Developer portal, download distribution.cer
openssl x509 -in distribution.cer -inform DER -out distribution.pem -outform PEM
openssl pkcs12 -export -inkey ios_distribution.key -in distribution.pem -out ios_distribution.p12 -legacy
その後、ポータルでApp Store用のプロビジョニングプロファイルを作成し、App Store ConnectでAPIキーを作成します。 iOS証明書とプロビジョニングプロファイルの解説 あらゆる種類のエラーを網羅しています。
シミュレーターを使わないテスト
実機のiPhoneを使用します。クラウドビルド完了の数分後にはビルドがTestFlightに届き、内部テスターはBeta App Reviewをスキップできます。チーム外のデバイスには、次を使用してad hocビルドをリクエストしてください: --ios-distribution ad_hoc --output-upload リンクを共有してください。また、 テストガイドでは、 Safariを使わないデバッグ方法を含め、全工程を網羅しています。
Native code とプラグインについて
コミュニティプラグインの追加は、 bun add および、 cap sync iosSwiftの code はクラウド上でコンパイルされます。カスタムプラグイン用に独自のSwiftを書く場合も、あらゆるエディタから可能です。ただし、オートコンプリートや即時のコンパイルフィードバックは失われるため、ネイティブ部分は最小限に抑え、デバッグ用のクラウドビルドで早めにコンパイルし、ストリーミングされるXcodeログからエラーを確認するのが現実的なアプローチです。 --ai-analytics ビルド失敗の原因を分かりやすい言葉で診断します。
Macをレンタルするのが適しているケース
- ログから原因が特定できず、Xcodeのデバッガが必要なネイティブクラッシュが発生した場合。
- 毎日Swiftのコードを頻繁に更新するプラグイン開発者。
- App Storeのセットアップが初めてで、仕組みを理解するために一度Xcodeの署名UIを確認したい場合。
これらは一般的なCapacitorチームにとって毎週発生するような作業ではありません。Macをレンタルして1時間使う方が、開発者ごとにMacを用意するよりも安上がりです。
関連するセットアップガイド
- WindowsでのCapacitor開発
- LinuxでのCapacitor開発
- WindowsのWSL2を使用したCapacitor
- WindowsおよびLinuxからAndroidへのLive reload
- Android Studioを使わないAndroidリリースビルド
まとめ
WindowsまたはLinuxでのCapacitorは、設計、code、Android、証明書、TestFlight、App Storeへの申請までをカバーします。コンパイルのみがApple環境を必要としますが、Capgo Buildがそれを処理します。WebレイヤーにLive Updatesを使用すれば、Macを持たないチームでもAndroidと同じペースでiOSをリリースできます。