← ブログに戻る

GitHub Actions macOS Runnerの選び方?2026年ホステッドと自前構築のコスト

GitHub Actions macOS Runnerの選び方?2026年ホステッドと自前構築のコスト

GitHub ActionsでiOSやmacOSアプリを継続的にビルドするチーム向けに、ホステッドRunnerと自前のMac Runnerを、利用率、キュー、Xcode管理、セキュリティ、保守の指標で比較します。利用率が読めない場合に、Mac Runnerのレンタルで実負荷を確認してから購入判断へ進む方法も説明します。

GitHub ActionsのmacOS Runnerは、公式料金表で実行時間を分単位の課金対象として確認できます。GitHub Actions Runnerの公式料金表に照らすと、低頻度で負荷が変動するチームはGitHub-hosted runnerを優先し、長時間ビルドや固定Xcode、社内依存があるチームは自前のMac Runnerを検討するのが現実的です。利用率がまだ読めない場合は、先にMac Runnerをレンタルして実測し、購入へ進むか判断します。

GitHub Actions macOS Runnerの費用は、単純な実行分数では決まりません。待ち時間、空き時間、環境更新、証明書管理、障害復旧まで含めて比較する必要があります。

この比較が必要なチーム

対象は、GitHub ActionsでiOSまたはmacOSアプリを継続的にビルドし、macOSジョブの実行時間やキューが開発速度に影響し始めたチームです。特定のXcode、署名証明書、社内API、プライベートな依存パッケージを使うCI管理者にも向いています。

また、物理的なMacを購入するか、クラウド上のMac Runnerをレンタルするか、GitHubの標準環境を使い続けるかを、予算だけでなく運用負担から決めたい技術管理者にも役立ちます。

まず利用率と待ち時間を分けて記録する

最初に、直近のワークフロー実行履歴から次の項目を抽出します。

  • 月間のジョブ実行時間
  • 1ジョブあたりの依存関係取得時間
  • Xcodeによるコンパイル時間
  • 単体テスト、UIテスト、アーカイブの時間
  • Runnerが割り当てられるまでの待ち時間
  • 同時実行数と、ピーク時に発生するキュー
  • 失敗後の再実行時間
  • Runnerが実際には使われていない空き時間

GitHub-hosted runnerでは、公式のmacOS Runner料金、契約に含まれる利用枠、Runnerの種類を料金表で確認します。料金はプランやRunnerの仕様によって変わるため、古い比較記事の単価をそのまま予算に入れず、見積もり時点の公式ページを基準にします。

自前のself-hosted runnerでは、次の費用項目を別々に記録します。

  • Mac本体の購入費またはレンタル費
  • macOS、Xcode、Runnerアプリの更新作業
  • SSD容量不足による清掃や交換
  • 証明書、署名鍵、秘密情報の管理
  • 監視、再起動、障害調査
  • 使われない時間の固定費
  • 代替ノードや復旧用の予備環境

この計算では、月間実行時間を稼働可能時間で割った利用率だけでなく、ピーク時の同時実行数も確認します。平均利用率が高くても、リリース前だけジョブが集中するなら、単一のMacではキューが長くなりやすいからです。

注意: Runnerがビルドしている時間と、ジョブが待っている時間は別の指標です。待ち時間を実行料金に含めない仕組みでも、開発者の確認が遅れ、再実行やリリース判断の時間が増える場合があります。

GitHub Actions macOS Runnerの速度を工程別に見る

「Macのスペック」だけで比較すると、依存関係の取得やテストの遅さを見落とします。ワークフローのログを、準備、依存取得、コンパイル、テスト、アーカイブ、成果物アップロードに分けると、改善すべき箇所が明確になります。

依存関係キャッシュは、同じパッケージやビルド中間生成物を毎回取得・生成する時間を減らす候補です。ただし、キャッシュが古いXcodeやSDK向けの成果物を再利用すると、再現性を損なう可能性があります。保存キーにOS、アーキテクチャ、Xcode世代、ロックファイルのハッシュを含める設計を、GitHub Actionsの依存関係キャッシュ公式資料で確認します。

GitHubが公開するRunner Imagesの一覧では、利用可能なmacOSイメージやラベルを確認できます。Runner Imagesの公式リポジトリを参照し、ワークフローで指定したラベルが、実際に必要なXcodeとCPUアーキテクチャを提供しているかを確認してください。

2026年8月21日時点では、xcode-27 ラベルが公開プレビューとして扱われています。また、Apple silicon向けのXcode 27 macOS Arm64イメージも公開されていますが、プレビュー状態や内容は変更される可能性があります。採用前にArm64版Xcode 27イメージの説明を確認し、正式リリース前のラベルを本番の唯一の経路にしない構成が安全です。

