接続したら、まずテスト

SSHでコマンドを実行、VNCで画面を確認。
どちらも使えます

接続先は仮想マシンではなく、専有の物理Macです。まずコンソールのマシン詳細でIPアドレス、接続ポート、認証情報を確認しましょう。SSHでビルドやテストを実行し、VNCでmacOSの画面を確認できます。2つを使い分ければ、ビルドのたびにリモートデスクトップを操作する必要はありません。

注文済みの場合は、マシンの引き渡しが完了していることを確認してから接続してください。ポート、ユーザー名、認証方式はインスタンスの詳細画面で確認し、サンプルから推測しないでください。

用途に合わせて接続方法を選ぶ

ビルドはSSH、画面の確認はVNC

まずコマンドラインで安定して接続してから、デスクトップを開きましょう。ネットワークと認証の問題を切り分けやすくなり、デスクトップの更新でビルドログの転送帯域を圧迫することも防げます。

SSH:マシン上でコマンドを実行

xcodebuildの実行、スクリプトの起動、ログの確認、ビルド成果物の管理に適しています。macOSのターミナル、Windows TerminalのOpenSSH、LinuxのSSHクライアントを利用できます。

  • SSHポートはインスタンスの詳細画面で確認してください。一般的なデフォルト値は22ですが、必ずしもこのポートとは限りません。
  • 初回接続時はホスト鍵の指紋を確認し、接続先が正しいことを確かめてから認証してください。
  • 公開鍵認証を設定しましょう。秘密鍵は手元に保管し、プロジェクトのリポジトリに置いたり、サポートチケットに添付したりしないでください。
  • 長時間の処理には、設定済みの永続セッションやパイプライン実行環境を使いましょう。ローカルのターミナルが開いていることを、タスクの実行保証と考えないでください。
SSHとビルドの例を見る

VNC:macOSのデスクトップを直接確認

プロジェクト設定の変更、シミュレーター画面の確認、GUIでしか見つからない問題の調査に適しています。macOSの画面共有やRealVNCなどの対応クライアントを利用できます。利用できる認証方式は、クライアントとインスタンスの設定をご確認ください。

  • クライアントにはインスタンスのIPアドレスとVNCポートを入力してください。デスクトップ接続にSSHポートは使えません。
  • 詳細画面に記載されたデスクトップ用の認証情報を使ってください。SSHと同じ認証方式とは限りません。
  • まずは解像度1440 × 900で接続し、手元の画面やネットワークに合わせて調整しましょう。
  • クライアントが対応していれば、まず色深度を16ビットに設定してください。色の細部まで確認したい場合は、画質を上げましょう。
デスクトップ設定の手順を見る

VNCは、ローカルのUSBデバイスに接続する代わりにはなりません。シミュレーターのテストとリモートデスクトップはそのまま計画できますが、外部機器が必要なテストは、接続条件を確認してからレンタル方法を決めてください。

接続からテスト結果の確認まで

ホスト鍵を確認してからビルドコマンドを実行

以下は手順を説明するための記録で、現在の拠点の実行結果ではありません。環境変数には、実際のインスタンスの値をローカルで設定してください。Appはスキームの例です。実行前に、プロジェクトに存在する名前へ変更してください。

metalvnc — tokyo-node — zsh
$ ssh -p "$SSH_PORT" "$MAC_USER@$MAC_IP"

The authenticity of host cannot be established.
ED25519 key fingerprint is displayed by your SSH client.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
yes
Authenticated using publickey.

$ xcode-select -p
/Applications/Xcode.app/Contents/Developer

$ xcrun simctl list devices available
== Devices ==
Available simulators are listed by the installed runtime.

$ xcodebuild -scheme App -destination 'platform=iOS Simulator' test
Test Suite 'AppTests' started.
Executed 128 tests, with 0 failures.
** TEST SUCCEEDED **

$ fastlane beta
Build processing completed.
Upload completed successfully.
fastlane finished successfully.

確認する順番:SSH認証の成功を確認 → ツールチェーンを確認 → シミュレーターを確認 → テストを実行 → パッケージとアップロードの結果を確認。

例の「128件成功、失敗0件」はログの読み方を示すものです。実際のテスト件数、所要時間、アップロード結果はプロジェクトによって異なります。

指紋が一致しない場合は、いったん接続を中止

初回接続時は、ターミナルに表示された指紋を信頼できる情報源の記録と照合してください。詳細画面に指紋の記載がない場合は、コンソールからサポートチケットを送って確認しましょう。次回以降にホスト鍵の変更が表示された場合は、古い記録を削除して回避せず、再インストールやインスタンスの交換があったか確認してください。

