ビルド用ホストはシンガポールに置きつつ、オーケストレーションと成果物の出口は米国や EU にある——そんな構成ですか。 本稿は、リモート Mac 上で XCTest のユニットテストと UI テスト を並列化するチーム向けです。「ローカルは緑、CI は赤」をフレークに見せかける六つの誤解、M4/M4 Pro・シミュレータ数・DerivedData のディスク余裕・租期 をひとまとめにした二枚の表、貼り付け可能な xcodebuild フラグ・ディスク確認コマンド・六ステップの Runbook を用意しました。読了後、ワーカー数やディスクアラートのしきい値を説明し、Runner のタイムアウトを調整すべきかリージョンを動かすべきか判断できるようになります。
次にメモリ・ディスク・ネットワークを一枚の地図にし、パラメータ化した表に落とし込みます。
並列ユニットテスト は CPU と RAM のピークを押します。ディスク書き込みは DerivedData のインデックスとビルド成果物に集中します。キャッシュが温まっていると、リンクのバーストとプロセス数が生の GHz より先に上限になります。並列 UI テスト はシミュレータの描画、WindowServer、一時ファイルを足します。N 本目の並列レーンでテールレイテンシが膨らむと、スピードアップは線形ではなくなります。
DerivedData の増え方はモジュールキャッシュ、並列コンパイル、クリーンの頻度に追従します。ディレクトリサイズとビルド頻度を月額だけでなく FinOps の信号として追跡してください。クロスリージョンの経路 はローカルディスク要件を緩めませんが、結果とログのテールレイテンシを増幅します。「xcodebuild は成功」と「パイプラインのステップは成功」を分けないと、切り分けの層を誤ります。
Runner のラベルと並列度 の記事、および 再現可能なビルドと DerivedData のチェックリストと併読してください。ジョブの振り分け、ビルドルートの固定、シミュレータ数の上限は別々のつまみです。
| 観点 | Mac mini M4(基準) | Mac mini M4 Pro(高並列向け) |
|---|---|---|
| 想定用途 | ユニットテスト 2〜4 ワーカー程度。UI は並列度を下げるか時間分割する | ユニットテスト 4〜8 ワーカー程度。UI の並列度はソークテストのあとで引き上げる |
| メモリ負荷の兆候 | スワップ、シミュレータ起動の遅化、負荷時の UI のもたつき | 同じ並列度ではスワップが起きにくい。ディスク IO が先に頭打ちになることもある |
| ディスク指針 | 512 GB はブランチが増えるとすぐ逼迫しがち。並列+多ブランチなら 1 TB を計画する | 並列 UI と複数 Xcode 版なら 2 TB を優先するか、クリーンアップを積極的に行う |
| 向き | 小〜中規模リポ、ユニット中心、夜間に一度まとめて実行 | 大規模モノレポ、UI パック多数、PR ビルドが頻繁 |
| レンタルとの組み合わせ | 月額のベースラインに、リリース週だけ短いバーストを足す | 月額/四半期のロックでピーク時の取り合いを避ける |
UI 付きの xcodebuild test では、コンパイルの並列度 と テストの並列度 を切り離します。ビルドでは -parallelizeTargets を上げられますが、-parallel-testing-enabled と -maximum-parallel-testing-workers は別途ソークテストが必要です。GUI での切り分けが必要なら、高い UI 並列を 24 時間 WindowServer に貼り付けたままにせず、SSH と VNC のガイド に沿って短い対話ウィンドウを確保する運用と組み合わせます。
| シナリオ | 並列戦略 | リモート Mac での追加確認 |
|---|---|---|
| 純ユニット、短いスイート | 中程度のワーカー を RAM ピークに対してサンプリングする | DerivedData の増加カーブを監視する |
| 重い UI テスト | 低並列+キューイングする時間帯。必要ならスキーム分割 | シミュレータのクリーンアップと WindowServer 再起動の方針を文書化する |
| モノレポ、多ブランチ | Runner ラベルで隔離し、DerivedData ルートを分ける | シークレットと並列上限を Runner チェックリスト と整合させる |
| グローバルチーム、ログ出口が遅い | ローカルのテスト並列度は維持し、集計/アップロードを抑制する | HTTP/SSH のタイムアウトと再試行を調整し、マルチリージョンのレンタルガイド でリージョンを見直す |
| 夜間フルマトリクス+日中 PR | 夜は高並列、日中は main を守るガードをかける | オフピークにディープクリーンをスケジュールする |
# 例:並列テストワーカー数の上限(プロジェクト/機器ごとに調整し、そのままコピーしないでください) xcodebuild test \ -scheme YourScheme \ -destination 'platform=iOS Simulator,name=iPhone 16,OS=18.4' \ -parallel-testing-enabled YES \ -maximum-parallel-testing-workers 4 \ -resultBundlePath ./TestResults.xcresult
# DerivedData/Simulator の使用量確認(しきい値はディスクに対する割合など、各自で設定) du -sh ~/Library/Developer/Xcode/DerivedData 2>/dev/null du -sh ~/Library/Developer/CoreSimulator 2>/dev/null df -h /
注意: 単一ワーカー時の基準線と現在の並列度を並べて——合計時間、テストごとの P95、ピーク RAM、ディスク書き込み——を取得してから、調整完了と宣言してください。
-maximum-parallel-testing-workers を変え、各段階で連続三回のグリーンを条件にします。本稿は 一台のリモート Mac で並列テストをどこまで押すか に答えます。マルチリージョンのノードガイド は ホストをどこに置くか、ゼロトラスト接続のチェックリスト は トラフィックがどう届くか に答えます。読む順序は、リージョンと租期 → 接続と Runner → 並列テスト容量とし、不安定な経路の上に並列度を積み上げないでください。
ノート PC はスリープ方針、コンシューマ向けネットワーク、パッチの漂いを引き継ぎ、チーム SLA には不向きです。並列度を上げると、CI ワーカーとして設計されていない機器の熱とディスク負荷が増えます。専用のリモート Mac は実行を個人端末から契約上切り離し、自動化の面を安定させます。
リージョン配置、ピーク時のレンタル統制、OpenClaw のような長寿命エージェントと共有するクリーンなホスト が必要なとき、MACCOME のクラウド Mac で並列テストを走らせる方が、不安定なノートにワーカーを積み上げるより承認を得やすいです。まず 料金 を確認し、主要ユーザーに合わせて シンガポール、東京、ソウル、香港、米国東海岸、米国西海岸 から注文へ。接続の切り分けは ヘルプセンター の SSH やトンネルの項目を参照してください。
よくある質問
M4 で安全に始められる並列度はどのくらいですか?
インターネット上の定番値をそのままコピーするのではなく、ソークテストで確認します。まずはワーカー 2 から始め、RAM とディスクをサンプリングしてから、上の表を手がかりに段階的に増やします。レンタル階層の比較は Mac mini レンタル料金 ページで行ってください。
DerivedData がほぼ一杯のとき、最初に何を変えればよいですか?
無言のハングを避けるため並列度を下げ、続けてクリーンアップを実行します。ディレクトリ境界は 再現可能ビルドと DerivedData のチェックリスト に合わせてください。
CI は失敗するのにローカルは成功します。どこを調べればよいですか?
アップロードや集計のタイムアウトとテスト失敗を切り離して調べます。ノード配置は マルチリージョンのノードガイド で検証してください。
フレークが急増しました。すぐにマシンを増やすべきですか?
単一ワーカーでの対照実行とリソース監視により、競合由来の不安定さを除外してから判断します。コア追加や M4 Pro/2 TB へのアップグレードはその後の選択肢です。