接続・ビルド・診断

クラウドMacの問題を実行可能な確認項目に分解

曖昧に「もう一度試す」ことから始めません。まず接続先を確認し、ツールチェーン、依存関係、署名情報、ディスク、ログを確認します。各手順で確認すべき出力を示し、OakVPSの専用物理マシンでのiOSビルド、macOS自動化、MLX実験に対応します。

既存注文に関する問題は、コンソールにログインしてチケットを送信してください。公開ページに秘密鍵、署名証明書のパスワード、完全な支払い情報を送らないでください。

タスクから選ぶ

問題が起きた段階を特定

6つの入口から選べます。複数の段階にまたがる場合は、最初に異常が出た箇所から確認し、いきなり環境全体を消去しないでください。

SSH

初回接続

鍵の権限、ホストフィンガープリント、ユーザー名、ポート、ローカルネットワークを確認し、接続失敗が認証前か認証後かを切り分けます。

接続の診断を始める
XCODE

Xcodeビルド

現在のツールチェーン、プロジェクトのscheme、依存関係、署名ファイル、ディスク容量、書き出し可能な成果物を確認します。

ビルドコマンドを見る
FASTLANE

自動化パイプライン

Ruby環境、プラグイン、laneの引数、Xcodeのエラーを切り分け、最後の1行だけでなく完全なログを保存します。

自動化の出力を確認
TRANSFER

ファイル転送

先に成果物をパッケージ化してチェックサムを生成し、アーカイブを転送します。書き込み中のビルドディレクトリや依存キャッシュを直接移動しないでください。

受け渡し手順を見る
SESSION

リモート開発セッション

ローカルネットワークが安定していること、切断後もタスクを継続できることを確認し、端末を離れる前に対話セッションを終了して一時ファイルを整理します。

セッションの境界を確認
MLX

MLX環境

ユニファイドメモリ、モデルファイル、隔離環境、実験記録を順に確認します。環境の正常性を、再現できない速度の数値だけで判断しないでください。

実験環境を確認
初回接続の基準

SSH接続に失敗したら、ハンドシェイクの順に確認

元のエラーを保存してから、変更する変数を一度に1つに絞ります。ユーザー名、ポート、鍵を連続して変更すると、原因を特定できなくなります。

01

鍵の権限

ローカルで実行 chmod 600 ~/.ssh/oakvps_key。秘密鍵が他のユーザーから読み取れる場合、SSHクライアントは認証開始前にその鍵の使用を拒否します。

02

ホストフィンガープリント

初回接続時は、端末に表示されたフィンガープリントをコンソールの接続情報と照合してから確認します。ホスト情報が変わった場合、古い記録を削除して検証を省略しないでください。

03

ユーザー名

注文の接続情報に記載されたシステムユーザー名を使用し、メールアドレスやローカルPCのユーザー名をリモートコマンドに入力しないでください。

04

ポート

接続情報のポートを明示的に指定します。例: ssh -p 22 user@host。タイムアウトは通常認証前に、権限拒否は通常認証段階で発生します。

05

ネットワーク許可

社内ネットワーク、VPN、ローカルファイアウォール、出口ポリシーが対象ポートを許可していることを確認します。信頼できるネットワークで再テストしても構いませんが、信頼できないネットワークでプロジェクトの認証情報を転送しないでください。

06

初回確認

接続できたら、まず whoami、sw_vers と df -hを実行し、ユーザー、システムバージョン、ディスク空き容量を記録してからプロジェクト資料を取り込みます。

コマンド出力から原因を特定

接続・ビルド・自動化の出力を分けて確認

端末の最後の1行は結果であって、原因とは限りません。以下の3つのコマンドで、接続情報、Xcodeビルドの入口、fastlane laneの状態をそれぞれ確認します。実行前に例の引数を自分の接続情報、ワークスペース、schemeに置き換えてください。

  • 接続成功リモートユーザー名、システムバージョン、ディスク情報が返る。
  • ビルド入口が有効ワークスペース、scheme、対象プラットフォームをXcodeが正しく認識できる。
  • 自動化パイプラインを確認可能Bundler、プラグイン、laneの各エラーに完全なコンテキストが残る。
oakvps-task-session

接続と環境の確認

