GitHub Actionsの自社Runnerは、ワークフローの指定と一致するラベル・Runner Groupを持ち、オンラインで空いている場合にジョブを受け取ります。一致するRunnerがなければジョブは待機します。GitHubの自社Runnerの割り当てと待機条件を踏まえると、企業iOS CI向けMacノードの容量見積もりは、開発者数から台数へ換算せず、実際のキューと実行記録から始めるべきです。
今週のアクション: PR、シミュレーター、署名・公開のジョブを分類し、待ち時間と実行時間を記録してください。その後、負荷ごとの基準容量を仮置きし、試行運用の結果で追加レンタルの要否を判断します。
この記事は、iOS CIのMac資源を調達する企業IT担当者、GitHub Actions自社Runnerのルーティングを担うプラットフォームエンジニア、実負荷に基づく予算を作るFinOps担当者向けです。
人数換算ではなく、ジョブの証跡から見積もる
開発者の人数だけでは、CIが同時に要求するMacの容量はわかりません。同じ人数でも、PRごとの構築、シミュレーター試験、定期回帰、リリースの集中具合で、必要な処理能力は変わります。
まず、Macを必要としない静的解析や一般的な検査をワークフローから分けます。すべてのジョブをMacへ送ると、Macでしか実行できないXcode関連処理と競合し、必要台数を過大に見積もるおそれがあります。ワークフローの指定方法はRunner Groupとラベルによる実行先の選択で確認できます。
GitHubのworkflow_jobイベントには、created_at、started_at、completed_atの時刻情報があります。この記録から、キュー待ちと実行時間を分けて算出できます。また、イベントにはqueued、in_progress、completedなどの状態があり、workflow_job Webhookの仕様に沿って集計すると、待機から完了までの流れを追いやすくなります。
PR・シミュレーター・署名公開では負荷の性質が異なる
| シナリオ | 見積もりに使う入力 | 容量を左右する制約 | 確認する証拠 |
|---|---|---|---|
| PRと通常ビルド | 起動頻度、実行時間、同時に走るジョブ | Mac不要の検査を別Runnerへ振り分けられるか | ワークフロー履歴、ジョブ開始・終了時刻 |
| シミュレーターと回帰試験 | 試験セット、並列実行の設定、実行時間 | OS、Xcode、シミュレーター環境の互換性 | テスト結果、キューの伸び、環境指定 |
| アーカイブ・署名・公開 | 実行頻度、公開時間帯、資格情報の扱い | 保護された環境や署名権限を共有できるか | 承認条件、アクセス範囲、公開履歴 |
| 専用ツールチェーンや旧環境 | 対象ジョブ数、必要な環境の種類 | 特定のmacOS、Xcode、アーキテクチャへの依存 | Runnerラベル、実行先、失敗・再試行記録 |
PRと通常ビルド: まずPR、コミット、メインブランチの各トリガーを区別し、Mac上で動くジョブだけを集計します。共通の検査処理をMac以外へ移せるなら、その分をMac容量の計算から外します。
シミュレーター試験: マトリクス実行や回帰試験は、実際に並行できるかを確認します。テストを並列化できても、同じmacOSやXcode環境が必要なら、任意の空きRunnerへ流せるとは限りません。通常ビルドと共用するかは、キュー待ちと環境要件の両方で判断します。
署名・公開: アーカイブにかかった時間だけで、同時実行できるジョブ数を決めないでください。署名資格情報、承認、公開環境の制約を先に整理します。アクセス範囲を分ける必要があれば、通常のPR用容量と切り離したRunner Groupを検討し、Runner Groupのアクセス制御に従って対象を限定します。
専用環境: 必要なmacOSやXcodeが異なるジョブを同じ容量プールにまとめると、空きがあっても条件不一致で実行できない場合があります。Runnerラベルの設定方法を確認し、ジョブの指定と実際の環境が一致しているか、履歴から確かめます。
待ち時間と実行時間を分け、基準枠とピーク枠を作る
容量見積もりは、記録から再計算できる形にします。ワークロードごとに、対象期間のジョブ数をJ、平均実行時間をD、実行時間帯に重なる割合をP、Mac Runnerが実際にジョブを受けられる割合をAと置きます。概算の同時処理需要はJ × D × Pで表せます。稼働可能時間を含めた基準ノード数の目安は、J × D × P ÷ Aをノードが対象期間内に処理できる時間で割って求めます。
これは企業側の試算モデルであり、GitHubが推奨するノード数や公式の待ち時間基準ではありません。短い時間帯にジョブが集中するピーク枠は、通常負荷とは別に履歴から見積もり、試行運用で妥当性を確かめます。
GitHub Actionsのプラットフォーム側の同時実行制限は、プランなどに応じて扱いが異なります。GitHub Actionsの利用制限を確認し、プラットフォーム側の上限と、自社が用意したMac Runnerの処理容量を混同しないでください。自社Runnerを増やしても、プラットフォーム側の制限や、条件に一致するRunnerが空いていない問題は別途確認が必要です。
| 選択肢 | 適する負荷 | 強み | 見落としやすい条件 |
|---|---|---|---|
| 購入したMacを基準容量にする | 継続的で読みやすいビルド負荷 | 稼働環境を継続して管理しやすい | 初期調達、保守、更新、余剰容量の負担 |
| Macをレンタルして基準容量にする | 利用期間や必要台数が変わる負荷 | 調達規模や期間を負荷に合わせて検討できる | 構成、提供地域、納期、契約条件の事前確認が必要 |
| 保有分と追加レンタルを組み合わせる | 安定した通常負荷と一時的なピークがある | 基準分と変動分を分けて予算化しやすい | Runnerの登録、ルーティング、資格情報の運用設計が必要 |
今週から試行運用までの確認項目
次の項目を、実際のワークフロー履歴と運用ルールに照らして進めてください。
- [ ] Macで実行するジョブと、別のRunnerへ移せるジョブを分類する。
- [ ] PR、シミュレーター、署名公開、専用ツールチェーンの実行履歴を分けて集計する。
- [ ]
created_at、started_at、completed_atから、キュー待ちと実行時間を算出する。 - [ ] Runner Groupとラベルの指定を照合し、空きがあるのに条件不一致で待機するジョブを探す。
- [ ] 署名資格情報や公開承認を確認し、共用できない負荷を別プールとして扱う。
- [ ] 基準容量とピーク時の追加枠を仮定し、小規模な試行運用で待ち時間と完了状況を検証する。
実行待ちが一時的なら、優先度の低い回帰試験を時間帯で分ける方法もあります。待ちが繰り返し続く場合は、追加ノードだけでなく、Runnerの条件指定やジョブのMac依存自体を見直してください。必要に応じて、Runner Scale Setsの仕組みとスケールセットの導入手順を読み、組織の運用要件に合う拡縮方式か確認します。ここで示す方式はGitHub側の機能説明であり、企業の容量や性能を保証するものではありません。
FAQ:待機・分離・追加枠の判断
PRビルド、シミュレーター試験、署名公開は、必ず別のMacに分けますか?
必須ではありません。環境条件が共通で、アクセス権限も共有でき、キュー待ちが許容できるなら共用を試せます。署名資格情報を扱うジョブや専用ツールチェーンが必要なジョブは、分離要件と実行履歴を確かめてから別のRunner Groupや容量枠に分けてください。
自社Runnerが待機しているとき、GitHubの制限とMacの不足をどう見分けますか?
ジョブのラベルとRunner Groupが合うか、対象Runnerがオンラインかつ空いているかを先に確認します。そのうえで、ジョブ時刻から待ち時間を出し、プラットフォームの同時実行制限も別に照合してください。条件不一致やプラットフォーム制限なら、Macを増やすだけでは解決しません。
ピーク用のMac枠は、いつ常設容量へ切り替えますか?
リリースや一括回帰の後だけに待ちが現れるなら、ピーク用の追加枠を試す余地があります。通常の作業時間にも待ちが継続するなら、基準容量やジョブ構成を見直す判断材料になります。いずれも実際の待機・実行履歴と、チームが定めた待ち時間の目標で検証してください。
Macの購入とレンタルは、どの負荷に向いていますか?
稼働が継続し、必要な構成も安定しているなら、購入したMacを基準容量として検討できます。案件やリリース時期によって必要量が変わるなら、追加分をレンタルする構成が候補になります。保守負担、調達期間、契約条件を確認し、手元の試算に含めて比較してください。
開発者数で一括調達する方法は、ピークに備えて余剰機材を抱えたり、逆にリリース時の待ちを見落としたりしやすくなります。自社設備だけでは追加調達に時間がかかり、変動分まで常設すると保守や更新の負担も続きます。負荷の変動が大きいチームは、安定分を自社で確保し、試行期間やピーク分をMacレンタルで補う構成を比較してください。長期にわたる安定した高負荷や、物理接続が必須の作業では、購入や社内設備のほうが適する場合もあります。
まずは実測した負荷と必要な環境を照らし合わせたうえで、VMSPINの料金・レンタル期間と利用できるMacの申し込み情報を確認してください。記載された構成や提供条件がチームの要件に合う場合に限り、試行用容量の相談へ進むと、台数を先に決めてから条件を合わせる手戻りを避けられます。