コマンドが動いても、プロジェクトの設定済みとは限らない

テスト前にXcodeのパス、シミュレーターのランタイム、プロジェクトの依存関係、共有スキームを確認してください。fastlane betaの実行には、プロジェクト内の対応lane、署名用ファイル、アップロード認証情報が必要です。どのプロジェクトでも使える汎用のアップロードコマンドではありません。

同じ条件で拠点を比較

まず往復遅延を測り、デスクトップの操作感を確認

選択できる拠点はシンガポール、東京、ソウル、香港です。操作時の応答性は、地理的な距離よりも接続元と拠点の間の経路に左右されます。同じ都市でも、利用する通信事業者によって結果が異なる場合があります。

データ状況:現在、都市別の測定結果を検証できるサンプルはありません。表には実際の状況どおり「未測定」と記載し、推定値を実測の中央値として示していません。選択前にご自身のネットワークで測定してください。事前に経路を確認したい場合は、メールまたはコンソールからサポートチケットでお問い合わせください。

接続元都市 × 接続先拠点:ICMP往復遅延の中央値(ms)
接続元の都市シンガポール東京ソウル香港
上海未測定未測定未測定未測定
深セン未測定未測定未測定未測定
台北未測定未測定未測定未測定
バンコク未測定未測定未測定未測定
シドニー未測定未測定未測定未測定
ロサンゼルス未測定未測定未測定未測定
測定条件:家庭用ブロードバンド回線を使い、日本時間の夜間ピーク時に各接続先へICMPリクエストを100回送信。応答があった往復時間の中央値を算出し、パケット損失率も記録します。この表は今後の測定用で、測定済みのレポートではありません。後日掲載する結果は拠点選びの参考情報であり、遅延を保証するものではありません。

ローカルから測定し、接続先から自分自身を測らない

macOSまたはLinuxでは、以下のコマンドをローカルで実行できます。Windowsでは ping -n 100 に続けて接続先のIPアドレスを指定してください。接続元の通信事業者、時間帯、応答数、コマンドの出力を記録します。比較時はネットワークと条件をそろえてください。

ping -c 100 "$MAC_IP"

中央値だけでなく、遅延のばらつきとパケット損失も確認

pingの集計に表示される平均値は中央値ではありません。各応答の時間から中央値を計算してください。パケット損失が続いたり、一時的に遅延が大きくなったりすると、中央値が低くてもVNCの画面操作が重くなることがあります。ICMPが遮断されていても、SSHやVNCが使えないとは限りません。実際の接続ポートも確認してください。

最後に同じ解像度、色深度、操作手順でデスクトップを試します。文字を入力し、ウィンドウをドラッグして、画面更新が安定しているか確認しましょう。

設定は一度に1つだけ変更

デスクトップの通信量は必要な画面だけに

まず負荷の低い設定で基準を作り、画質を1項目ずつ上げます。設定を変えるたびに文字入力、スクロール、ウィンドウのドラッグを試してください。4つの項目を同時に変更すると、効果のあった設定を特定しにくくなります。

  1. 01

    色深度を下げる

    クライアントで設定できる場合は、まず色深度を16ビット、または低めの画質に設定して、画面更新時のデータ量を抑えましょう。デザイン、色、スクリーンショットを確認するときは画質を戻してください。色深度を下げた画面は、色の確認には適しません。

  2. 02

    動く壁紙をオフにする

    静止画の壁紙に切り替え、関係のない動画やアニメーションを停止しましょう。背景も更新されていると、作業に関係のない映像に帯域が使われます。シミュレーターのアニメーションを確認するときは、必要なウィンドウだけを表示してください。

  3. 03

    解像度を下げる

    まず1440 × 900から始め、エディターとテスト画面が見えることを確認してから解像度を上げましょう。ローカルのモニターが高解像度に対応しているからといって、リモートデスクトップも同じ解像度にする必要はありません。ピクセル数が増えると、データ転送とデコードの負荷も高まります。

  4. 04

    回線が不安定ならコマンドラインを優先

    ビルド、依存関係のインストール、ログの確認にはSSHを使い、画面が必要なときだけVNCを開きましょう。成果物とログは別々に転送し、大容量ファイルの転送と画面更新で上り回線を取り合わないようにしてください。

接続したら、まずアクセス権を適切に設定

復旧手段を確保してから認証を変更