$ ssh -i ~/.ssh/oakvps_key -p 22 oak@203.0.113.10
$ whoami
oak
$ sw_vers -productVersion
15.x
$ df -h /

確認ポイント:コマンドからリモートユーザー名が返れば、ネットワークと認証の段階は通過しています。以降の問題はシステム権限またはプロジェクト環境を確認してください。

Xcodeビルドの入口

$ xcode-select -p
/Applications/Xcode.app/Contents/Developer
$ xcodebuild -version
Xcode 16.x
$ xcodebuild -workspace App.xcworkspace \
  -scheme App \
  -destination 'generic/platform=iOS' \
  build | tee build.log

確認ポイント:まずDeveloperディレクトリを確認し、次にワークスペースとschemeを確認します。 build.logを保存し、最後の失敗概要だけをコピーしないでください。

fastlane出力の抜粋

$ bundle exec fastlane lanes
$ bundle exec fastlane ios build \
  --verbose 2>&1 | tee fastlane.log
[09:24:18]: Driving the lane 'ios build'
[09:24:19]: Resolving package dependencies

確認ポイント:laneを一覧表示できれば、Ruby依存関係の入口は利用可能です。後で失敗した場合は終了コードだけでなく、ログで最初に現れたエラーを探してください。

ビルド失敗の診断

依存関係に沿って確認し、環境全体を先に再インストールしない

バージョン、キャッシュ、署名、ディスク、ログは相互に影響します。以下の順序なら不要な変更を減らし、次の担当者も同じ障害を再現できます。

ビルド失敗の確認順序・コマンド・判断基準
順序 確認対象 実行または記録 判断基準
01 Xcodeバージョン xcodebuild -version と xcode-select -p プロジェクトが要求するツールチェーンと現在のアクティブディレクトリが一致し、コマンドラインとGUIが異なるバージョンを指していない。
02 依存キャッシュ まずロックファイルを記録し、Swift Package、CocoaPods、またはプロジェクト固有のキャッシュ状態を確認する。 ロックファイルが意図せず変更されていない。現在のエラーに関係するキャッシュだけを削除し、再利用できる依存関係をすべて消去しない。
03 署名情報 ターゲット、bundle識別子、証明書の有効性、provisioning profileの対応関係を確認する。 署名情報が現在のビルドターゲットと一致し、パスワードや秘密情報がログ、リポジトリ、チケット添付に含まれていない。
04 ディスク容量 df -h、プロジェクトディレクトリの容量、DerivedDataの容量。 ビルドディレクトリ、依存関係、アーカイブ、一時ファイルに十分な空きがあり、異常に増加したディレクトリを個別に特定できる。
05 完全なログ 次の tee を使って出力を表示・保存し、コマンド、時刻、終了コードを記録します。 ログに最初のエラー、コンテキスト、最終終了状態が含まれ、別のエンジニアが同じコマンドで再現できる。
依存関係の問題

ロックファイルを比較してからキャッシュを消去

依存関係の解決結果が突然変わった場合は、コミット前後のロックファイルの差分、パッケージソース設定、ネットワーク結果を確認します。キャッシュ自体の破損を確認した場合のみ該当範囲を削除し、再現可能な問題を一度きりの状態にしないでください。

署名の問題

情報不足とターゲット不一致を切り分ける

証明書が利用できない、プロビジョニングプロファイルとbundle識別子が一致しない、またはビルドターゲットが誤っている可能性があります。エラーコードとターゲット名を記録し、証明書パスワード、秘密鍵、完全な署名情報をチケットに記載しないでください。

ログの問題

最初の失敗時のコンテキストを完全に保存

繰り返し実行するとキャッシュや一時ファイルが変わることがあります。最初の失敗後は、ログ、コマンド、ワークスペースの状態、ディスク情報を保存してから、変数を1つずつ変えて再テストしてください。

セッションと成果物の受け渡し

リモート開発セッションとファイル納品をそれぞれ復旧可能にする

リモートウィンドウは操作の入口にすぎず、タスク状態を保存する唯一の場所にしてはいけません。コマンド、ログ、成果物、チェックサムを明確なディレクトリに保存します。

リモートセッション

