メインコンテンツへスキップ

MacなしでCapacitorのiOS開発:できること・できないこと

WindowsやLinux環境のチームに向けた回答:iOS開発におけるmacOSの必要性、証明書の取得方法、Xcodeを使わないTestFlightやApp Storeへのリリース、そしてCapgo BuildとLive Updatesの活用方法について解説します。

MacなしでCapacitorのiOS開発:できること・できないこと

「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つの方法:

  1. Macを購入する。 シンプルですが、AppleがXcodeの最小要件を引き上げるたびにアップデートが必要になります。2026年4月以降はXcode 26が必須となり、最新のmacOSが必要になります。
  2. クラウドでMacをレンタルする。 フルコントロールが可能ですが、メンテナンスの負担がすべてかかり、ビルドの有無に関わらず時間単位のコストが発生します。
  3. ビルドサービスを利用する。 プロジェクトを送信すると、署名済みの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を完全にスキップします。

詳細な解説: Windowsから と Linuxから.

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またはLinuxでのCapacitorは、設計、code、Android、証明書、TestFlight、App Storeへの申請までをカバーします。コンパイルのみがApple環境を必要としますが、Capgo Buildがそれを処理します。WebレイヤーにLive Updatesを使用すれば、Macを持たないチームでもAndroidと同じペースでiOSをリリースできます。

Capacitor アプリ向けの Live Updates

Web レイヤーのバグが本番で発生したら、App Store の審査を何日も待たずに Capgo で修正を配信しましょう。ネイティブの変更は通常の審査フローに残したまま、ユーザーはバックグラウンドでアップデートを受け取れます。

最新のブログ記事

Capgoは、真にプロフェッショナルなモバイルアプリを作るために必要な最高のインサイトを提供します。