接続からパイプライン接続まで

クラウドMacを開発・ビルドフローに組み込む

このガイドでは、接続情報、SSH鍵、リモートデスクトップ、Xcode、依存関係、CI Runnerを実際の作業順に整理しています。各手順に確認ポイントがあり、問題がデバイス、ツールチェーン、パイプライン設定のどこで起きたかを確認できます。

デバイス運用表 READY PATH
01
安全な接続を確立 デバイスアドレス、ユーザー名、SSHフィンガープリントを確認
02
ビルド環境を復元 Xcode、依存関係、署名素材、パスを確認
03
CI Runnerを接続 最小権限で実行し、ビルドログを出力
接続チェックリスト 3 PHASES
05 準備フェーズ接続、ログイン、セキュリティ、ツールチェーン、CI
04 パイプラインツールActions、GitLab CI、Jenkins、Fastlane
01 デバイス境界1注文につき1台の専有物理ノード
開始前の5項目チェック

最短ルートを通してから、完全なワークロードを移行

初回からすべてのリポジトリや鍵を移行するのはおすすめしません。まず単独でビルドできる小規模プロジェクトを使い、接続、権限、Xcode、ネットワーク経路を確認してから、本番パイプラインを段階的に接続します。

  1. 01

    接続情報を取得

    コンソールにログインし、デバイス詳細でアドレス、接続ユーザー名、ポート、初期認証情報を確認します。チャット履歴や古い文書から期限切れの情報をコピーしないでください。

    完了条件 デバイスアドレスとSSHフィンガープリントを別途保存済み
  2. 02

    初回ログインを完了

    まずSSHセッションを確立し、必要に応じてmacOSのグラフィカルインターフェースを有効にします。初回接続時はホストフィンガープリントを確認し、予期しない変化があれば操作を中断して再確認してください。

    完了条件 コマンドラインとグラフィカルインターフェースの双方に正常に入れる
  3. 03

    アカウントのセキュリティを強化

    一時認証情報を変更し、専用のSSH公開鍵を登録します。不要な認証項目を削除し、復旧情報はチームで承認されたパスワード管理ツールに保存してください。

    完了条件 現在のチームに必要なアクセス方法だけを残す
  4. 04

    ツールチェーンを準備

    Xcodeのバージョン、コマンドラインツール、パッケージマネージャー、ランタイム、プロジェクト依存関係を確認します。バージョンの出力を記録し、GUI上のアプリ名だけで判断しないでください。

    完了条件 同じコミットをコマンドラインからビルドできる
  5. 05

    CIに接続

    専用Runner IDを作成し、リポジトリと鍵の権限を制限します。まず配布を伴わないテストジョブを実行し、その後アーカイブや配布の段階を有効にします。

    完了条件 ビルドログ、成果物、終了コードを追跡できる
コマンド実行例

3つの出力で接続・ビルド・配布経路を特定

以下はパラメータの構成例で、実際のデバイス情報ではありません。実行前に山括弧内をデバイスアドレス、ユーザー名、プロジェクト名、Scheme、ワークスペースのパスへ置き換えてください。

MiniRentビルドチェックポイント SESSION 01
CONNECT SSHセッションを確立
$ ssh -i ~/.ssh/minirent_ed25519 \
  <ユーザー名>@<デバイスアドレス>

The authenticity of host cannot be established.
ED25519 key fingerprint is <フィンガープリント>

$ sw_vers
ProductName: macOS
ProductVersion: <システムバージョン>

初回接続前に、コンソールでフィンガープリントを個別に確認してください。保存済みのフィンガープリントが突然変わった場合は、新しい値をそのまま受け入れないでください。

BUILD Xcodeビルドを実行
$ xcodebuild -version
Xcode <バージョン>
Build version <ビルド番号>

$ xcodebuild \
  -workspace <プロジェクト名>.xcworkspace \
  -scheme <Scheme> \
  -destination 'generic/platform=iOS' \
  clean build | tee build.log

