独立開発者や受託チームの多くは Windows をメイン機にしていますが、App Store 公開フローは依然 Apple エコシステムを通ります。コード署名、Archive、.ipa アップロード、TestFlight 配信、審査提出はすべて macOS ツールに依存します。デスクに Mac を置く必要はありません。2026 年の現実的な分担は、Windows で日常開発と App Store Connect 運用、クラウド Mac で署名とリリースです。本稿ではタイムラインに沿い「Windows でできること」と「Mac 必須のこと」を整理し、チームで使えるチェックリストを示します。
結論:ストア運用は Windows、署名・アップロードは Mac
iOS 公開を二種類に分けると境界がはっきりします。ストア側(アカウント、メタデータ、価格、審査連絡)はブラウザ中心。ビルド側(証明書、Keychain、Archive、codesign)は macOS 必須。下表は Windows チームがリリース手順書の横に貼る参照表です。
| 工程 | Windows で可? | 補足 |
|---|---|---|
| Apple Developer Program 登録 | 可 | ブラウザのみ。Apple ID と本人/法人確認 |
| App Store Connect メタデータ・スクショ・価格 | 可 | Web コンソール。Windows のブラウザで十分 |
| コーディング、Git、クロスプラットフォームビルド | ほぼ可 | Flutter/RN/KMP は Windows 可。iOS 最終ビルドは Mac |
| 証明書、Provisioning Profile、Keychain | 不可 | macOS Keychain と Xcode 署名ツールが必要 |
| Archive、codesign、.ipa 生成 | 不可 | xcodebuild / Xcode Organizer は macOS のみ |
| TestFlight / App Store アップロード | 間接的に可 | Transporter は macOS。fastlane はクラウド Mac が一般的 |
| 審査連絡、リリース、売上レポート | 可 | App Store Connect ブラウザ |
六ステップロードマップ:ゼロから App Store へ
Swift ネイティブでも Flutter / React Native でも、メインの公開パスは同じです。時系列に並べ、各ステップの推奨環境を記載。「Windows はどこまで?」という質問への地図になります。
- Apple Developer Program 加入(個人 $99/年または Organization。価格は Apple 公式で確認)
- App Store Connect で App レコード作成:Bundle ID、名称、主要言語、SKU
- 署名設定:Distribution 証明書 + App Store Provisioning Profile
- Archive とビルドアップロード:Xcode Organizer または
fastlane gym + pilot/deliver - TestFlight 内部/外部テスト:クラッシュ、権限、ログイン、課金などクリティカルパス
- App Review 提出と公開:審査メモ、輸出コンプライアンス、プライバシーラベル。承認後に地域選択
ステップ 1・2・5(テスター管理)・6(メタデータと審査返信)は Windows でカレンダー時間を多く使います。3・4 は壁時計は短いが技術リスク大——初回の硬い締切の前にクラウド Mac を確保し、提出前夜に頼らないこと。
Flutter や React Native などクロスプラットフォームチームは、この分担が特に効きます。ビジネスロジックと UI は Windows で回し、iOS バイナリだけ macOS で生成する。リリースを開発の「後付け」ではなく独立サブプロジェクトとして扱うと、初回公開の遅延を大きく減らせます。
ステップ 1:Apple Developer と App Store Connect(Windows ブラウザ)
Apple Developer Program で Apple ID 登録。個人は本人確認、法人は D-U-N-S 等が必要。審査期間は地域差あり——ビルド完成を待たず早めに申請。
有効化後、App Store Connect の「マイ App」で + から新規作成。先に Certificates, Identifiers & Profiles で Bundle Identifier を登録し、Xcode の PRODUCT_BUNDLE_IDENTIFIER と一致させます。
以下はすべて Windows で完結:
- App 名、サブタイトル、説明、キーワード、サポート URL、プライバシーポリシー URL
- 各サイズのスクリーンショットとプレビュー動画(Figma、Photoshop 等)
- 価格、販売地域、App 内課金、サブスクリプション
- App プライバシー(Privacy Nutrition Labels)とデータ収集声明
- TestFlight テスター、審査用デモアカウント
メタデータ工数を過小評価するチームが多いです。ストア文案、ローカライズ、デバイスクラス別スクショは開発と並行可能——Mac 不要。Connect 作業も QA と同様にカレンダーを確保してください。
多言語 App では Connect で言語ごとに説明・キーワード・スクショを用意します。審査は主言語で行われますが、ユーザーが見るストアページは各言語フィールドの完成度に依存します。Windows のデザイン・文案ツールで十分対応できます。
ステップ 2:証明書、プロファイル、署名(Mac 必須)
Windows のみのチームが最も詰まる工程です。Distribution 証明書の秘密鍵は macOS Keychain にあり、Provisioning Profile は App ID と Capabilities(プッシュ、Sign in with Apple、App Groups 等)に紐づきます。Xcode の Signing & Capabilities が最も手間が少ないことが多いです。
署名エラーの表面症状は様々——「No signing certificate found」「Provisioning profile doesn't match」——根因は指紋不一致や Developer Portal と Xcode プロジェクト間の Capability ズレであることが多いです。初回公開は Mac 上で半日を署名専用に確保し、Windows で解決不能な workaround を探し回らない方が早いです。
推奨アプローチ
- クラウド Mac または共有 Mac で Xcode → Settings → Accounts に Apple ID。Automatic Signing または手動 Distribution 証明書
- .p12 + プロファイル エクスポート前に鍵管理ルールを合意——秘密鍵漏洩はなりすましリリースにつながる
- CI は App Store Connect API Key(.p8)+ fastlane。キーは本番シークレット同等に保管
- どの Apple ID が Distribution 証明書を持ち、どのマシンが Keychain エントリを保持するか文書化
多地域で署名源を統一するチームは iOS 署名と Provisioning Profile ガバナンス FAQ を参照。Windows はこの工程を代替不可——macOS Keychain なしに compliant な codesign 環境はありません。
他社から引き継いだプロジェクトは、初回 Archive 前に署名 ID を確認。Team ID 不一致、期限切れプロファイル、ポータルとプロジェクトの Capability ズレが初回アップロード失敗の上位三つです。
ステップ 3:Archive、アップロード、TestFlight
Simulator で問題なければ、リリースビルドは Release + Generic iOS Device / Any iOS Device で Archive。主要な三つのアップロード経路:
| 方式 | 向いている人 | 備考 |
|---|---|---|
| Xcode Organizer → Distribute App | 初回公開、GUI でトラブルシュート | クラウド Mac を VNC。Windows はリモート監視 |
fastlane gym + pilot | CI 経験チーム | スクリプト化、再現性、固定リリース cadence |
| Transporter(macOS) | .ipa あり、Xcode 不要 | ドラッグ&ドロップ。受託納品向け |
アップロード成功後、App Store Connect → TestFlight にビルド表示。処理は数分〜数時間。初回は 輸出コンプライアンス未入力、暗号化宣言、dSYM 未同期が多い——多くは Connect のフォームで解決、再コンパイル不要。
TestFlight 最低限:コールドスタート、ログイン/登録、コア課金、プッシュと deep link、複数 iOS 版と画面サイズ。StoreKit や地域価格は App Store 地域サンドボックス FAQ でノード選定。
ビルド番号(CFBundleVersion)とアップロード時刻を記録。Apple から ITMS メールが来たとき、正確なビルド特定で Windows とクラウド Mac 間の試行錯誤時間を削減。
TestFlight 外部テストは Beta App Review が必要で、初回は内部より 1〜2 日余計にかかることがあります。マーケ日程がタイトなら、外部テスターがインストールできるまでの審査時間を全体スケジュールに織り込んでください。
ステップ 4:審査提出と公開
TestFlight OK 後、ビルドを選び App 審査情報 を入力:
- 連絡先氏名と電話(審査から電話あり)
- デモアカウント ID/パスワード(ログイン必須の場合)
- 審査メモ:機能フラグ、テスト手順、特殊ハード要件
- コンテンツ権利、年齢制限、行政届出(事業・地域による)
「審査に提出」→ Waiting for Review → In Review。却下時は Resolution Center に Guideline。Windows ブラウザでメタデータ更新、新ビルド、または説明のみ返信。承認後 手動/自動リリース で国・地域選択。
却下の典型:クラッシュやプレースホルダー、プライバシーポリシー欠如、Info.plist Usage Description 不明瞭、Guideline 4.3 類似 App、IAP/サブスク説明不一致。開発 OS とは無関係が多い——初回 Archive 前の Info.plist と Capability は Mac/Xcode で正しく。
PM が Connect に貼る短い「審査パケット」:デモ資格情報、フラグ状態、三ステップ happy path。審査員も人間——明瞭さがマーケ文案に勝つ。
ログイン必須 App では、二段階認証なしで権限フルのテストアカウントを必ず提供。却下後は Resolution Center で英語簡潔に返信する方が長文の弁明より早く進むことが多い——これらの返信は Windows ブラウザで完結します。
Windows メインチームの推奨ワークフロー
多くのチームで検証された分担:
- Windows:VS Code / Cursor、Git PR、App Store Connect、審査メール
- クラウド Mac:同一 Git、
pod install/ SPM、Archive、fastlane、Signing エラーは VNC で GUI - 接続:SSH でスクリプト、VNC で GUI。成果物は Git/オブジェクトストレージ——手動の OS 間コピー回避
- リリースウィンドウ:クラウド Mac を日単位——リリース週のみ起動。常時 Mac より経済的
Archive → TestFlight の段階 checklist は Windows リモート Xcode ビルド・署名・TestFlight 全体 FAQ と照合。SSH、xcodebuild フラグ、初回エラーコードを一箇所に。
Git tag と App Store Connect ビルド番号の対応関係を残すと、障害時に Windows の Git 履歴とクラウド Mac の Archive ログを同じ commit にすぐ結びつけられます。
境界:CI のみでは足りないとき
GitHub Actions 等の macOS Runner は無人ビルド向き。以下は 対話可能なクラウド Mac を残す:
- 初めて Xcode で Capability をオン、Provisioning 不一致修正
- Organizer の ITMS エラーと Xcode ログ・Apple メールの突合
- 新 Simulator runtime 取得、Swift Package 索引異常
- 当日却下で Archive 再作成・再アップロード
CI は再現性、人間はポータルと Keychain の想定外。両方予算を——どちらか一方ではない。
初回公開後は CI に Archive スクリプトを移し、GUI が必要な例外だけクラウド Mac に接続する——二段構えにすると、2 回目以降のリリースコストが大きく下がります。
公開前チェックリスト(印刷可)
- Apple Developer Program 有効、Bundle ID 登録済み
- App Store Connect に App 作成、プライバシーポリシー URL 到達可能
- Distribution 証明書と App Store Profile 有効、Capabilities がプロジェクトと一致
- Archive は Release、バージョン(
CFBundleShortVersionString/CFBundleVersion)が増分ルール準拠 - TestFlight にビルド、輸出コンプライアンスと暗号化宣言完了
- スクショ、説明、年齢、デモアカウント、審査メモ準備完了
- 既知クラッシュとブロッカー修正、dSYM アップロード(シンボル化必要時)
リリース期のクラウド Mac
年に数回の公開のためだけに Mac を買うのは非効率。日単位の専有 Mac mini が「リリースウィンドウ」モデルに合う:SSH/VNC、Xcode バージョン固定、Archive 後シャットダウン。vpszap は Apple Silicon ベアメタル、多リージョン、日次課金、長期契約なし——「Windows でコード、Mac でリリース」と相性良好。vpszap クラウド Mac mini を見る、本番締切前に Archive → TestFlight 一連を試し、レイテンシとディスクを確認。