GitHub Actions macOS slow、iOS CI stuck、macos-latest queued で検索してきたなら、こんな症状が当てはまるはずです:
- マージ前に 5–10 分の追加キュー(リリース週はさらに悪化)
xcodebuild/pod installのばらつきが大きい——同一 commit で 2–3 倍の差- エンジニアの体感:「CI が抽選みたい——金曜午後は merge したくない」
👉 本ページは概要:Benchmark 結果と読み進め方を示します。キュー、ビルドのばらつき、cache、ROI、アーキテクチャ——それぞれ専用記事があるので、必要なトピックへジャンプしてください。
- warm build P95:
macos-latest14:12 → 専用 Mac mini M4 6:05(-57%) - キュー:平均 4:20 → 0
- 分散 σ:3:20 → 1:55(約 -40%)
以下は Benchmark 要約と Shadow クイックスタート。cache YAML、スコアリングモデル、アーキテクチャ checklist はリンク先のトピック記事にあります。
- warm P95 14:12 → 6:05;σ -40%;キュー解消
- 最適化順序:キュー → cold/warm 分離 → cache → 並列分離 → ハードウェア
- 再現:Shadow クイックスタート
チームが日 PR 20 件超でmacOS CI が頻繁にキューするなら → ROI トピック記事 でコストモデルを埋める。月間ビルド 50 回未満なら macos-latest で十分な場合も。
症状別ジャンプ:キュー → macos-latest がキューする理由 · ビルドのばらつき → iOS CI が遅い · ROI → 買う vs 借りる · データ → 本ページの ウォーターフォール + benchmark。
1. GitHub Actions macOS / iOS CI が遅いのはなぜ?
チームによって詰まるポイントは異なります。本ページは概要レベルに留め、症状に合うトピックへジャンプしてください:
| 検索している内容 | 典型的な症状 | 読む先 |
|---|---|---|
| macos-latest queued / github actions macos slow | PR が 4–8 分追加待ち、リリース週はさらに悪化 | macos-latest がキューする理由 |
| xcodebuild slow / ios ci slow fix | 同一 commit で 4 分のときと 12 分のときがある | iOS CI が遅い |
| cocoapods cache / deriveddata cache ci | pod install が 3–6 分で変動 |
Pods/SPM/DerivedData cache ガイド |
| self-hosted runner roi / mac mini ci | Mac mini を買うか借りるか? | 買う vs 借りる ROI |
| self-hosted architecture / multi runner | 複数マシン並列、fallback、ラベル設計 | セルフホスト アーキテクチャ |
「別 runner にするとどれだけ速くなる?」だけ知りたいなら、本ページの Benchmark と ウォーターフォール に留まってください。
2. Benchmark 結果:セルフホスト Mac mini M4 の効果
8 人 iOS チーム · CocoaPods · 日 PR 25–40 · アプリコード変更なし、runner 差し替えのみ。warm build のヘッドラインデータ:
| 指標 | macos-latest | Mac mini M4 | 変化 |
|---|---|---|---|
| P50 | 11:38 | 5:22 | -54% |
| P95 | 14:12 | 6:05 | -57% |
| σ | 3:20 | 1:55 | -40% |
| max | 22:40 | 8:30 | -62% |
| 失敗率(14 日間) | 8.0% | 3.2% | — |
環境概要:8 人 iOS チーム · CocoaPods · 日 PR 25–40 · 両側 Xcode 16.2 揃え · Mac mini M4 16GB + 1TB データボリューム · 14 日間 187 PR shadow デュアルラン。cold/warm 分離:ビルドばらつきの記事;再現:Shadow クイックスタート。
4:00–5:00 |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 52% 5:00–6:00 |■■■■■■■■■■■■■■■■■■ 28% 6:00–7:00 |■■■■■■ 10% P95 6:05 |■■■■■■■■■■■■■■
3. P95 時間ウォーターフォール:14:12 → 6:05(-57%)
共有しやすいコアチャート——8 分 07 秒の短縮がどこから来るか:
macos-latest P95 ████████████████████████ 14:12
│
キュー解消 −4:50 ████████████░░░░░░░░░░░░
cache/Pods −1:40 ████░░░░░░░░░░░░░░░░░░░░
xcodebuild −1:15 ███░░░░░░░░░░░░░░░░░░░░░
署名/アップロード −0:20 █░░░░░░░░░░░░░░░░░░░░░░░
▼
self-hosted P95 ██████████ 6:05 (−57%)
キュー単体 ≈ −4:50 → キューのトピックを読む。cache ≈ −1:40 → cache ガイドを読む。
4. 症状に合う記事を選ぶ
以下は一般的なトラブルシュート順です——いちばん痛いところから始めてください:
キューがつらい? → macos-latest がキューする理由(準備中) → 本ページ:benchmark + ウォーターフォール ビルド時間がバラバラ? → iOS CI が遅い(公開済み) → Pods/SPM/DerivedData cache ガイド(公開済み) 買う vs 借りるを決めたい? → 本ページの Shadow データ → 買う vs 借りる ROI(準備中) → Cloud Mac プラン / CI/CD FAQ マルチ runner や fallback? → セルフホスト アーキテクチャ(準備中)
5. トピックナビ
各記事は 1 つの具体的な問題を扱います。本ページは Benchmark 概要とリンクを提供します。
| トピック | こんな人向け | 状態 |
|---|---|---|
| macos-latest がキューする理由 | PR がキューで待たされる | 準備中 |
| iOS CI が遅い | 同一 commit で 2–3 倍のビルド時間差 | 公開済み |
| iOS CI 高速化:Pods/SPM/DerivedData cache | YAML をコピー、cache key を調整 | 公開済み |
| セルフホスト runner は価値があるか | 買う vs Cloud Mac 借りるの試算 | 準備中 |
| セルフホスト Mac mini アーキテクチャ | マルチ runner、ラベル、fallback | 準備中 |
公開済み関連記事:Mac mini M4 CI 入門 · 工数 ROI · CI/CD FAQ
6. Shadow benchmark クイックスタート
以下は最小再現手順。完全 workflow とロールアウト checklist:アーキテクチャのトピック;cache YAML:cache ガイド。
ios-ci.yml→ios-ci-shadow.ymlをコピー;runs-on: [self-hosted, macos-m4-ios]の job を追加- 各 PR を
macos-latestと同一 commit SHA で 7–14 日間デュアルラン - 壁時計 P50/P95 とキュー時間を記録;warm build P95 を別途算出(定義は iOS CI が遅い?)
- 失敗率を比較したら 買う vs 借りる ROI を検討
on:
pull_request:
branches: [main, release/*]
jobs:
ios-hosted:
runs-on: macos-latest
ios-shadow:
runs-on: [self-hosted, macos-m4-ios]
# 同一 steps · 同一 SHA
7. FAQ
GitHub Actions macOS セルフホスト runner は macos-latest よりどれだけ速くなる?
今回の warm build P95 -57%(14:12→6:05)、σ -40%。Benchmark を参照;再現は Shadow クイックスタート。
GitHub Actions macOS runner がキューするのはなぜ?
共有託管プール + リリース週の高並列。キューは課金対象外だが壁時計には含まれる。詳細 → キューのトピック。
セルフホスト runner は不安定になりやすい?
運用次第:ディスク水位、runner 監視、署名素材。Shadow 期間中に失敗率を比較;本ケース 14 日間 8.0% → 3.2%。macos-latest を fallback に残すと心理的リスクを下げられる。
Mac mini を CI runner にする価値はある?
日 PR 20 件超でキュー悪化時は検討の価値あり。月間ビルド 50 回未満なら託管で十分な場合も。スコアモデルと TCO → 買う vs 借りる ROI。
GitHub macos-latest の制限は?
共有キュー、短命ワークスペース、job 間の不安定 cache、並列 I/O 競合。DerivedData を固定したりキューを消したりはできない。
iOS CI の P95 はどう最適化する?
キュー → cold/warm → cache → 並列 → ハードウェア。ステップ別:キュー · ビルドばらつき · cache ガイド。
CocoaPods cache はどう最適化する?
完全 YAML と key 設計 → cache ガイド。
移行にどれくらいかかる?
準備 1–2 日 + Shadow 7–14 日 + 段階的ロールアウト 3–5 日。まず test のみ Shadow、署名は後からインポート。
8. 結論
セルフホスト runner へ切り替えた結果、warm P95 は 14:12 から 6:05 に短縮し、分散も大きく収束しました。本ページは benchmark とウォーターフォールを示し、キュー、ビルドばらつき、cache、ROI、アーキテクチャはそれぞれ専用記事で扱います。専用ハードウェアを導入する前に、Shadow デュアルランで自チームのデータを取ってください。
ROI を確認してから注文
推奨経路:Shadow デュアルラン → 買う vs 借りる ROI → Mac mini M4 をレンタル。Vuncloud は専有 M4 ノード(Xcode プリインストール、1TB データボリューム、runner セットアップガイド)を提供。