** BUILD SUCCEEDED **

同じコミットでまずclean buildを実行します。失敗した場合は完全な終了コードとログを保存し、最後の1行だけを切り出さないでください。

AUTOMATE Fastlaneフローを検証
$ bundle exec fastlane <lane名>

[fastlane] Checking environment
[fastlane] Resolving signing inputs
[fastlane] Building archive
[fastlane] Export completed
[fastlane] Lane finished successfully

正式な配布を伴わないlaneで、環境変数、署名パス、アーカイブ先を先に検証してから、後続手順を有効にします。

サンプルパラメータは必ず置き換えてください。秘密鍵、アクセストークン、証明書パスワード、完全なデバイスアドレスを公開ログに記録しないでください。
移行パス

ローカルMacからクラウドMacへ、データ・ツールチェーン・自動化の3層で移行

移行の目的はユーザーディレクトリ全体をコピーすることではありません。コード、依存関係、署名素材、Runner権限を検証・交換・ロールバックできる状態にします。

ローカルMac
クラウドMac
  1. フェーズ1・データ同期

    検証可能な作業データだけを移行

    コードは管理されたリポジトリから再取得するのを優先します。大容量リソース、キャッシュ、ビルド成果物は個別に評価し、ユーザーディレクトリ全体を直接コピーしないでください。

    • ソースリポジトリのアドレス、対象ブランチ、コミットハッシュを記録
    • 大容量リソースのファイル数、総容量、チェックサムを確認
    • DerivedData、一時アーカイブ、再生成できるキャッシュを除外
    • 同期後に読み取り専用チェックを実行し、権限と改行形式を確認
  2. フェーズ2・ツールチェーン復元

    バージョン一覧に沿ってXcode環境を再構築

    まず基本ビルドを完了できる最小限のツールセットを復元し、その後パッケージマネージャー、シミュレーターランタイム、プロジェクト専用スクリプトを追加します。

    • Xcodeのバージョン、ビルド番号、現在のDeveloperディレクトリを記録
    • Ruby、Bundler、Node、パッケージマネージャーのバージョンを固定
    • ロックファイルから依存関係を復元し、無制限の更新を避ける
    • 固定コミットでclean buildを実行し、基準ログを保存
  3. フェーズ3・CI接続

    Runnerと鍵を最小権限に保つ

    自動化IDは手動ログインと分離します。鍵は管理された注入方式で提供し、ビルド終了後に一時ファイルと機密環境変数を消去します。

    • Runner専用の実行ディレクトリとラベルを作成
    • アクセス可能なリポジトリ、ブランチ、配布環境を制限
    • ログ出力前にトークン、パスワード、証明書パスをマスキング
    • まずテストジョブを実行し、その後アーカイブと配布を段階的に有効化
リモートアクセス

認証情報、セッション、異常接続を分けて扱う

接続問題は通常、ローカルネットワーク、デバイスアドレスとポート、認証、リモートセッション状態の4層に分かれます。何度も再試行するより、層ごとに調べる方が迅速です。

アクセス運用表

監査可能な接続習慣を確立

ACCESS / 04

認証情報の保存

デバイスアドレス、ユーザー名、秘密鍵は分けて保存します。チームで共有する場合は管理されたパスワード管理ツールを使い、秘密鍵をリポジトリ、ビルド成果物、チケット添付ファイルに置かないでください。

分離保管

SSH鍵

デバイスごとに専用の鍵ペアを使用し、明確なコメントと作成者を記録します。メンバーがプロジェクトを離れた場合やデバイス用途が変わった場合は、対応する公開鍵を削除し、関連する認証情報をローテーションします。

専用鍵

リモートデスクトップセッション

GUIはXcode設定、証明書のインポート、画面確認に適しています。長時間のビルドはコマンドラインまたはRunnerに任せ、開いたままのデスクトップセッションに依存しないでください。

タスクを分離

アイドルセッションを終了

