まずはシミュレータで回帰テスト
プロジェクトに必要なシミュレータランタイムをインストールし、対象デバイスとOSバージョンを固定します。まず xcrun simctl list devices available で利用可能なデバイスを確認し、実際のデバイスIDをテスト設定に記載します。
夜間ジョブでは .xcresult、スクリーンショット、ログを保存します。失敗時は製品の不具合、テストスクリプトの不安定さ、環境の問題を切り分け、無限に再試行して原因を覆い隠さないようにしましょう。
開発ワークフローに専有のApple Silicon物理ノードを追加しましょう。仮想マシンではなく、SSHとmacOSのGUIを利用できます。単発のビルドから常時稼働のパイプライン、ユニファイドメモリでの推論実験まで対応します。
3つの構成、5つのロケーション。Shell M4は1日 $21.8 から。まずはご自身のプロジェクトでお試しください。
普段はWindowsやLinuxでコードを書き、リリース時にリポジトリをクラウドMacへ同期してSSHでビルドできます。プロジェクト設定、シミュレータ、署名設定を確認するときはmacOSのGUIに切り替えれば、普段の開発環境を丸ごと移す必要はありません。
Shell M4は、単一プロジェクトのビルドとアーカイブの流れを試すのに適しています。ユニファイドメモリ16GBで足りるかどうかは、プロジェクトの規模、シミュレータの数、同時に実行するツールによって異なります。まず最大メモリ使用量とクリーンビルドの所要時間を記録し、構成変更を検討しましょう。
専有物理ノードをGitLabまたはGitHubのself-hosted runnerとして登録すれば、コミット、テスト、アーカイブ、成果物の転送を一つのパイプラインにまとめられます。ノードは365日稼働します。ジョブのスケジュール、プロセス管理、ビルド後のクリーンアップは、プロジェクトに合わせてチームで設定してください。
依存関係の解決、ビルド、テストに余裕を持たせ、リポジトリ、依存関係のキャッシュ、ビルド成果物を保存するには、ユニファイドメモリ24GB、SSD 512GBのShell M4 Plusがおすすめです。同時実行数はまず1に設定し、CPU、メモリ負荷、ディスク使用量の推移を確認してから増やしましょう。論理的な同時実行数がそのまま処理量になるとは限りません。
fastlaneでジョブを管理し、XCUITestでUIテストを実行。結果バンドルに失敗時の状況を記録します。まずテスト環境を固定してから、対象デバイスを増やしましょう。
プロジェクトに必要なシミュレータランタイムをインストールし、対象デバイスとOSバージョンを固定します。まず xcrun simctl list devices available で利用可能なデバイスを確認し、実際のデバイスIDをテスト設定に記載します。
夜間ジョブでは .xcresult、スクリーンショット、ログを保存します。失敗時は製品の不具合、テストスクリプトの不安定さ、環境の問題を切り分け、無限に再試行して原因を覆い隠さないようにしましょう。
物理Macをレンタルしても、iPhoneやiPadが付属するわけではありません。本サービスのプランにiOSデバイスは含まれず、接続も標準では提供していません。注文前にデバイスの所有者、接続方法、テストツールを確認してください。
お使いのPCに接続したUSBデバイスは、SSHでログインしてもリモート環境には表示されません。テストには接続可能なデバイス、ペアリングと信頼設定、適切な署名権限が必要です。実現可能かどうか、事前にメールでご確認ください。
プロジェクトでfastlaneのテストlaneを設定してから実行してください。ジョブごとに結果ディレクトリを分け、テスト終了後に成果物を転送し、ノード上に長期間保存しないようにします。
bundle exec fastlane scan \
--scheme App \
--result_bundle true \
--output_directory build/test-results
M4 Proチップ、ユニファイドメモリ64GB、SSD 2TBを搭載したShell M4 Proは、MLXやllama.cppを使ってモデルの読み込み、量子化版、コンテキスト長、Metalでの推論を検証するのに適しています。CPUとGPUがユニファイドメモリを共有しますが、メモリ全量をモデルの重みに使えるわけではありません。
モデルを選ぶときは、まず重みのサイズを見積もり、実行用の余裕を確保しましょう。4-bit重みの場合、8Bパラメータで約4GB、32Bで約16GBが目安です。これはパラメータ数に1パラメータあたり0.5バイトを掛けた概算で、量子化メタデータ、KVキャッシュ、ランタイム、システムの使用量は含みません。この数字だけで特定モデルの読み込みを保証することはできません。
ユーザーディレクトリ全体をそのままコピーしないでください。まずプロジェクトを移し、次にツールチェーンを整え、最後にジョブを切り替えます。以下の所要時間は手作業の計画目安で、利用開始までの時間ではありません。ダウンロード、転送、ビルドの時間は別途かかります。
作業の目安:10~30分(転送時間を除く)
初回の移行では、まずリポジトリをcloneします。未コミットのリソースは個別に差分同期してください。以下のコマンドはローカルで実行します。cloud-mac は設定済みのSSHエイリアスです。リポジトリのURLはプロジェクト独自の環境変数から取得します。
ssh cloud-mac 'mkdir -p ~/work'
rsync -av --exclude '.git' \
./App/ cloud-mac:~/work/App/
ssh cloud-mac
git clone "$REPOSITORY_URL" ~/work/repo
確認:コミットIDが一致し、必要なリソースが揃っていること。キャッシュや再作成可能なビルドディレクトリは移行不要です。
作業の目安:20~60分(ダウンロード時間を除く)
リモート環境でXcodeのパスとSDKを確認します。Brewfileがある場合はHomebrewでツールを復元してください。証明書とプロビジョニングプロファイルは、チームで承認された安全な方法で転送し、リポジトリやジョブログに含めないでください。
xcode-select -p
xcodebuild -version
xcodebuild -showsdks
brew bundle --file Brewfile
security list-keychains -d user
確認:依存関係のバージョンが一致し、対象SDKが利用可能であること。実際に実行するユーザーで署名付きアーカイブを作成します。
作業の目安:15~45分(ビルド時間を除く)
組織が発行した登録情報を使ってRunnerを接続します。以下はGitLabのコマンドです。GitHub Runnerでは組織が提供する設定スクリプトを使い、ノード上でサービスの状態を確認してください。トークンは信頼できるセッション内でのみ入力します。
gitlab-runner register
gitlab-runner install
gitlab-runner start
gitlab-runner verify
確認:テストブランチのジョブが新しいタグで実行され、成果物をダウンロードできること。問題がないことを確認してから本番パイプラインを切り替え、切り戻し用に旧実行環境を残します。
移行成功の基準は「SSHでログインできること」ではありません。同じコミットで依存関係のインストール、ビルド、テスト、成果物の転送まで完了できることです。失敗した場合はまずログを保存し、それから次の手順に進みましょう。
同じノードをチームで時間を分けて使えますが、CPU、GPU、メモリ、ディスクは共用です。macOSユーザーを複数作っても、仮想マシンのように分離されるわけではありません。リリース用認証情報や機密プロジェクトには、より厳格な権限設計が必要です。
メンバーごとに別のmacOSユーザーとSSH公開鍵を使い、秘密鍵の共有を避けます。CIには専用アカウントを使い、メンバーがチームを離れたら鍵を削除し、関連するトークンも確認してください。
スケジュールのタイムゾーンを統一し、コミットID、作業ディレクトリ、実行中のプロセス、次のタスクを引き継ぎ記録に明記します。長時間のジョブはRunnerか管理されたセッションで実行し、デスクトップ接続を開いたままにしないでください。
実行ユーザーごとにキーチェーンの権限を確認し、ロック解除用パスワードをshellの履歴に残さないようにします。引き継ぎ前に対話型の署名確認が残っていないことを確認し、他のメンバーのリリース作業中にユーザーセッションを終了しないでください。
コードはリポジトリに、成果物はチームのストレージに戻し、認証情報は別途安全に保管します。利用期限までにバックアップを完了し、ノードを唯一の保管場所にしないでください。更新と期限の情報はコントロールパネルでご確認ください。
5つのロケーションから選択:シンガポール、日本(東京)、韓国(ソウル)、香港、米国東部。主な利用者の接続経路と、コードや成果物の保存場所に合わせて選び、実際の接続を事前にテストしてください。利用可能状況はコントロールパネルに表示される最新情報をご確認ください。
単一プロジェクトのビルドにはShell M4、チームのパイプラインにはShell M4 Plus、大容量メモリを使う推論実験にはShell M4 Proがおすすめです。注文ページで利用期間、ロケーション、追加オプションをご確認ください。
お支払いはUSDT-TRC20、Visa / Mastercard / Amex(Stripe)のみ対応しています。料金は米ドル建てです。実際に利用できる決済方法は、バックエンドAPIの応答に基づきます。