PRの待ち時間が不安定で、正式署名だけは社内ネットワークと固定Xcodeに依存している場合、単一のMacキューへ集約する設計は避けるべきです。
最短の判断は、標準イメージ・短時間の検証・変動負荷をホステッド Agentへ、固定環境・私設ネットワーク・正式署名・長時間処理をセルフホステッド Macへ分けることです。多くの企業では、2つのキューを分離する混合構成が現実的です。
この判断を必要とする読者
すでにBuildkiteを採用し、iOSまたはmacOSプロジェクトの構築容量を増やしたいプラットフォーム担当者向けです。
ホステッド計算資源と自社管理MacのTCOを比較するIT・購買責任者、署名資産や社内接続を分離したいセキュリティ・リリース責任者にも適しています。
00第一段階:タスクを制御強度で分ける
Buildkiteでは、SaaSのコントロールプレーンがジョブを管理し、Agentが実際の処理を実行します。つまり、Buildkiteの管理機能を利用することと、ビルドを実行するMacを誰が管理するかは別の論点です。基本構造はBuildkite Agentの公式説明で確認できます。
まず、パイプラインを次のように分類します。
- PR検証:非公開情報を含まないコードのコンパイル、静的解析、軽量テスト
- シミュレーター試験:複数のApple SiliconやXcode条件で実行する変動負荷
- 正式アーカイブ:配布用アーカイブ、production署名、社内承認と連動する処理
- 私設ネットワーク依存タスク:社内API、内部パッケージレジストリ、VPNやプロキシを必要とする処理
PR検証とシミュレーター試験は、環境を毎回完全に固定するより、標準化された実行環境を必要なときに確保できることが重要です。一方、正式署名と内部接続は、処理速度よりも秘密情報、出力先、監査証跡を制御できることが優先されます。
注意:ホステッド Agentとセルフホステッド Agentを同じキューに入れると、ジョブラベルの誤指定やフォールバックによって、署名処理が意図しない実行環境へ送られる可能性があります。キューを分け、パイプライン側で許可された行き先を明示してください。
Buildkiteのキュー管理では、Agentのキュー割り当てとジョブの対象条件を分離して設計します。公式のキュー管理ドキュメントを基準に、標準検証用と本番基盤用を別々に作成するのが安全です。
01第二段階:バージョン固定と環境制御を測る
ホステッド環境の利点は、利用可能なmacOSやXcodeの組み合わせを選びやすく、ピーク時に自社で物理容量を抱え込まずに済むことです。ただし、「システムバージョンを選択できる」ことと、「依存する全ツールを長期間凍結できる」ことは同じではありません。
確認すべき指標は、次の4点です。
- 必要なXcodeが対象イメージで提供されているか
- イメージ更新時に既存ジョブの再現性を検証できるか
- Agent hooks、キャッシュ、追加CLIツールをどこまで指定できるか
- Apple SDKやXcodeのシステム要件がプロジェクトと一致しているか
Xcodeの対応OSや変更点は、利用時点でAppleのXcode 26リリースノートを確認します。Xcodeの名前だけを固定しても、macOS、SDK、署名ツール、依存パッケージまで固定されるわけではありません。
セルフホステッド Macは、特定のXcode、RubyやNode.jsなどの補助ツール、社内証明書、キャッシュ構成を企業側で保全できます。その反面、更新前の回帰検証、ディスク容量の監視、ログ保管、OS更新の延期判断が必要です。固定環境は自由度ではなく、維持責任と一体で評価します。
02第三段階:署名資産と接続境界を分離する
非信頼ブランチを本番署名用Macへ送らないことが、構成判断の出発点です。一般検証と正式署名で、キュー、Agent token、秘密情報、ネットワーク経路を共用しない設計にします。
| 判断対象 | ホステッド Agent | セルフホステッド Mac |
|---|---|---|
| 非信頼コードのPR検証 | 標準化しやすい | 隔離設計が必要 |
| production署名 | 短期資格情報と清掃条件を要確認 | 専用Macと資格情報保管を設計可能 |
| 社内API・内部レジストリ | 出口、許可リスト、接続方式を要確認 | プロキシや私設経路を企業ポリシーに合わせやすい |
| 追加ツールチェーン | イメージとhooksの対応範囲を確認 | 任意構成にしやすいが更新責任が残る |
| ジョブ終了後の環境 | 毎回の清掃仕様を確認 | 強制クリーンチェックアウトと消去処理を実装 |
| Agent token | 管理方式と漏えい時の失効を確認 | トークンの保管、ローテーション、権限分離を担当 |
セルフホステッド Agent tokenは、リポジトリやログへ直接書き込まず、実行ユーザーの権限も最小化します。Buildkiteのtoken管理資料に沿って、発行、保管、失効、交換の手順を記録してください。
また、ジョブの投入経路を制限する場合は、AgentのJob Dispatch設定も確認します。Job Dispatchの公式資料を参照し、プラグイン、環境変数、外部スクリプトの許可範囲を明文化します。
03第四段階:待ち時間ではなく容量と復旧を測る
単発ジョブの実行時間が短いだけでは、CI全体のスループットは判断できません。キューの待ち時間、同時実行数、キャッシュヒット率、失敗時の再実行、リリース集中時の代替容量を分けて記録します。
自社管理Macを基準プールにする場合は、次の証跡が必要です。
- 電源断後に無人で起動し、Agentが再接続すること
- Agent停止、ネットワーク断、ディスク逼迫を検知できること
- 管理者が安全に再起動できること
- 1台の障害時に別のMacへジョブを退避できること
- キャッシュ破損時にもクリーンなビルドへ戻せること
ホステッド容量は、PRの集中や一時的なシミュレーター試験に向きます。自社管理の基準プールは、毎回同じ署名条件で実行する処理や、長時間ジョブの安定した予約容量に向きます。どちらが常に速いと決めつけず、実際のジョブ分布で境界を引く必要があります。
04第五段階:TCOを担当者の時間まで含めて計算する
ホステッド側は、Buildkiteの契約・利用条件に記載された実行単価、ユーザー費、同時実行や追加容量に関する費用を確認します。料金体系は変更される可能性があるため、比較時にはBuildkite公式料金ページを参照し、契約書または請求記録で確定してください。
自社管理側の計算は、Mac本体の取得費だけでは不十分です。次の式で同じ評価期間をそろえます。
セルフホステッドTCO = Macの取得またはレンタル費 + 設置・接続費 + 監視・保守工数 + Xcode更新検証工数 + 空き容量費用 + 障害・代替容量の損失
ホステッドTCO = Agent利用費 + 実行時間・同時実行関連費 + キャッシュや転送費 + 秘密情報・ネットワーク接続の追加運用費
NUKCLOUDのMacリモートレンタルの利用案内を候補に含める場合も、実際の契約期間、構成、地域、復旧条件を見積書で確認し、公開料金と混同しないようにします。特定の料金や性能を前提にせず、社内の実行記録と請求データを入力することが重要です。
| 負荷パターン | 主な費用リスク | 第一候補 | 回退条件 |
|---|---|---|---|
| 固定負荷が多く、署名処理が定常的 | 空き容量を含む基盤費と保守工数 | 専用セルフホステッド Mac | 更新検証や復旧担当を確保できない場合はホステッド比率を上げる |
| PRと試験が週ごとに変動 | 利用しない物理容量、ピーク時の待ち時間 | ホステッド Agent | 内部接続や固定Xcodeが必須なら専用キューへ分離 |
| リリース時だけジョブが集中 | 一時的な容量不足、キュー待ち、再実行費 | 混合構成 | ホステッド側の制限がSLOを超えるなら基準Macを増やす |
| 長時間処理や大容量キャッシュが中心 | 実行時間、転送、キャッシュ維持費 | セルフホステッド Mac | 障害時の代替容量を用意できないなら待機用ホステッド容量を残す |
企業の判断では、月単位の平均費用だけでなく、リリース失敗1回あたりの再実行工数と遅延損失を加えます。自社購入、Macのレンタル、ホステッド利用を同じ負荷データで比較し、費用差が小さい場合は、署名境界と復旧性を優先する方が合理的です。
05最終段階:双キューの試験で選択を確定する
最初から全ジョブを移行せず、標準ホステッド検証キューと、隔離したセルフホステッド本番キューを用意します。同一の実プロジェクトで、コンパイル、シミュレーター試験、アーカイブ、署名、内部依存のジョブを両方に流し、ログと請求を比較します。
受入条件は次のように設定できます。
- [ ] PR検証が指定外の署名資産へアクセスしない
- [ ] XcodeとSDKの組み合わせが成果物の再現条件を満たす
- [ ] 内部依存タスクの出口通信と監査ログを確認できる
- [ ] ピーク時のキュー待ち時間を実測できる
- [ ] Agent失電・通信断・再起動後の復帰を確認できる
- [ ] キャッシュ無効時にも許容時間内で完了する
- [ ] 3か月など社内で定めた評価期間の費用を比較できる
- [ ] 署名処理を汎用検証キューへ誤送信できない
この条件を満たし、標準イメージで再現性が保てるならホステッド継続が候補です。固定Xcode、私設ネットワーク、長時間ジョブ、専用署名、主権的なMac管理が必要で、復旧試験も通過するならセルフホステッドへ寄せます。双方が条件を満たす場合は、変動負荷をホステッド、受入済みの本番基線をセルフホステッドへ配分します。
Buildkite macOS Agentの選定を決める条件
Buildkite macOS Agentの選定では、次の優先順位が有効です。
- 署名資産と非信頼コードを同じ境界に置かない
- 内部接続の有無でキューを分ける
- Xcodeの更新頻度と固定要件を確認する
- ピーク容量と復旧容量を別々に評価する
- 実際の請求額、待ち時間、担当者工数をTCOへ入れる
現在のMac基盤が単一の物理機に集中している場合、故障時の代替容量、OS更新の停止期間、担当者による手動復旧が見えにくいという欠点があります。反対に、ホステッドだけへ寄せると、固定ツールチェーン、内部経路、署名境界、長時間処理の制御条件を満たせないことがあります。
そのため、固定されたproduction処理を安全に保持しながらピーク時だけ容量を増やしたい企業では、NUKCLOUDのリモートMacをセルフホステッド基盤の候補として仕様確認する価値があります。特に一時的な検証環境や追加のApple Silicon容量が必要なら、NUKCLOUDの企業向け案内で、納品条件、リモート接続、再起動・復旧範囲を確認し、実ジョブによる受入試験を通過した場合だけ本番キューへ加える運用が適切です。長期の固定高負荷や物理インターフェースが必須の場合は、自社設備を含めた比較を継続してください。
06FAQ:企業のBuildkite運用で先に確認すること
本文の判断を実装へ移す前に、PR検証、署名、内部接続を同じキューへ置かないことを確認します。さらに、環境更新、障害復旧、請求確認を担当部署の責任範囲へ割り当てると、選定後の想定外コストを抑えられます。
Buildkite macOS Hosted Agentとセルフホステッド Agentの違いを確認し、提供される環境条件と自社で管理できる範囲を比較してください。最終判断は、Xcodeの再現性、署名資産、内部接続、ピーク容量、復旧記録、評価期間のTCOをそろえたうえで行います。