スパイクで繰り返す痛みは、太平洋横断のサンドボックス遅延、16GB での二重シミュレータ、課金五日目以降の日額のまま放置の三つです。
01ノード RTT:港新対米西海岸(StoreKit 2 サンドボックス)
計測はリース Mac 上で行います。ノート PC のホテル Wi‑Fi ではなく、SSH 先から sandbox.itunes.apple.com、Webhook リージョン、git remote への往復を採取してください。
| チーム像 | 港新 vuzcloud | 米西海岸 | RTT/コスト |
|---|---|---|---|
| 東アジアレビュー | p50 <80ms | 140〜200ms | StoreKit UI は港新 |
| Webhook us-east-1 | 米東へ追加ホップ | RTT 低 | Mac 米西・台帳東 |
| Server API のみ | HTTPS はグローバル | Mac への RTT を最適化 | |
| レンタル反転 | 約5課金日で週額有利 | 日週行列 | |
p50 と p95 を記録し、p50 が安定して p95 だけ倍増する場合はノード切替を検討します。
02M4 16GB 対 24GB(Xcode サンドボックス)
一スキーム・一シミュレータ・ヘッドレス Server API なら 16GB が既定です。二重 Sim と Fastlane 同時は 24GB を推奨します。
| 負荷 | 16GB | 24GB |
|---|---|---|
| 単一サブスク + API ポール | 十分 | 重いキャッシュ時のみ |
| 二重 Sim + Fastlane | RSS 12GB 超でスワップ | 推奨 |
| 消耗型 IAP UI | VNC 閉じれば可 | GUI 併用は安全 |
03並列分割:Xcode と Server API レーン
- レーン A(Mac):StoreKit 構成、サンドボックス Apple ID、
Transaction.updatesログ - レーン B(SSH):サンドボックス JWT で App Store Server API を curl/Swift で呼び出し
- レーン C(任意):Linux CI が JWS のみ取得。秘密は Mac に置く
- 避ける:16GB で VNC 二重+二重 Sim。B は SSH に限定
04App Store Server API/JWS:六段手順
JWS 失敗時は止め、本番キーをサンドボックス取引に重ねないでください。
- 一:In-App Purchase 権限の API キー。 .p8 は金庫へ、リース先に長期置かない。
- 二:ES256 JWT(issuer/key/bundle ID)。サンドボックス URL を使用。
- 三:Xcode で StoreKit 2 購入し
transactionIdを控える。 - 四:
GET /inApps/v1/transactions/{id}で signedTransactionInfo を保存。 - 五:Apple ルートでチェーン検証。失効は entitlements に書かない。
- 六:Server Notifications V2 で Webhook 更新を確認。
05予算を焼く三信号
- 環境不一致:本番キーでサンドボックスを叩くと 401 が不透明に見える。
- 時刻ずれ:新規リース直後の JWT
nbf失敗。NTP を先に有効化。 - ノード誤選:東アジアレビューに米西 Mac だと再試行嵐が StoreKit 不具合に見える。
06FAQ:StoreKit 2 と Server API
APAC レビューに米西 Mac は必須か。Server API はグローバル HTTPS です。Xcode サンドボックスと Webhook の RTT が最小のノードを選びます。
16GB で足りるか。一 Sim と軽量 JWS 検証なら可。二重 Sim・Fastlane・GUI 同時は 24GB へ。
Mac だけ JWS 失敗。時刻ずれ、中間証明書不足、本番キー誤用が典型です。Mac で検証した証明書セットを CI にピン留めしてください。