シンガポール・日本・韓国・香港・米国東海岸・米国西海岸の専用リモート Macで Flutter または React Native の iOS/Android を同居させると、片方単体では安定しているのに両方で不安定になる場合、原因は多くの場合 統合メモリ、SSD の書き込み増幅、Gradle Daemon 方針が リース台帳と一緒に設計されていないことにあります。課題の整理、並列上限表、六段のオーケストレーション、指標、リース判断を示し、Runner・ハイブリッド CI・Simulator 容量・DerivedData・近接・egress の各公開記事へリンクします。
xcodebuild の Signal 9 や Gradle の変換中落ちとして現れます。DerivedData や SwiftPM キャッシュと SSD 予算を奪い合います。.gradle、.pub-cache、node_modules を分離しないと監査と再現性の両方が崩れます。本稿は Simulator 並列とディスク、Runner 並列と秘密情報、Xcode Cloud ハイブリッド CI と併読し、Android ツールチェーンと Apple ツールチェーンの衝突に焦点を当てます。
三つの予算(ページ圧と swap、SSD 空きとディレクトリ増加、越境取得と egress 台帳)のいずれかが短いリース内で赤線に触れたら、GHz を買う前に 直列化・並列度削減・Daemon 停止 を先に適用してください。
| シナリオ | M4(16GB 例)の目安 | M4 Pro | 赤信号 |
|---|---|---|---|
| CLI のみ | Gradle workers 2、Xcode は単一 scheme 直列 | workers 3–4、Simulator 1 + 実機 1 まで | swap が連続増加、空き <10GB |
| Flutter integration + iOS Simulator | Android ユニット後に iOS UI、Daemon 全開禁止 | インターリーブは flutter drive 上限付きのみ | Metal + Java で SSH が固まる |
| RN Android release + iOS archive | タイムボックス分割、archive 前に ./gradlew --stop | GRADLE_USER_HOME と DerivedData を分離 | codesign と zipalign が同時 I/O 失敗 |
原理:同居は「コアが足りれば並列でよい」ではなく、統合メモリと SSD 書き込みが先に限界になります。
GRADLE_USER_HOME と PUB_CACHE をデータ領域に分離し、DerivedData 再現性 と整合させます。android/.cxx 削除 → DerivedData ローテ → 最後に Git、の順をスクリプト化します。./gradlew --stop || true export GRADLE_USER_HOME="$WORK_ROOT/.gradle-isolation" export ANDROID_SDK_ROOT="$WORK_ROOT/android-sdk" defaults write com.apple.dt.Xcode IDECustomDerivedDataLocation -string "$WORK_ROOT/DerivedData" export FLUTTER_ANALYZER_CONCURRENCY=2 export ORG_GRADLE_PROJECT_org.gradle.workers.max=2
Linux 分離は RAM 曲線を切り離しますが鍵とキューが二重化します。ローカル二刀流は監査不能なドリフトを招きます。
シンガポール・日本・韓国・香港・米国東西で Git/Registry をリージョンに揃え、DerivedData と .gradle の水位をスクリプト化したい場合、MACCOME の Mac クラウドは M4 / M4 Pro の専用ノードと日/週/月/季のリースで、メモリとディスクのピークを先に抑え込み、並列度はその後から追い込みやすい構成です。
ツールチェーン行列、同居/分離マトリクス、クリーニングとリース科目の対応表です。Monorepo FinOps とは Git オブジェクト予算とツールチェーンキャッシュ予算の境界を明記してください。
Android が Mac に来ない構成なら Runner 記事へ戻ってください。egress ランブック があるチームは NDK や Engine キャッシュを同じ台帳に載せ、iOS 側の「署名が遅い」二次症状を防ぎます。
よくある質問
同居時、Gradle Daemon は必ず止めますか?
常に無効化は不要ですが、パイプラインと対話セッションの末尾で ./gradlew --stop かアイドル回収を必須化し、短期リースでは特に厳しくしてください。料金は レンタル料金 を参照ください。
いつ別マシンに分けるべきですか?
二週間のふりかえりでも直列化後に赤線が続く場合、または Android 署名と iOS 証明書の分離がコンプライアンスで必須のときです。接続とチケットは ヘルプセンター を参照ください。