専有物理機の環境はご自身で管理しますが、インターネット経由の接続が自動的に安全になるわけではありません。認証やファイアウォールを変更するときは、接続中のセッションを1つ残し、別のセッションから新しい設定を検証してください。

初期パスワードを変更

引き渡し後はできるだけ早く初期パスワードを変更し、他のサービスと使い回さない、十分に長いものを設定してください。認証情報は管理されたパスワードマネージャーに保管し、ビルドログやリポジトリには記載しないでください。

確認:新しいセッションを開いて新しい認証情報で接続できることを確認してから、古いセッションを終了してください。

SSHは鍵認証のみを使用

公開鍵を登録し、秘密鍵でログインできることを確認してから、SSHの認証ポリシーを変更してください。自動化には専用の鍵を使い、タスクごとに必要な権限を割り当てましょう。担当者の離任や鍵の漏えい時は、該当する公開鍵を速やかに無効化してください。

確認:2つ目のターミナルから指定した秘密鍵で接続でき、古いセッションに依存しないことを確認してください。

必要なポートだけを開放

タスクに必要な接続口だけを残し、可能であれば接続元IPアドレスを制限してください。リモートデスクトップには保護された接続方法を優先します。SSHとVNCのルールはそれぞれ確認し、トラブル対応のために保護機能全体を長時間無効にしないでください。

確認:必要なポートに接続でき、不要な接続口が閉じていることを確認してください。

離席時は画面をロック

デバッグ終了後は画面をロックしてクライアントを切断し、一時的にダウンロードした機密情報を削除してください。チームで秘密鍵を共有せず、ビルドに必要な鍵や証明書はチームで定めた手順に沿って管理してください。

確認:再接続時に認証が必要で、ログやスクリーンショットに秘密情報が含まれていないことを確認してください。

接続経路を順に切り分け

接続できなくても、まずOSを再インストールしない

まずタイムアウト、接続拒否、認証失敗を区別しましょう。一度に確認するのは1項目にし、元のエラーメッセージを保存してください。パスワード、ポート、ファイアウォールを次々と変更すると、最初の問題を特定する手掛かりが失われます。

  1. 01

    IPアドレスとインスタンスを確認

    コンソールでマシンの詳細を開き、インスタンスの引き渡しが完了していることと、接続先アドレスが現在のマシンのものかを確認してください。古いメモやスクリーンショット、別のマシンのアドレスは使わず、サンプルの変数名をそのままクライアントに入力しないでください。

  2. 02

    プロトコルとポートを確認

    SSHクライアントにはSSHポート、VNCクライアントにはデスクトップ用ポートを指定します。「タイムアウト」の場合はネットワークとルールを、「接続拒否」の場合はポートとサービスの待ち受け状態を優先して確認してください。pingが通っても、アプリケーションのポートに接続できるとは限りません。

  3. 03

    ユーザー名と認証情報を確認

    認証に失敗した場合は、ユーザー名、鍵ファイル、クライアントで選択した認証方式を確認してください。コピー時に余分な空白が入っていないか、現在のインスタンスの認証情報を使っているかも確認しましょう。ホスト鍵に異常がある場合は、警告を無視せず接続先を検証してください。

  4. 04

    ローカルのネットワーク設定を確認

    端末のファイアウォール、プロキシ、社内ネットワークの出口制御、クライアントのアクセス権を確認してください。許可された別のネットワークでも再テストし、回線によって問題が変わるか切り分けましょう。一度つなぐためにセキュリティソフトを恒久的に無効化しないでください。

解決しない場合:再現できる情報を添えて問い合わせ

インスタンスID、接続プロトコル、接続先ポート、エラーの原文、発生日時とタイムゾーン、実施済みの確認手順を記載してください。「SSHは使えるがVNCは使えない」のように具体的に伝えると、「接続できない」だけの場合より調査しやすくなります。スクリーンショットやログを添付する前に、パスワード、秘密鍵、トークンなどの機密情報を削除してください。

ご購入済みのマシンに関する問題は、インスタンスと紐付けられるようコンソールからサポートチケットを送ってください。購入前の回線やクライアントの互換性に関するお問い合わせは、次のメールアドレスまでご連絡ください。 support@metalvnc.com。

接続方法がわかったら

最寄りの拠点を選んで起動

2種類のM4からメモリとストレージを比較し、拠点と課金期間を選びましょう。実際のネットワークでSSHとデスクトップの使い心地を確かめてから、継続的なビルドを始めてください。利用可能状況はコンソールの最新情報をご確認ください。