作業終了後はリモートデスクトップを終了し、不要なポート転送を閉じます。バックグラウンドビルドは明確なタスク管理方式を使い、閉じていないターミナルに依存しないでください。

明示的に終了
接続失敗

まずネットワーク経路を確認

現在のデバイスアドレスとポートを確認し、ローカルネットワークが対象ポートを制限していないか調べます。接続タイムアウトと鍵の拒否は通常異なるため、エラー情報を分けて記録してください。

情報を整理してチームに連絡
フィンガープリントの異常

自動再接続を停止

ローカル記録を削除してそのまま続行しないでください。まずコンソールでデバイス情報を確認し、チケットで変更理由を確認してから既知のホスト記録を更新します。

コンソールでチケットを送信
Xcodeビルド

すべてのビルドでバージョン、入力、成果物、失敗箇所を確認できるようにする

GUIでビルドできても、CIで再現できるとは限りません。正式接続前に少なくとも1回はコマンドラインでclean buildを実行し、バージョン、パラメータ、終了コード、完全なログを保存します。

バージョンを確認

実行 xcodebuild -versionと同時に xcode-select -p の出力も記録し、コマンドラインツールが誤ったディレクトリを指さないようにします。

署名素材をインポート

現在のプロジェクトに必要な証明書とプロビジョニングプロファイルだけをインポートします。キーチェーン権限を制限し、パスワードは管理された変数から渡して、スクリプトやログに書き込まないでください。

DerivedDataを管理

パイプライン用に予測可能なディレクトリを指定します。キャッシュ問題を調べる際はまず容量を記録し、対象プロジェクトの内容だけを削除してください。ディスク全体の削除を標準手順にしないでください。

並列ビルドを制御

単一タスクで基準を作り、徐々に並列数を増やします。メモリ、ディスク、ビルド時間を確認し、複数タスクが同じ派生データディレクトリを奪い合わないようにします。

ログを出力

使用する tee で生の出力を保存し、終了コード、コミットハッシュ、Scheme、対象プラットフォーム、成果物パスを記録すると再現しやすくなります。

推奨する基準記録

成功したビルドごとに少なくとも8項目を残す

  • コミットハッシュ
  • Xcodeバージョン
  • Scheme
  • 対象プラットフォーム
  • 依存関係ロックファイル
  • 開始・終了時刻
  • 終了コード
  • 成果物パス
CI/CD接続

4種類のRunner、共通の接続チェック基準

どのオーケストレーションツールを使う場合も、実行ID、作業ディレクトリ、ラベル、鍵の取得元、同時実行上限、ログの場所、クリーンアップ処理を明確にします。

GH
GitHub Actions

セルフホストRunnerチェックリスト

  • チップ、用途、環境を表すラベルをRunnerに設定
  • Runnerを呼び出せるリポジトリとワークフローの範囲を制限
  • ジョブ開始時にXcodeと依存関係のバージョンを出力
  • 管理されたシークレット注入を使い、機密変数のエコーを禁止
  • ジョブ終了後に一時キーチェーン、アーカイブ、作業ディレクトリを消去
GL
GitLab CI

Runner登録チェックリスト

  • 専用ラベルでmacOSジョブを対象デバイスへルーティング
  • 保護変数が許可されたブランチと環境でのみ使用可能か確認
  • ビルドディレクトリを固定し、異なるプロジェクトで機密キャッシュを共有しない
  • 成果物とログの明確な保存範囲を設定
  • ジョブキャンセル後に子プロセスと一時ファイルが終了できることを確認
JK
Jenkins

Agentノードチェックリスト

  • デバイス性能に応じてノードラベルとExecutor数を設定
  • 認証情報を特定のJobに紐付け、グローバル環境に置かない
  • ワークスペース、キャッシュ、アーカイブの容量を確認
  • Pipelineで使用するツールのバージョンとパラメータを記録
  • 失敗後に必要なログをアーカイブしてから安全にクリーンアップ
FL
Fastlane

