従来、iOSアプリの開発にはXcodeが必須で、XcodeといえばmacOSです。チーム全員がWindowsやLinuxを使っている場合や、Macのビルドマシンを維持したくない場合、この制約は厄介です。
の組み合わせ Capacitor (ネイティブiOSプロジェクトを生成する)と Capgo のビルド (クラウド上でコンパイルと署名を行うことで)WindowsマシンからiOSビルドとTestFlightへの提出ができます。
このガイドでは、チームでうまく機能する実践的なワークフローを紹介します:
- 通常のWebプロジェクトと同じようにWindowsで開発します。
- 保持
ios/リポジトリに保存します(ネイティブ状態を再現可能にするため)。 - 実行
cap syncローカルで実行します(WebビルドをiOSプロジェクトにコピーするため)。 - Capgo BuildでiOSクラウドビルドをトリガーします。
実際に何をどこでビルドするか
Capacitor アプリには、2つの別々の「ビルド」があります:
- Webビルド (JS/HTML/CSS): これらはWindows上でローカルに作成します。
- Native Build (Xcodeアーカイブ、署名、アップロード): Capgo Buildがクラウド上のMac環境でこれらを実行します。
この分離が鍵となります。Capgo Buildはネイティブプロジェクトをコンパイルしますが、Webアセットが既に同期されていることを前提としています。 ios/.
前提条件
- 動作するCapacitorアプリ(フレームワークは問いません)。
- Apple Developerアカウント。
- アップロードするアプリのApp Store Connectへのアクセス権(TestFlightやApp Storeへの提出用)。
- CapgoアカウントとAPIトークン(
CAPGO_TOKEN).
1) Capacitorアプリの作成・準備 (Windows)
既にWebアプリをお持ちの場合は、Capacitorの手順へスキップしてください。
Viteを使用した例:
bun create vite@latest my-app
cd my-app
bun install
ビルドは静的アセットを生成する必要があります(Vite では dist/ デフォルトで次のとおりです):
bun run build
2) Capacitor と iOS プラットフォームを追加
Capacitor をインストール:
bun add @capacitor/core @capacitor/ios
bun add -d @capacitor/cli
初期化して iOS プラットフォームのフォルダを作成:
bunx cap init
bunx cap add ios
この時点で、 ios/ ディレクトリが作成されます。これを git にコミットしてください。Capgo Build はその中身をコンパイルするため、 ios/バージョン管理して再現可能にしておく必要があります。
3) ビルド前に必ず Web アセットを iOS に Sync する
Web アプリを変更するたびに、Windows 上で次の手順を実行してください:
bun run build
bunx cap sync ios
cap sync は、ビルド済みの Web アセットをネイティブ iOS プロジェクトにコピーします(Capgo Build が実際にコンパイルするファイルです)。
4) Capgo CLI のインストールと認証
Capgo BuildはCapgo CLI経由で実行されます.bunを使用する場合、 bunx:
bunx @capgo/cli@latest login
または、シェルやCIの環境変数でトークンを設定します:
export CAPGO_TOKEN="your_api_key_here"
5) クラウドビルド用のiOS Signing設定
iOSをビルドするには、以下のSigning用リソースが必要です:
- Apple Distribution証明書 ("
.p12) とそのパスワード - プロビジョニングプロファイル (
.mobileprovision) - App Store Connect の API キー (
AuthKey_XXXXXX.p8) とメタデータ (Key ID, Issuer ID, Team ID)
これらのファイルをまだ作成していない場合は、Capgoのドキュメントに従ってください:
- 認証情報の管理 (保存すべき内容と方法)
- iOSの証明書とプロビジョニングプロファイルの取得方法
最も簡単なのは、これらを一度(使えるMacやチームメイト、一時レンタルなどを使って)作成・エクスポートし、以降のビルドではWindowsから再利用することです。
ファイルをローカルに取得したら、Capgo Build用に保存してください:
bunx @capgo/cli@latest build credentials save \
--platform ios \
--certificate ./cert.p12 \
--p12-password "password" \
--provisioning-profile ./profile.mobileprovision \
--apple-key ./AuthKey.p8 \
--apple-key-id "KEY123" \
--apple-issuer-id "issuer-uuid" \
--apple-team-id "team-id"
ヒント:CIでは、認証情報ファイルをbase64エンコードしてシークレットとして保存し、実行時にデコードしてから同じ build credentials save コマンドを実行してください。
6) WindowsからiOSビルドを実行する
アプリフォルダから:
bun run build
bunx cap sync ios
bunx @capgo/cli@latest build com.example.app --platform ios --build-mode release
ターミナルにリアルタイムでログが表示されます。App Store Connectのキーが設定されていれば、Capgo Buildは生成されたビルドをTestFlightへ自動でアップロードできます。
7) 高速イテレーション:Webのみの変更にはLive Updates
Capgo Buildはネイティブの変更向けです:
- Capacitorプラグインの追加・削除
- ネイティブ権限の変更
- アイコンやスプラッシュの変更
- Capacitor の更新
- Swift/Objective-C の変更
日常的な UI の微調整や JavaScript の修正には、通常以下が適しています。 Live Update (OTA) を利用することで、毎回ネイティブバイナリを再ビルドする必要がなくなります。
推奨されるチームのワークフローは以下の通りです:
- 頻繁な Web の変更には Live Updates を使用する。
- ネイティブの変更が必要な場合は、たまに Capgo Build を使用する。
Windows でよくある落とし穴(とその解決策)
- 忘れてしまいがちなこと:
cap sync: if your UI changes are missing in the iOS build, you likely built the web app but did not sync it intoios/. - コミットしていない
ios/: Capgo Build はネイティブプロジェクトをコンパイルします。フォルダが git に含まれていない(またはビルドコンテキストに含まれていない)場合、ビルドでアプリを再現できません。 - ネイティブ再ビルドなしのプラグイン変更: プラグインの追加はネイティブ変更です。その後 Capgo Build の実行(およびストア申請)を計画してください。
まとめ
Windows では Xcode を実行できませんが、 できるかどうかが Windows から iOS アプリをリリースできます:
- Capacitor で Web アプリをラップします(
ios/リポジトリ内)。 - ローカルで Web アセットをビルドしてから、
cap sync. - Capgo Build を使って、CLI から iOS バイナリをコンパイル、署名、申請します。
Capacitor と Capgo Build を使った Windows からの iOS アプリビルドの続きはこちら
使用している場合 CapacitorとCapgo BuildでWindowsからiOSアプリをビルドする CI/CD自動化を計画するには、次と連携してください Capgo での CI/CD 設定 Capgo CI/CDでのプロダクトワークフローについては、 Capgo Native Build Capgo Native Buildsでのプロダクトワークフローについては、 Capgo インテグレーション Capgo インテグレーションでのプロダクトワークフロー向けに、 CI/CD 連携 CI/CD Integrationの実装詳細については、 GitHub Actions 連携 GitHub Actions Integrationの実装詳細については。