Expo Application Services(EAS)のクラウドビルドは、リリース前の短周期で複数ブランチを同時に走らせるとキュー待ちが支配的になります。ホスト側の同時実行枠や優先度に依存するため、PRごとの検証ビルドが「数十分待ち」になると開発フローが途切れます。対策の一角としてeas build --localを自前の macOS 上で実行し、成果物だけを EAS にアップロードする構成が増えています。按日レンタルのクラウド Mac Runner に載せると、オフィス端末を占有せずに同じ経路を再現できます。
`eas build --local` を按日クラウド Mac に載せる
Runner は「ログイン済みの macOS セッション」で Expo CLI と Xcode が揃っていることが前提です。SSH セッションだけでなく、必要なら短時間 VNC でグラフィカルな同意画面を処理する運用もあります。按日ノードは日次で環境が初期化されやすいため、依存の固定(package-lock.json / yarn.lock、Podfile.lock)と、Xcode セレクタの明示をスクリプト先頭に置くと再現性が上がります。Shell Executor で Runner を束ねる場合のタグ設計は、2026年短周期バーストビルド:GitLab CI セルフホスト macOS Runner をクラウド Mac に接ぐ Shell Executor、キャッシュキーとタグ戦略──GitHub Actions 併用時の意思決定マトリクスと実行パラメータ FAQ と同型の考え方がそのまま流用できます。
# EAS がクラウドと通信するためのトークン export EXPO_TOKEN="***" # Apple 側資格情報(credentials.json / App Store Connect API 鍵などの置き場所はポリシーで統一) export EXPO_APPLE_APPLICATION_SPECIFIC_PASSWORD="***" # 必要なワークフローのみ
凭証・トークン注入の実務 FAQ
EXPO_TOKEN はリポジトリに書かず、Runner のシークレットストアや macOS キーチェーン連携のラッパに限定します。配布用証明書とプロビジョニングプロファイルは EAS Credentials 同期か、社内の暗号化ストアからビルド直前に展開するかを一本化し、失敗時のログにパスを残さないようマスクします。按日マシンでは「昨日入れた鍵が今日消えた」が起きるため、注入はパイプラインの冪等ステップに置くのが安全です。
HTTPS_PROXY と証明書検証の例外を事前に決め、ビルドログに秘密が出ないようリダクション方針を決めておきます。
キャッシュキーを何に束ねるか
誤った共有キャッシュは「昨日まで通っていたのに今日だけ署名エラー」より厄介です。推奨は ロックファイルのハッシュ、Xcode / SDK バージョン、Runner の論理ID(按日なら日付タグ) の積です。DerivedData や CocoaPods の tarball をオブジェクトストレージに退避する場合も、キーに Expo SDK 版と eas.json のプロファイル名を含めると衝突が減ります。
| キャッシュ対象 | キーに含めるべき信号 | 按日 Runner での注意 |
|---|---|---|
| npm / Yarn キャッシュ | ロックファイル digest、Node 版 | 日付が変わると空になる前提でウォームアップジョブを別立て |
| CocoaPods | Podfile.lock、Ruby 版 |
spec リポジトリの更新日をメタに含めると無効化が早い |
| DerivedData | Xcode ビルド番号、Scheme | 大きいので「PR 単位は禁止・main のみ」などポリシーでサイズ制御 |
EAS 分パックと按週クラウド Mac の比較マトリクス
分課金やビルド分数のパッケージは、スパイクが読めないチームに向きます。一方、週単位でクラウド Mac を確保すると、キュー外の --local を何度でも走らせられるため、短周期の「待ち時間コスト」が下がりやすいです。Apple 公式の分上限と併用する切替判断は、2026年、Xcode Cloud の分パックと同時実行が上限に達したあと:日単位クラウド Mac が Archive・公証・TestFlight を引き受ける切替シグナル、経路設計とロールバック意思決定マトリクス FAQ のフレームと対照しやすいです。
| 観点 | EAS 分パック中心 | 按週クラウド Mac + --local |
|---|---|---|
| キュー | ホスト側スロットに依存 | 自前Runnerの並列度で頭打ちまで制御可能 |
| 予測可能性 | 月内の分数でブレる | 固定週コスト、スパイク時の余白設計がしやすい |
| 運用負荷 | 低(マネージド) | イメージ・凭証・キャッシュの自管が必要 |
--local の成功率が安定しているときが目安です。逆にリリースが月 1 回未満なら分パックのままが単純です。
クラウド Mac mini なら、`eas build --local` の再現性が上がる
Expo のローカル iOS ビルドは結局 Xcode とネイティブツールチェーンの上に乗ります。Apple Silicon の Mac mini M4 は統合メモリ帯域が広く、Swift とリンカの並列に余裕があり、短周期で何度も走らせても体感が崩れにくいです。macOS は長時間の無人実行でもクラッシュ率が低く、待機電力は目安で約4Wと省エネなので、按日・按週のどちらの課金モデルでも「常時熱いラボマシン」より運用しやすいです。
セキュリティ面では Gatekeeper・SIP・FileVault の組み合わせが証明書やトークンを載せるホストとして安心材料になり、同価格帯の汎用 PC と比べて総合的な総保有コストも小さく抑えやすいです。Homebrew や SSH も前提どおり動き、クラウド上に Runner を置くほどローカル端末の占有が減ります。
短周期の iOS ビルドをクラウドに逃がしたいなら、VPSSpark のクラウド Mac mini M4 はコストと再現性のバランスが良い出発点です——プランを今すぐ確認し、EAS キューの外側に自分たちの帯域を用意しましょう。