接続前と退出前に状態を確認

  1. 01
    接続前の準備

    ローカルネットワーク、ホストフィンガープリント、対象ユーザー名、プロジェクト資料の入手元を確認します。機密ファイルはタスクに必要な場合だけ取り込みます。

  2. 02
    長時間タスクを画面から切り離す

    ビルドや実験を復旧可能なセッション管理方式で実行し、標準出力を同時にログファイルへ書き込みます。

  3. 03
    退出時に終了

    ファイルが保存され、タスク状態が記録されていることを確認してからGUIまたはSSHセッションを終了し、未保存の編集をウィンドウに残さないでください。

  4. 04
    権限を回収

    チームメンバーが離脱した後、またはタスク終了後に不要な鍵とアクセス権を無効化し、共有ディレクトリを確認します。

ファイルの受け渡し

成果物、ログ、機密資料を分けて扱う

  1. 01
    書き込みを停止

    ビルドが終了したことを確認してから成果物をアーカイブします。生成中のディレクトリやデータベースファイルを転送しないでください。

  2. 02
    マニフェストを生成

    ファイル名、ビルドバージョン、環境バージョン、生成コマンド、チェックサムを記録し、受信側が完全性を確認できるようにします。

  3. 03
    ダウンロード後に確認

    ローカルで展開して重要ファイルを確認し、アーカイブが空のディレクトリでなく、必要なログも欠落していないことを確認します。

  4. 04
    機密ファイルを整理

    チームの方針に従い、一時鍵、トークン、署名情報、不要になったモデルのコピーを削除し、公開可能なビルド記録は残します。

MLX実験の確認項目

モデル、環境、メモリの上限を記録してから実験結果を検討

MLXはApple Siliconのユニファイドメモリを使用します。モデルファイル、ランタイムの使用量、コンテキスト長、中間結果が空き容量に影響するため、モデルファイル自体のサイズだけで判断できません。また、1回の実行時間だけで環境性能を推測しないでください。

3つのプランはすべて専用物理マシンです。ベーシックはM4、16GBメモリ、256GBストレージ、アドバンストはM4、24GBメモリ、512GBストレージ、ハイメモリはM4 Pro、64GBメモリ、2TBストレージを搭載します。選択はモデル、データセット、並列タスクの実測使用量を基準にしてください。

01

実験環境を分離

プロジェクトごとにPython環境と依存バージョンを固定し、再現可能な依存関係一覧を保存します。システム環境に複数の実験バージョンを混在させないでください。

02

モデルファイルの容量を確認

ダウンロードパッケージ、展開後のファイル、キャッシュ、出力ディレクトリの容量を個別に記録し、一時ファイル用の空きも確保して、実験途中の容量不足を防ぎます。

03

メモリプランを選択

アクティビティモニタまたはコマンドラインでピーク使用量を記録します。明らかなメモリ圧迫が続く場合は、並列数を減らす、タスクを小さくする、設定を調整するなどの対応を行い、単に繰り返し実行しないでください。

04

実験ログを保存

コードバージョン、依存バージョン、モデル識別子、パラメータ、入力概要、出力先、異常情報を記録し、次回も同じ条件で再現できるようにします。

サポート依頼の前に

再現可能な記録としてチケットを整理

サポート担当者には、どの注文、どのノード、どの手順、どの時間帯に問題が発生したかを知らせる必要があります。情報が具体的であるほど、診断をすぐに始められます。

注文ID

コンソールで確認できる注文IDを記載し、支払い証明や完全な決済情報は送信しないでください。

必須
物理ノード

注文で使用しているノードと現在の接続先を明記し、ネットワーク経路と環境範囲を区別できるようにします。

必須
発生時刻

タイムゾーン付きの時刻を使い、問題が継続的か断続的か、1回のタスクだけで発生したかを説明します。

必須
再現手順

正常な状態から始め、コマンド、引数、期待結果、実際の結果を順番に記載し、途中の操作を省略しないでください。

必須
機密情報を除いたログ

完全なエラーコンテキストと終了コードを添付し、秘密鍵、トークン、証明書パスワード、リポジトリ認証情報、プロジェクトの機密内容を削除してください。

添付推奨

すぐに使えるクラウドMacが必要ですか?

Oak M4、Oak M4 Plus、Oak M4 Proから選び、タスク期間に合わせて専用物理マシンをレンタルできます。注文後はコンソールで注文情報、接続情報、サポートチケットを確認できます。