比較指標 GitHub-hosted runner self-hosted runner Mac Runnerのレンタル
課金の基準 公式料金表の実行時間と契約条件 機器またはレンタル、保守、空き時間 契約期間、構成、利用時間などの契約条件
Xcodeの固定 公開イメージの範囲内 チーム側で固定しやすい 提供構成の範囲で固定しやすい
キュー対策 Runnerの種類や並列設計を見直す ノード追加で調整しやすい 期間限定でノードを増やしやすい
運用担当 原則として基盤保守が少ない 更新・清掃・監視が必要 契約範囲とチーム側の環境管理を分担
向く状況 低頻度、変動大、標準環境 高利用率、固定環境、内部依存 短期案件、移行期、利用率の検証

Xcodeと依存環境の固定範囲を決める

標準イメージを使えるなら、GitHub-hosted runnerは環境を毎回作り直しやすく、前のジョブの作業ディレクトリや秘密情報を残しにくい点が利点です。一方で、必要なXcodeの版、特殊なプラグイン、社内証明書、VPNや内部ネットワークへの接続が標準イメージの範囲外なら、ワークフローの準備処理が増えます。

self-hosted runnerでは、Xcodeと依存ツールを固定し、キャッシュや署名関連の設定を事前に用意できます。しかし、環境を固定したままにすると、macOSやXcodeの更新遅れが脆弱性、SDK差分、審査前の互換性問題につながります。固定とは放置ではなく、更新日、検証手順、ロールバック方法を管理することです。

自前のRunnerを追加する場合は、GitHub公式のRunner追加手順に沿って、ラベル、所有範囲、登録トークン、削除手順を決めます。Xcodeの複数世代を扱うチームでは、1台にすべてを詰め込むより、用途ごとにラベルを分けたほうが更新と障害切り分けを行いやすくなります。

セキュリティと権限を先に分離する

macOSビルドでは、署名証明書、App Store Connect関連の認証情報、プライベートリポジトリのトークンを扱うことがあります。Runnerが前のジョブの作業ディレクトリ、キーチェーン、キャッシュを残すと、次のジョブや別のリポジトリから読み取られるリスクが高まります。

GitHubは、特に公開リポジトリのワークフローを自前のRunnerで実行する場合の安全性に注意を促しています。self-hosted runnerへのアクセス管理に関する公式説明を確認し、信頼できないプルリクエストが永続的なMacへ到達しないようにします。

実装時は、次の分離を行います。

  • 公開リポジトリと社内リポジトリでRunnerを分ける
  • 本番署名用と開発用の証明書を分ける
  • リポジトリや組織単位でRunner groupを設ける
  • ラベルだけに依存せず、実行可能なリポジトリを権限で制限する
  • ジョブ終了後に作業ディレクトリ、DerivedData、ログ、キーチェーンを清掃する
  • 秘密情報を通常の環境変数やリポジトリ内ファイルに固定保存しない

Runner groupの割り当ては、公式のRunner groups権限ガイドで確認できます。権限設定を後回しにして台数だけ増やすと、キューは短くなっても、秘密情報へ到達できるワークフローの範囲が広がるおそれがあります。

保守時間と復旧経路を費用に含める

自前構築が安く見えるのは、担当者の時間をゼロとしている場合が多くあります。実際には、macOSとXcodeの更新、Runnerアプリの更新、容量不足への対応、証明書の更新、ジョブ失敗の調査、再起動、予備ノードへの切り替えが必要です。

特にiOS CIでは、署名設定やXcodeの変更がビルド失敗に直結します。更新を一斉適用するのではなく、検証用Runnerで確認してから本番Runnerへ反映し、失敗時には前の環境へ戻せるようにします。

運用項目 低頻度のGitHub-hosted runner 高利用率の自前Mac レンタルMac Runner
更新作業 イメージの変更点を確認 チームが実施 契約範囲を確認し、必要部分を実施
ディスク清掃 ジョブ設計とキャッシュを管理 定期清掃が必要 利用方式に応じて清掃を設計
障害時 別ジョブや別ラベルを検討 予備機または復旧手順が必要 交換・再提供条件を確認
監視 キューと失敗率を監視 ホスト、容量、Runner状態も監視 接続、稼働、契約上の対応を監視
コストの盲点 待ち時間と追加実行 空き時間と担当者工数 契約期間と未使用時間

条件分岐で3つの方式を選ぶ

