痛みの分解 · 意思決定表 · VNC 8 ステップ · 参照事実 · ノード変更
時間課金のクラウド Mac を VNCで運用していると、三類の連続性の断絶に遭遇します。ネットワーク切断、スリープや Power Nap からの復帰、プロバイダ側の保守やノード移行です。症状はよく似ています。Xcode は開くのに Archive が止まる、署名だけ失敗する、Simulator が真っ黒のまま、あるいは xcodebuild が突然 SDK を見失う。高価なミスは再接続ボタンを見逃すことではなく、ネットワーク・キーチェーン・ツールチェーンのどれを先に直すべきか分からないまま手当たり次第に試すことです。本稿は 2026 年の運用視点で、痛みの分解、意思決定表、VNC 優先の 8 チェックに加え、チケットに貼れる四つの参照パラメータと FAQ をまとめます。およそ 10 分で、輸送層・ツールチェーン・証明書のどこに原因があるか、そしていつローカル調整をやめてノード切替を検討すべきかが見えるようにします。
このパターンが重要なのは、メーター課金がレイヤー違いのデバッグを容赦しないからです。時刻同期、外向き HTTPS、キーチェーン解除、Accounts の更新、そのうえでバージョン指紋を Runbook 化すると、「昨日は動いた」が監査可能な証拠に変わります。また SSH だけでの復旧には限界がある理由も整理します。リモートで sw_vers は叩けても、Safari でのセッション更新や macOS のプライバシー確認はデスクトップ上の操作が要ります。初回チェックリスト(30 分)と更新・エクスポート・ノード移行前の 15 分チェックリストと併用してください。
TCP が戻っても GUI セッションは健康とは限らない:VNC 再接続直後は macOS が半覚醒のままのことがあり、DNS、メニューバー時刻、遅延したトークン更新が混ざります。一方で Xcode の Accounts 画面だけは「ログイン済み」に見えることがあります。
スリープがキーチェーン状態をロックしうる:電源ポリシーによってログインキーチェーンがロックされたままになり、署名は Organizer が開くまで静かに失敗します。
ノード切替はアイデンティティ文脈を変える:同じ Apple ID でもホスト UUID、キーチェーン項目、プロビジョニングキャッシュは揃いません。コードより先に移行チェックリストと突き合わせます。
DerivedData と Simulator の孤児:急な切断はビルドデーモンや Simulator 子プロセスを不整合にします。OS の再インストールより、順序立てた掃除が先です。
SSH と VNC のユーザー錯覚:SSH 越しに見える xcode-select のパスが、Xcode を動かしている GUI ユーザーと一致しないことがあります。対話ユーザーで揃えます。
SSH 経由の自動化とXcode 上の手作業を混在させるチームでは、切断復旧を二系統問題として扱う価値があります。どの OS ユーザーが署名アイデンティティを持ち、CI 整合確認にどのプロファイルを使うかをドキュメント化しておきます。
| シナリオ | 最初に | 次に | その次 | よくある誤り |
|---|---|---|---|---|
| 同一ノードのネット落ち | 時刻と到達性を確認 | キーチェーン解除と Accounts 更新 | Clean して単一の Run | DNS が古いのに証明書を疑う |
| スリープ/フタ/遠隔アイドル | 復帰後 30〜60 秒待ってから Xcode | キーチェーンとロック画面ポリシー | Simulator サービスを再起動 | 解除前に Run を連打する |
| 新ノード/新イメージ | ホスト名と OS 版を比較 | 証明書とプロファイルは移したか | 最小の Archive スモーク | 旧ノードの絶対パスを流用する |
| エンタープライズやプロキシ経由 | 企業ネットワークと SSH 隧道の記事 | 上の「同一ノード」行へ | ホットスポットで A/B | ネット経路の前に Xcode だけ直す |
他の VNC 系ガイドと同様、システムプロンプト・キーチェーン解除・Web 再認証はVNCのデスクトップで行い、SSH は指紋やログ出力に使い分けます。
企業・キャンパスネットワークでは、分割トンネルと直出しの二重構造が起きがちです。切断とポリシー制約が同時に絡むときは、まず経路を正してから「同一ノード・ネット落ち」の行を実行します。
システム設定:一般 → 日付と時刻。自動設定を有効にします。手動のずれは署名とトークン双方を壊します。
メニューバーから developer.apple.com への到達。Safari で最小限の接続確認をします。
キーチェーンアクセス:ログインが解除されているか。配布用証明書と秘密鍵のペアを確認します。
Xcode → Settings → Accounts の更新。ダウンロードが失敗する場合はセッションの再署名が必要で、多くはネット回復と相関します。
ターミナルで指紋を取得(SSH または VNC ターミナル):
sw_vers xcodebuild -version xcode-select -p
チケットに貼り、xcode-select が意図した Xcode.app を指しているか確認します。
DerivedData は最小限から:まず Clean Build Folder。エスカレートする場合はディスク整理の記事に沿ってプロジェクト単位で削除します。
Simulator:すべて終了 → 目的デバイスを起動。消去を試してから Xcode の再インストールに進みます。
署名スモーク:Run と Organizer でアカウント可視。新ノードだけで失敗するなら、まず移行問題として扱います。
事実 1:復帰直後は30〜60 秒待ってから重い GUI を開くと、VNC フレームバッファ未回復による偽ハングを減らせます。
事実 2:空き容量がおおよそ10〜15% を下回ると、APFS の圧力が再接続後のランダムなビルド失敗として表れることがあります。
事実 3:ノード変更時は、証明書エクスポート・プロファイル UUID・xcodebuild -versionをセットで記録し、環境ドリフトとコードを切り分けます。
事実 4:SSH 隧道は通るが直接 VNC が通らないとき、経路が分断すると git pull は成功しても Accounts が更新できないことがあります。
これらはサポートチケットの期待値をそろえるための目安です。メニューバーの時刻のスクリーンショット、Safari で developer.apple.com、sw_vers と xcodebuild -version、空き容量の割合、ノード移行後だけかどうかを添えます。
ネットとキーチェーンが健全でもSimulator だけが壊れるなら、macOS より iOS ランタイムの更新や再取得を優先します。新ノードだけで署名が壊れるなら移行チェックリストを実行します。GUI アプリ全体がランダムに落ちるなら、時系列をログに残し、ハードやイメージロットを疑います。
レンタル金属上で macOS をダウングレードするのは経済的にほぼ得策ではありません。要件はイメージタグと再現可能な VNC 手順として表現します。
移行チケットを切るかは深刻度で決めます。xcodebuild -showBuildSettings の該当部分をマスクして比較し、文書化したOS と Xcode のペアにワークフローを固定します。
30 分で GUI セッションとツールチェーンを揃える。
読む →エクスポートとプロファイルの 15 分チェック。
読む →容量が逼迫したときの順序。
読む →経路が分断したときの切り分け。
読む →ログインキーチェーンを解除し、配布用証明書と秘密鍵のペアを確認します。ノード切替後は p12 かプロバイダ方針に従い、第 3 節ステップ 8 を実行します。
多くの場合不要です。Simulator と Xcode を終了し、DerivedData を削るかサービスを再起動します。続く場合は第 5 節を使います。
多くはブランチが独立して進んだ結果です。マージ状態を解決してから Xcode を疑います。
コマンドは実行できますが、キーチェーン解除とアカウントの Web フローは VNC が要ります。
自前の Mac なら、たまの再起動ルーレットも許容できます。メーター課金のクラウドでは、手当たりの再試行が予算を焼きます。SSH は指紋を出しますが、キーチェーンとアカウントを順に回復する実デスクトップ操作の代替にはなりません。
「とりあえず再接続」の隠れコストは暗黙の状態にあります。VNC が提供する見える macOS デスクは、オンプレのエンジニアが toolchain を健康とみなす前に見る手掛かりと同じものを確認できます。
障害のあとすぐにビルド可能・署名可能・画面共有で説明可能な状態へ戻したいなら、安定した VNC とイメージ方針が明文化されたリモート Mac サービス(例:VNCMac)の方が総コストで有利なことが多いです。社内 Wiki に ノード ID/最後に成功した Archive/キーチェーン解除後のスモークを書いておきます。