プラットフォームエンジニアと iOS リリース責任者が 2026 年にビルドプールをシンガポール、日本、韓国、香港、米国東部、米国西部へ広げると、Git とレジストリは整えているのに同一の commit がホスト A では通り、ホスト B ではコード署名やコンパイラマクロで分岐する、という事象をよく見ます。原因はしばしばXcode のパッチレベル、Command Line Tools、グローバルな Ruby/CocoaPods スタック、DerivedData のマウント点、ログインキーチェーンの見え方が契約上フリーズされていないことです。本稿では RCA に耐えるドリフト六分類、スナップショット対再インストール対専用 CI ユーザーという二枚の表、コピー可能なヘルス断片、六ステップの手順書、ダッシュボード向けの硬い指標三つを示します。Fastlane と証明書のガイド、Git と成果物近接のマトリクス、セルフホストランナーのチェックリストと補完的に読めます。
プールされたリモート Mac はノート PC と異なり、ホストが入れ替わり、スナップショットが巻き戻り、複数ユーザーがログインします。「再現可能」を測れるベースラインがなければ、切り分けだけで人時が溶けます。次の六つの痛み分類を変更票に載せ、ランナーのタグやレンタルのピークと同じページでレビューしてください。
Xcode.app が共存しているのに CI ユーザーが xcode-select を固定しておらず、Swift ツールチェーン、リンカー、SDK ヘッダが夜間ジョブのたびに静かに変わります。pod install がロックファイルに沿っていてもコンパイル時マクロが分岐します。ssh セッションではキーチェーン、プロキシ、トラストストアが異なります。CI ユーザーと対話デバッグ用アカウントを混ぜると「手動ではレーンが通るが無人では失敗する」が起きます。これらを Fastlane の記事にある署名棚卸しの上に積みます。本稿の次元はツールチェーンとファイルシステムの見え方、あちらは署名とアップロードチェーンです。どちらかが欠けるとレビュー窓口で爆発します。
ディスクレベルのスナップショットは日次の統治に置き換わりません。既知良好のゴールデンイメージへのロールバックには強く、場当たりの変更の埋め合わせには向きません。表は調達の言葉として使ってください。
| 戦略 | シグナル | 利点 | リスク/契約メモ |
|---|---|---|---|
| ゴールデンイメージへのスナップショット巻き戻し | パッチ波のあと均一な障害、分単位の復旧が必要 | Xcode+CLT+ベースライン gem など固定の組み合わせを復元 | 古いスナップショットはセキュリティ修正を取りこぼす。賞味期限とローリングアップグレード枠を定義する |
| インプレースの増分修復 | 単一ホストのドリフト(誤った xcode-select、削除されたキャッシュ) | 低コストで原因追跡に向く | 共有ログインが修正を再汚染する。専用アカウントとセットにする |
| 専用 CI ユーザー、GUI 共有なし | 長寿命プール、高並列、監査要件 | ホームとキーチェーンが分離され、再現性が強い | ブートストラップコストが高い。SSH/VNC のアクセス方針と揃える |
| バーストホスト向け標準の「最初のコマンド」 | 毎日または毎週プールに入るマシン | アクセス直後の数分に検証を寄せる | チェックを飛ばすとキュー全体にドリフトが広がる |
マルチプロジェクトの容量チェックリストと同様、ディスク待ちと週次の伸びが CPU 利用率から外れているなら、まず派生データ方針を直し、そのうえで M4 Pro や第二のバーストホストを議論します。
| シグナル(二週間) | 想定原因 | 最初の手 | レンタル/ハードとの結びつき |
|---|---|---|---|
| アーカイブルートと DerivedData の伸びが計画を超え待ちが高い | ホットデータが誤った階層(ネットワーク共有) | ローカル SSD パスへ移し、保持期間とクリーンジョブを敷く | 1TB から 2TB、またはアーカイブ専用ノード |
| 初回ビルドは遅いが後は速い、ジョブ横断では不安定 | キャッシュ権限または同時ライター | ジョブごとの DerivedData 接頭辞、またはユーザー分離 | バーストホストはより厳しい分離が必要 |
| SPM の解決が断続的に失敗 | エグレス/レジストリのリージョン不一致 | 成果物近接とミラーに揃える | コアよりネットワーク |
| クリーンアップ直後にすぐ容量が戻る | モノレポや広いシミュレータ行列 | 並列度を絞るかプールを分割 | メモリ帯域を追う前にジョブ幅を削る |
# Health: active developer dir and Xcode build (run as CI user) xcode-select -p xcodebuild -version # Signing identities visible to CI (pairs with Fastlane article) security find-identity -v -p codesigning # DerivedData location (custom prefix must match team docs) defaults read com.apple.dt.Xcode IDECustomDerivedDataLocation 2>/dev/null || echo "(default ~/Library/Developer/Xcode/DerivedData)"
メモ:xcodebuild -version、CLT のレベル、xcode-select -path をランナーのタグや契約 ID と同じ行に載せてください。「最新の Xcode を使う」というウィキ一行よりはるかに執行しやすくなります。
SSH/VNC はアクセス判断ガイドに従います。ランナーを並行登録するなら、タグと並行度をランナーのチェックリストでコード化してください。
これらは「フレーク」を実行可能なバケツに分け、マルチリージョンとレンタル期間のガイドのストレージ欄とも整合します。
xcodebuild -version と xcode-select -p をハッシュ化し、しきい値を超えたらキューを凍結します。あわせて「CI ユーザーが対話 GUI ログインと同時に動いている」ブールも追ってください。真のままならキーチェーン系インシデントを想定し、安易な再起動ではなくセキュリティ方針と一緒にレビューします。
SPM 解決時間を git の fetch 時間の横にプロットし、傾向が分岐したら成果物近接を再開くか、この環境ベースライン記事の内側に留まるかを判断します。
個人用 Mac は監査に向きません。スリープ方針、突如のアップグレード、見えないグローバル gem スタックが常にドリフトします。リージョンをまたいでゲートされたリリースをプールすると、「一度ビルドできた」と「毎回同じようにビルドできる」は別 SLA です。契約レベルの Apple Silicon ビルドには専用ベアメタル、マルチリージョンの選択、環境フィンガープリストを請求書と同じ表に載せられるレンタル条件の組み立てが必要です。
バラバラのデスクトップと一時貸与だけでは無人自動化にも弱く、DerivedData 方針と専用 CI アカウントがなければバーストマシンが欠陥を本流に増幅します。安定した、監査可能で、バーストに強いビルド面が欲しいチームには、プロ用 Mac クラウドの方が場当たりハードウェアに勝ちやすいです。MACCOMEはシンガポール、日本、韓国、香港、米国東部、米国西部でMac mini M4/M4 Proのベアメタルノードを柔軟な条件で提供しています。ベースライン層とバースト層をレジストリと署名チェーンに揃え、レンタル料金とリージョン別ページで確定してください。
パイロットの型:リポジトリとレジストリと同じリージョン族で短期レンタルし、ヘルス断片と二週間ベースラインを回してから月次または四半期にコミットします。「安いリージョン」へのすり替えでフィンガープリントの再現性を失わないようにします。
FAQ
Fastlane の記事との違いは何ですか?
Fastlane は証明書、プロファイル、アップロードのピークを揃えます。本稿はツールチェーン、派生ディレクトリ、キーチェーンの見え方を揃えます。商談条件は レンタル料金 と マルチリージョン選択 を同じマイルストーンで開いてください。
クリーンなホストでも失敗する場合、最初に何を確認しますか?
まず 成果物近接マトリクス でレジストリとエグレスを確認します。依存関係が再現可能なら、xcode-select、DerivedData、専用 CI ユーザーに戻ります。
ランナーのチェックリストとどう組み合わせますか?
ランナーはジョブをタグとシークレットの分離に写します。本稿は各タグの背後のフィンガープリントを定義し、同一ラベル配下で異なる Xcode パッチレベルを混ぜないようにします。アクセスの文言は ヘルプセンター をご覧ください。