1. iOS CI/CD に本物の Mac が必要な理由
iOS のコード署名は macOS ネイティブ環境に依存しています。Xcode 15 以降、Apple Silicon ネイティブコンパイルが必須となり、仮想マシンやコンテナ手法の制限が増しています。本記事ではコードコミットから App Store 審査まで、再現可能なパイプラインを解説します。
1.1 Apple Silicon の主な制約
- xcodebuild
- ネイティブ ARM64 システム上で実行する必要があります。Rosetta 2 変換は Xcode 15 以降では Simulator や archive ワークフローを完全にはサポートしていません。
- notarytool
- 公証(notarization)には有効な Apple Developer 証明書と Apple サーバーへのリアルタイムネットワーク接続が必要です。
- codesign
- キーチェーン(Keychain)アクセスは持続的なセッション内で行う必要があります。CI の一時プロセスでは
security unlock-keychainステップが必要です。
1.2 自社 Mac mini ルームの問題点
Mac mini を自社運用する主な問題:初期ハードウェア調達コストが高い→ 2026 年には日次レンタルクラウド Mac が代替手段として登場- 運用チームが 24/7 対応を要求される
- リリースピーク時に弾力的なスケールアップが困難
「WWDC 2026 リリース前の 1 週間で 4 台追加しました。わずか 4 時間で完了しました。」——中規模ゲームスタジオの iOS リード
2. ツール選定
2.1 署名管理ツール比較
| ツール | 適したシナリオ | 証明書の保存場所 | メリット | デメリット |
|---|---|---|---|---|
| Fastlane match | チーム人数 ≥ 2 | Git / S3 | 統一管理、CI フレンドリー | Git リポジトリアクセスが必要 |
| Xcode 自動署名 | 個人開発者 | ローカルキーチェーン | ゼロ設定 | 複数マシン同期が困難 |
| 手動 provisioning | エンタープライズ配布 | 手動管理 | 完全な制御 | 非常に高い保守コスト |
2.2 Fastlane lane の例
# Fastfile
platform :ios do
lane :beta do
match(type: "appstore", readonly: true)
build_app(scheme: "MyApp", export_method: "app-store")
upload_to_testflight(skip_waiting_for_build_processing: true)
end
end
3. 環境準備:日次 Mac M4 PoC
リモート Mac へのアクセス取得後、以下の順序で検証します:
- SSH ログイン:
uname -mがarm64を返すことを確認 - Xcode バージョン:
xcodebuild -versionでターゲットバージョンを確認 - Fastlane インストール:
gem install fastlane - 試しビルド:サンプルプロジェクトで
xcodebuild buildを実行し、所要時間を記録
3.1 よくあるエラーのトラブルシューティング
エラー:No signing certificate found
fastlane match appstore --readonly false を実行して証明書を再取得します。Cmd+Space で Spotlight を開き、Keychain Access を検索して Apple CA の存在を確認します。
エラー:公証タイムアウト
Apple の公証サービスでキュー遅延が発生することがあります。通常 5〜15 分で完了します。CI パイプラインにタイムアウト&リトライロジックを実装してください。
4. パフォーマンスとコスト最適化
4.1 並列ビルドマトリックス
| シナリオ | 推奨構成 | 予想時間 |
|---|---|---|
| 単一アーキテクチャ Debug | M4 16GB × 1 | 3〜5 分 |
| マルチシミュレーター並列テスト | M4 24GB × 1 | 8〜12 分 |
| Release + Archive | M4 16GB × 1 | 6〜10 分 |
4.2 コスト管理
- 日次 PoC:まず 1〜3 日でパイプラインを検証し、安定後に週次・月次レンタルに移行
固定月次 M1 プラン→ M4 日次レンタルは競争力のある価格で大幅な性能向上を提供- リリースピーク時に 2〜4 台追加、ピーク後に解放
まとめ
iOS 18 CI/CD の主要ステップ:
- 日次 Mac M4 レンタルで PoC を完了
- Fastlane match で署名証明書を統一管理
- App Store Connect API Key で無人公証を実現