自動化Laneチェックリスト

  • BundlerでFastlaneとプラグインのバージョンを固定
  • テスト、アーカイブ、配布を個別に検証できるlaneに分割
  • 実行前に環境変数が揃っているか確認し、値は出力しない
  • アーカイブ、エクスポートファイル、ログの保存先を明確化
  • 配布を伴わないフローを先に検証し、その後正式手順を開放
ストレージとデバイスを組み合わせる

ワークセットの大きさで容量を選び、キャッシュを長期データにしない

ベースSSDはコード、依存関係、通常のビルドに適しています。拡張容量は大容量リソース、複数の並列ワークスペース、保存が必要なビルド成果物に適しています。重要なデータは別途バックアップしてください。

256GB / 512GB

ベースSSDプラン

MiniRent M4 Coreは256GB SSD、MiniRent M4 Plusは512GB SSDを搭載。コードリポジトリ、依存関係、ツールチェーン、容量を管理できるビルドキャッシュに適しています。

  • DerivedDataとアーカイブディレクトリを定期確認
  • ビルド成果物のアップロード後にローカルコピーを削除
  • 再生成可能なキャッシュを長期ファイルとして扱わない
+1TB SSD

中規模ワークセット拡張

複数のアクティブなリポジトリ、大きなメディア素材、より多くのビルド成果物を保存したいチームに適しています。

1日
$3
1週間
$8
1か月
$14.8
1四半期
$40.3
+2TB SSD

大容量リソース・アーカイブ拡張

大規模モデル、複数ワークスペース、長期間のビルド成果物保存、高容量テストデータに適しています。

1日
$6
1週間
$16
1か月
$29.6
1四半期
$80.6
Thunderbolt 5

物理デバイスを連携

デバイス間の高速リンクを必要とする実験やデータ交換に適しており、連携する各デバイス単位で課金されます。

1台・1日
$1.8
1台・1週間
$4.8
1台・1か月
$8.9
1台・1四半期
$24.2
注文前にピーク時のワークセットを見積もる

コード、依存関係、モデルまたはメディア素材、ビルドキャッシュ、アーカイブ成果物、安全余裕を分けて計算します。追加オプションと実際の利用可否は、コンソールの最新情報を確認してください。

デバイスとストレージを設定
技術コンテンツ予定

タスク別に続きを読む

実際のデプロイ、ツールチェーンの復元、ハードウェア選定に関するテーマを整理しています。タグで絞り込み、公開後は技術ブログでまとめてご覧ください。

AIとMLX

MiniRent実践:クラウドMacでAIモデル推論をデプロイ

Apple Silicon構成の選定、MLX環境のインストール、推論サービスのリモート実行まで、モデル準備、性能確認、ポート保護、結果出力の流れを整理します。

コンテンツ予定・デプロイ実践
アーキテクチャ選定

クラウドmacOSとローカル開発:チームはどう選ぶべきか

デバイスの専有性、提供速度、リモート協業、ツールチェーンの一貫性、運用負担、アップグレードの柔軟性の6点から判断基準を作ります。

コンテンツ予定・チーム意思決定
Xcodeビルド

MiniRent Xcodeクラウドビルド完全ガイド

リモート接続、Xcodeバージョン確認、依存関係の復元、署名素材のインポート、コマンドラインビルド、ログ保管を順に行い、よくあるビルド失敗の切り分け順も解説します。

コンテンツ予定・ビルドガイド
ハードウェア選定

Mac miniとMac Studioの選び方:まずワークロード、次にスペック

Xcodeの並列ビルド、継続的インテグレーション、メモリ負荷、AI推論、外部ストレージの要件をもとに、測定可能なタスク指標で判断する方法を説明します。

コンテンツ予定・スペック評価
リモート開発

ゼロから構築するMiniRentリモートMac開発環境

SSH鍵、リモートデスクトップ、コード同期、開発ツールのインストール、証明書管理、セッションセキュリティを扱い、日常のワークフロー移行を支援します。

コンテンツ予定・環境構築
AIとMLX