次の条件を上から確認すると、単価だけに引っ張られずに選択できます。

  • 低頻度で実行量の波が大きく、標準のXcodeイメージで足りる場合は、GitHub-hosted runnerを選びます。固定費と保守を増やさず、必要なときだけ実行する構成が合います。
  • 毎日安定して長時間ビルドし、Xcode、証明書、内部ネットワークを固定する必要がある場合は、self-hosted runnerを選びます。ただし、更新担当者と復旧用の手順が用意できない場合は、レンタルまたはホステッドへ戻します。
  • 短期プロジェクト、Xcode移行、チーム拡大の途中で利用率が不明な場合は、Mac Runnerを一定期間レンタルします。実行時間、キュー、失敗率、保守時間を記録し、購入後も継続して使える負荷か確認します。
  • ピーク時だけ待ち時間が増える場合は、常時ノードを購入する前に、ジョブ分割、キャッシュ、Runnerラベル、期間限定の追加ノードを比較します。
  • 公開リポジトリのコードを永続ホストで実行する必要がある場合は、自前Runnerを急いで導入せず、権限分離と秘密情報を使わないジョブ設計を先に整えます。

レンタルを検討する場合は、利用地域や接続条件だけでなく、Xcodeの版、Apple siliconの有無、接続方式、交換条件を事前に確認します。候補の構成を確認する段階では、日本向けMac環境の案内北米向けMac環境の案内を参照し、GitHub Actionsからの接続とチームの運用要件を照合します。

FAQ:導入前に確認する判断ポイント

GitHub Actions macOS Runnerの費用は実行分数だけで決まりますか?

決まりません。GitHub-hosted runnerでは公式の実行時間課金が中心になりますが、チーム側ではキューによる確認遅延、再実行、キャッシュの設計も負担になります。自前Macでは、購入またはレンタル、保守担当者の時間、空き時間、証明書更新、障害復旧までを月単位で合算する必要があります。

iOS CIでself-hosted runnerを使う判断基準は何ですか?

固定したXcodeとmacOS、社内ネットワーク、プライベートな依存関係、長時間のビルドが継続して必要かを確認します。これらが複数当てはまり、更新と復旧を担当できる体制があるならself-hosted runnerが候補です。標準環境で足りず、保守担当がいない場合は、レンタルやホステッドのほうが安全です。

自前Mac Runnerの維持で見落としやすい作業は何ですか?

Runner本体の登録だけでなく、macOSとXcodeの更新、キャッシュと作業ディレクトリの清掃、証明書のローテーション、ディスク容量の確認、ログ監視、失敗時の再起動、公開リポジトリからの実行制限が必要です。これらを担当者の無償作業として扱うと、購入費だけで比較した自前構築が過度に安く見えます。

Mac Runnerはレンタルしてから購入を決めてもよいですか?

利用率が不明な段階では、レンタルして実際のワークフローを流す方法が有効です。月間の実行時間、ピーク時の待ち時間、Xcodeビルドの完了時間、失敗率、保守にかかった時間を記録します。その結果、負荷が安定し、長期利用と予備機の計画まで立てられるなら購入を比較します。

macOSジョブのキューを短くするには何から始めますか?

まず待ち時間と実行時間をワークフローのログから分離します。依存取得やビルド中間生成物をキャッシュし、不要な直列処理を分割したうえで、ピーク時だけRunnerを追加できるか検討します。自前Macを導入する場合も、権限を限定したRunner groupと専用ラベルを設定し、単に台数を増やすだけの運用は避けます。

導入前の確認チェックリスト

  • [ ] 直近のActions履歴から、実行時間とキュー時間を分けて集計した
  • [ ] 依存取得、コンパイル、テスト、アーカイブの各工程を記録した
  • [ ] GitHub公式の料金表と利用中の契約条件を確認した
  • [ ] 必要なXcode、macOS、CPUアーキテクチャを一覧化した
  • [ ] 証明書、署名鍵、社内ネットワークの要件を洗い出した
  • [ ] self-hosted runnerを使う場合の担当者、更新日、復旧手順を決めた
  • [ ] 公開リポジトリと社内リポジトリのRunnerを分離した
  • [ ] 購入、GitHub-hosted runner、レンタルMacを同じ指標で比較した
  • [ ] 利用率が不明なら、先に一定期間の実負荷を計測する計画を立てた

GitHub-hosted runnerは、低頻度で変動の大きいジョブに対して、固定設備や保守担当を抱えずに済む点が強みです。一方、自前MacはXcodeや内部依存を細かく固定できる反面、空き時間、更新、秘密情報、故障時の代替経路をチームが負担します。

現状の方式が長いキュー、標準イメージとの差分、環境更新の手作業、予想外の再実行費用のいずれかを抱えているなら、単価だけを下げても問題は残ります。利用率が決まっていないチームは、nuvcloudのMac Runnerをレンタルして実際のiOS CI負荷を測定し、購入または長期運用へ進む根拠を作るほうが、空き時間の多い設備を先に抱えるより判断しやすいです。

nuvcloudのMacレンタルで、実負荷に合った環境を選びませんか

ビルド時間や同時利用数を確かめながら、チームに適したMac環境を検討できます。

必要な期間だけ遠隔のMacを利用できるため、購入前の検証や一時的な処理量の増加にも対応しやすくなります。

関連記事

期間限定オファー →