Vuncloud ブログ
← フィールドノートへ戻る

GitHub Actions macOS ランナー最適化:P95 57% 短縮 + iOS CI 実践ガイド

GitHub Actions macOS / iOS CI 最適化の概要 · warm P95 14:12 → 6:05 · トピック別の深掘りは下のナビへ ·約 8 分

エンジニアチームが GitHub Actions macOS セルフホスト runner と iOS CI 性能最適化をレビューしている様子
GitHub Actions macOS CI は遅い?

GitHub Actions macOS slowiOS CI stuckmacos-latest queued で検索してきたなら、こんな症状が当てはまるはずです:

  • マージ前に 5–10 分の追加キュー(リリース週はさらに悪化)
  • xcodebuild / pod installばらつきが大きい——同一 commit で 2–3 倍の差
  • エンジニアの体感:「CI が抽選みたい——金曜午後は merge したくない」

👉 本ページは概要:Benchmark 結果と読み進め方を示します。キュー、ビルドのばらつき、cache、ROI、アーキテクチャ——それぞれ専用記事があるので、必要なトピックへジャンプしてください。

Shadow 対照結果(14 日間)
  • warm build P95macos-latest 14:12 → 専用 Mac mini M4 6:05-57%
  • キュー:平均 4:20 → 0
  • 分散 σ3:20 → 1:55(約 -40%

以下は Benchmark 要約と Shadow クイックスタート。cache YAML、スコアリングモデル、アーキテクチャ checklist はリンク先のトピック記事にあります。

TL;DR · エンジニア向け
  • warm P95 14:12 → 6:05;σ -40%;キュー解消
  • 最適化順序:キュー → cold/warm 分離 → cache → 並列分離 → ハードウェア
  • 再現:Shadow クイックスタート
TL;DR · マネジメント向け

チームが日 PR 20 件超macOS CI が頻繁にキューするなら → ROI トピック記事 でコストモデルを埋める。月間ビルド 50 回未満なら macos-latest で十分な場合も。

TL;DR · 意思決定

症状別ジャンプ:キュー → macos-latest がキューする理由 · ビルドのばらつき → iOS CI が遅い · ROI → 買う vs 借りる · データ → 本ページの ウォーターフォール + benchmark

-57%
P95 壁時計時間
-40%
壁時計標準偏差(分散収束)
187
14 日間 PR 対照サンプル

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-latestMac mini M4変化
P5011:385:22-54%
P9514:126:05-57%
σ3:201:55-40%
max22:408: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 クイックスタート

サンプル分布 · セルフホスト warm(n=162)
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 秒の短縮がどこから来るか:

P95 壁時計ウォーターフォール(warm build)
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:40cache ガイドを読む。

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 ガイド

  1. ios-ci.ymlios-ci-shadow.yml をコピー;runs-on: [self-hosted, macos-m4-ios] の job を追加
  2. 各 PR を macos-latest同一 commit SHA で 7–14 日間デュアルラン
  3. 壁時計 P50/P95 とキュー時間を記録;warm build P95 を別途算出(定義は iOS CI が遅い?
  4. 失敗率を比較したら 買う vs 借りる ROI を検討
Shadow トリガー(抜粋)
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 借りる ROIMac mini M4 をレンタル。Vuncloud は専有 M4 ノード(Xcode プリインストール、1TB データボリューム、runner セットアップガイド)を提供。

CI/CD 導入 FAQ · プラン・料金 · Mac mini M4 をレンタル

データセンターノート · iOS CI

キューの痛みから ROI 判断へ

Benchmark · ウォーターフォール · トピックナビ

トピックナビ
期間限定 プランを見る