MLX入門:クラウドMacで初めての推論実験

MLXの環境準備、モデル取得、基本推論、メモリ確認、結果保存を紹介し、リモート実験での認証情報保護、データ同期、リソース解放も補足します。

コンテンツ予定・入門実験

現在、全6テーマを表示しています。

障害の切り分けと問い合わせ

証拠を集めてから、クリーンアップ・再試行・チケット送信を判断

チケットには発生時刻、デバイス識別子、実行コマンド、終了コード、再現手順、マスキング済みログを記載してください。「使えない」だけの場合より、迅速に調査へ進めます。

デバイスに接続できない場合、どの順番で確認すべきですか?
  1. コンソールで現在のデバイスアドレス、ポート、ユーザー名、デバイス状態を確認します。
  2. 接続タイムアウト、接続拒否、フィンガープリント変更、鍵の拒否を区別します。
  3. 対象ポートへアクセスできる既知のネットワークで比較テストを1回行います。
  4. 詳細モードでSSHネゴシエーションを記録し、送信前にデバイスアドレスと機密項目を削除します。
  5. 接続できない場合は、発生時刻、ネットワーク位置、エラー抜粋を添えてチケットを送信します。
Xcodeビルドが突然失敗したら、まずどこを見ればよいですか?
  1. 失敗したコミット、Xcodeバージョン、Scheme、対象プラットフォーム、完全な終了コードを記録します。
  2. 依存関係ロックファイルの変更、パッケージソースとネットワーク要求の成功を確認します。
  3. 署名素材、キーチェーン権限、プロビジョニングプロファイルが対象と一致するか確認します。
  4. 分離したDerivedDataディレクトリでclean buildを1回実行します。
  5. 直近の成功ログと比較し、最後の要約行ではなく最初の実エラーを特定します。
ディスク容量が不足した場合、何を削除すべきですか?
  1. まずワークスペース、DerivedData、アーカイブ、シミュレーターデータ、依存関係キャッシュの使用量を集計します。
  2. 保持するビルド成果物をチーム指定先へアップロードし、完全性を確認します。
  3. 再生成可能なキャッシュと、アップロード済みと確認できた古いアーカイブを優先して削除します。
  4. CIが失敗したジョブによってクリーンアップをスキップしていないか確認します。
  5. ワークセットが長期的に増え続ける場合は、+1TB SSDまたは+2TB SSDを検討します。
リモート操作の遅延が増えた場合、ローカルネットワークとノード経路をどう切り分けますか?
  1. 発生時刻、現在の接続都市、通信事業者、接続方式を記録します。
  2. 有線と無線を比較し、ローカルのパケットロスと電波変動を除外します。
  3. SSH操作、リモートデスクトップ、ファイル転送を個別に観察し、単一プロトコルだけの異常か確認します。
  4. 上り帯域を占有する大容量同期を停止し、比較テストを再度行います。
  5. チケットには複数回のテストにおける中央値を記載し、1回のピーク値だけを示さないでください。
コマンドは実行できるのに読み書きや署名権限で失敗する場合、どう対処しますか?
  1. 現在の実行ユーザーとファイル所有者を確認し、最初から高権限コマンドで回避しないでください。
  2. 作業ディレクトリ、キーチェーン、スクリプト、ビルド成果物ディレクトリに必要最小限の権限があるか確認します。
  3. CI Runnerと手動ログインで異なるユーザーまたは環境変数を使っていないか確認します。
  4. スクリプトの実行権限、パスの大文字小文字、マウントボリュームの権限を再確認します。
  5. チケット送信前に、証明書名、トークン、完全なパスに含まれる機密情報を削除します。

専有物理Mac miniへビルドタスクを移行する準備はできましたか?

M4構成、レンタル期間、ノードを選び、このページのチェックリストに沿って接続、ツールチェーンの復元、CI Runnerの接続を完了してください。実際の利用可否と提供状況はコンソールの最新情報をご確認ください。