結論から:Mac M4 リモート開発のボトルネックはネットワークではなく、設定ミスにあります。 ほとんどの遅延、切断、ビルドタイムアウトは三つの予防可能な問題から来ています:SSH キー権限、VNC 色深度、runner サービス登録。
1. なぜリモート Mac 開発に独自のアプローチが必要か
クラウド Mac と VPS には本質的な違いがあります:macOS のサンドボックス、SIP、Keychain 権限管理は Linux サーバーとは異なるロジックに従います。
これら三点を理解すれば、以降の全操作が直感的になります。
1.1 macOS と Linux の運用比較
| 次元 | Linux VPS | Mac M4 クラウド |
|---|---|---|
| SSH デフォルト | 通常有効 | Remote Login を手動で有効化 |
| 証明書保存 | ファイルシステム | Keychain(解除が必要) |
| グラフィックアクセス | ネイティブ VNC なし | 内蔵 Screen Sharing |
2. SSH 設定
2.1 サーバー側で Remote Login を有効化
bash
sudo systemsetup -setremotelogin on
sudo systemsetup -getremotelogin
2.2 キー権限
bash
ssh-keygen -t ed25519 -C "hashvps-dev" -f ~/.ssh/hashvps_ed25519
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
接続は ssh hashvps-dev を押すだけです。
3. VNC 設定
3.1 VNC クライアント推奨
| クライアント | プラットフォーム | 優位性 |
|---|---|---|
| Apple Remote Desktop | macOS | ネイティブ加速 |
| Jump Desktop | macOS / iOS | マルチプロトコル |
4. Xcode ビルドノード
bash
security unlock-keychain -p "$KEYCHAIN_PASSWORD" ~/Library/Keychains/login.keychain-db
./svc.sh install && ./svc.sh start
Buildkite Agent 設定例(クリックで展開)
bash
brew tap buildkite/buildkite && brew install buildkite-agent
sudo brew services start buildkite/buildkite/buildkite-agent
5. スペック選択マトリクス
~~コア数で選ばない~~:メモリがボトルネックです。
黄金律:メモリはピーク需要の 1.3 倍で計画する。
| ワークロード | 推奨スペック | メモリ |
|---|---|---|
| 単一 iOS アプリビルド | M4 | 16 GB |
| 並列 simulator テスト | M4 Pro | 24 GB |
| AI 推論 + CI 同時実行 | M4 Max | 36 GB+ |
6. ストレージ管理
bash
du -sh ~/Library/Developer/Xcode/DerivedData
rm -rf ~/Library/Developer/Xcode/DerivedData/*
7. トラブルシューティング
| 症状 | 原因 | 修正コマンド |
|---|---|---|
| SSH 接続拒否 | Remote Login 無効 | sudo systemsetup -setremotelogin on |
| キー認証失敗 | 権限が正しくない | chmod 600 ~/.ssh/authorized_keys |
| Runner オフライン | サービス未登録 | ./svc.sh install && ./svc.sh start |
キーボードショートカット一覧
- Cmd + Shift + K
- Xcode Build フォルダをクリーン
- Cmd + B
- Xcode ビルド
まとめ
Mac M4 リモート開発環境の成功率は 80% この三点に依存します:SSH キー権限の正確な設定、VNC 仮想解像度の正しい設定、launchd サービスとして登録された runner。