2026 GitHub ホスト macOS Runner と専用 Mac クラウドビルドプール:並列度・分課金・キャッシュ戦略

プラットフォーム責任者が直面するのは「GitHub の macOS 分課金で足りるか、専用 Mac クラウドで self-hosted を張るべきか」という問いです。本稿は Git 側 CI のスループットとキューを扱う選択であり、Xcode Cloud の代替ではないことを明確にし、請求・並列上限・DerivedData・ディスク水位を同時に見る枠組み、比較表、5 ステップ、レビュー向け硬指標、FAQ を提示します。

2026 年に GitHub ホスト Runner と専用 Mac クラウドプールを比較する開発者のイメージ

要点

1. 要約:各アプローチが最適化するもの

GitHub ホスト macOS Runner は運用ゼロの分課金を提供し、PR 検証や変動の大きいチームに向きます。専用 Mac クラウドプールはディスク、ツールチェーン、出口ポリシーを自分で固定し、self-hosted ランナーでラベル単位に並列を制御します。いずれも Git 側 CI の問題であり、App Store Connect 連携を担う Xcode Cloud とは役割が異なります。max-parallel を増やせば速くなるとは限らず、ホスト側は組織キューと分単価の制約を受け、セルフホスト側は DerivedData 競合・キーチェーン排他・ディスク急増で p95 が悪化します。分単価、p95 のうちキューとコンパイルの内訳、キャッシュ、空き容量をセットで見ることが重要です。

Linux VPS 出身のチームは、同一ユーザキーチェーンへの同時 Archive、Spotlight の干渉、ノート PC とサーバの Xcode 微差による再現性の差に注意してください。ホスト Runner は毎ジョブでイメージが新しくなる一方、セルフホストは再現性と運用負荷の両面を露呈します。コスト試算ではエンジニア時間も含め、リリース週のキュー待ちで分が膨らむケースと、定額近い Mac クラウドで p95 を安定させるケースを比較してください。

2. 痛点:請求・キュー・キャッシュ・競合

  1. 請求:ホストはコミットとピークに連動し複数リポが重なると急伸します。Mac クラウドは時間・月額+転送が中心で長時間 CPU 占有に向くが、アイドル配分が要ります。
  2. キューと並列:ホストはスケジューラと組織上限の影響を受けます。セルフホストは CPU/RAM/IO が上限で、並列 xcodebuild 過多はリンクや Swift ピークで振れます。
  3. DerivedData:ホストの一時 FS と永続ボリュームではキャッシュ意味が異なります。パスを分けクリーンアップを設計しないとヒット率かディスクかの二極化になります。
  4. セキュリティ共存:企業 PKCS・固定出口・常駐デーモンを同居させるなら専用プールが現実的です。

第五の論点は可観測性の対等性です。GitHub はキューをダッシュボード化しますが、セルフホストはディスク・CPU・launchd を自前で監視しないと「分が増えた」「赤がランダム」で語彙が割れます。ci-pr / ci-release などラベルを標準化し、ワークフローとコストセンタに直結させてください。

3. 判断マトリクス

観点GitHub ホスト macOS専用 Mac クラウドプール
課金分課金、並列で変動賃料+転送、重いコンパイルに平滑化しやすい
並列制御組織枠と共有スケジューラ自前ラベルと executor
ディスクキャッシュ API+エフェメラル永続パスと独自クリーンアップ
ツールチェーンプラットフォームイメージのペース複数 Xcode 共存
署名Secrets パターンに従うmatch / API キーを企業 PKI に合わせやすい
ヒント:軽い検証はホスト、重い Archive は self-hosted ラベルへ。ブランチ規則と concurrency を README に明記し DerivedData の衝突を防ぎます。

4. 測定からスケールまで 5 ステップ

  1. p50/p95・キュー待ち・実効 $/分を測定。キュー支配なら先に並列ウィンドウを調整。
  2. SSH で xcodebuild -version、システム巻 40GB 以上空き、プロキシ/DNS、Git までの RTT を確認。
  3. ラベルごとに DerivedData パスを分離。ナイトリーと PR で保持ポリシーを変える。
  4. concurrency でリリース再入を防ぎ、メモリピークを見てから並列を上げる。
  5. SLA 違反が続く、ディスク警告、第二リージョンが必要ならノードを水平追加。並列だけを上げない。
on: push: branches: [ release/* ] jobs: ios-archive: runs-on: [self-hosted, macOS, ARM64, pool-prod] concurrency: group: ios-archive-${{ github.ref }} cancel-in-progress: false

5. レビュー用の硬指標

財務レビューでは GitHub の利用 CSV とセルフホスト稼働レポートを並べ、ホスト分はコミット速度と相関し、Mac クラウド賃料はベース負荷と相関すべきです。コミットが横ばいなのに分だけ増えるならキャッシュミス、ミラー遅延、キュー競合を疑ってください。

6. 並列よりノード追加を優先する条件

分課金だけに頼ると固定出口や無人署名で頭打ちになり、単一セルフホストはディスクと競合で赤ビルドを繰り返します。現実的なのは軽検証をホストに残し、重いコンパイルとリリースを専用 Mac クラウドへ寄せ、SLA 逸脱や第二リージョン要件で水平拡張することです。オフィスの物理 Mac を常時見張るより、専用 Mac クラウドを数時間で立ち上げ SSH で Linux VPS 感覚に揃え、ホスト分を積み上げるより予測しやすい年間予算に寄せられます。Xcode Cloud と併用する場合も、GitHub ホストと Mac クラウド self-hosted は Git CI 算力の話であり、ブランチ責務を明確にしてください。ノード開通とパイプライン接続を API 体験に近づけるには、VPSMAC の 90 秒 API と CI/CD 連携記事でノードから自動化までを一気通貫させます。