1. Compilation CacheとDerivedData:命中モデルが一段違う
DerivedDataは失効が粗くバケット冷えしやすい。Compilation Cacheは差分再ビルド向きだが運用が重い。多くは-derivedDataPath隔離+リモートに大物中間だけ。
目安:グローバル命中は厳格キー。静かな切り分けはJob単位DerivedDataを残す。
2. 並列JobとリモートgRPC:帯域よりQPSと一貫性
gRPCは取得QPSが天井になりがち。TLS・接続プール・Xcode+SDKシャード。冷え/温まりP95とローカルフォールバック。同一AZ、NAT/HDD裏を避ける。
3. NVMe増設:ワーカー優先、cacheノード次
ワーカーはIOPS、cacheノードは書き込み持続。cacheをNFS/HDDに置くと尾悪化。空き・await監視、LRUとメジャーflushを分離。
- キーにXcodeメジャー・SDK・リポ同一性。誤命中防止。
- LRUとメジャーflushを手順分離。
- ミス率と壁時計の両方を見る。
4. プラットフォーム責任者向け選定FAQ
- gRPCの価値:重モジュール共有でRunnerディスクが枯れるとき。小規模はNVMe+DerivedData分桶で足りることも。
- 命中率半減:Xcode/SDKドリフト→タイムスタンプ等の非再現フラグ。
- SwiftPMと混同:別バケット。キー汚染を防ぐ。
- 閉域:社内メッシュ+レジストリ同等の監査。
このスタックを支えるビルドホストとしてのApple Silicon Mac mini
macOSでCIと手元の挙動が揃う。Mac miniはNVMe・統合メモリ・低待機電力、Gatekeeper/SIP/FileVaultで無人説明がしやすい。CPUよりディスクとネットのヘッドルームを先に合わせるとgRPCが安定。
Mac mini M4は基準機として読みやすい。 Macstripeホーム でモデルとcache距離を確認し、今すぐ購入で検証ノードを固定すると再現性が上がる。