ios-simulator について
Apple の `xcrun simctl` と `idb` を使って iOS アプリをシミュレーターでテストするスキルです。対象の選定、UI 操作、結果検証を案内し、デバイスの特定と安全な操作を重視します。
主な機能
- 01対象シミュレーターの選定と確認
- 02`simctl` によるアプリの導入と起動
- 03`idb` による UI の確認と操作
- 04事後条件の確認とテスト証拠の保存
- 05タイムアウトや危険な操作への慎重な対応
活用シーン
- 01指定シミュレーターでの iOS アプリの問題再現
- 02アクセシビリティ要素を使った UI チェック
- 03テスト証拠となるスクリーンショットやログの保存
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ tristanmanchester/ agent-skills --skill ios-simulatorインストール後、Claude Code で/ios-simulatorを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/OPERATIONS.mdscripts/run.mjstests/run.test.mjs詳細
iOS Simulator
ライフサイクルとアプリの操作には Apple の xcrun simctl を、アクセシビリティと入力には最新の idb を使用します。別のシミュレーター API ではなく、ネイティブのコマンド構文を維持してください。SKILL_DIR はこのファイルがあるディレクトリに解決してください。アプリリポジトリの scripts/ ディレクトリではありません。
ターゲットを確定する
xcode-select -p
xcodebuild -version
xcrun simctl list --json
idb --help
idb list-targets
Xcode/ランタイム、正確なシミュレーターの UDID、アプリのバンドル ID、ビルド/構成、再現手順を記録します。実際のインベントリから選択してください。あいまいな名前に最初に一致した項目を選んだり、別の起動済みデバイスに黙って切り替えたりしないでください。すべての操作で同じ明示的な UDID を使用してください。ローカルのターゲットを想定する前に、認証情報を公開せずに有効な IDB_COMPANION/IDB_UDID の設定を確認してください。
許可されている場合に限り、不足しているツールまたはランタイムをインストールしてください。現在の上流の手順は brew install facebook/fb/idb で、クライアントとコンパニオンの両方が含まれます。スタンドアロンの Command Line Tools ではなく、フルバージョンの Xcode が必要です。ホストの要件はインストール手順で確認してください。サポート対象外のバイナリを別のアーキテクチャに無理にインストールしないでください。クライアントは明示的に許可されたリモート Mac に接続できます。リモート実行ツールを勝手に作り出したり、コンパニオンをパブリックネットワークに公開したりしないでください。
実行、観察、操作、検証
- インストール済みバージョンで
xcrun simctl help COMMANDまたはidb ui COMMAND --helpを確認します。未対応の構文はセットアップ上の問題であり、推測で代替手段を試す理由にはなりません。 - 必要な場合にのみ起動し、
xcrun simctl bootstatus "$UDID" -bで待機します。起動要求はアプリの準備完了を示すものではありません。すでに起動済みというエラーを許容できるのは、意図したターゲットの実際の状態を確認した後に限ります。 - シミュレーター対応の
.appをインストールし、正確なバンドルを起動して、初期のスクリーンショット/アクセシビリティ状態を取得します。 - 現在の UI を読み取り、意図した一意の要素を特定して、許可された操作を 1 回実行し、期待される事後条件を確認します。レイアウトや画面遷移に変化があった場合は、再度読み取ってください。
- 役に立つ最小限の証拠を保存し、プロセスの完了とアプリの動作を区別します。スクリーンショットの撮影やタップの成功だけでは、テストに合格したことになりません。
xcrun simctl install "$UDID" /absolute/path/MyApp.app
xcrun simctl launch "$UDID" com.example.MyApp
idb ui describe-all --udid "$UDID"
idb ui text 'test text' --udid "$UDID"
xcrun simctl io "$UDID" screenshot /absolute/path/evidence.png
現在フォーカスされているフィールドを対象にするのは idb text ではなく idb ui text です。引数には実際の認証情報ではなく、テスト用の値を使用してください。利用可能な場合は、検証済みのアクセシビリティ識別子を優先してください。現在のマーカー照合は完全一致ではなく、最初の部分文字列一致です。タップする前に候補を確認し、曖昧さがある場合は実行しないでください。対応バージョンでは --expected-value で保護してください。座標による代替操作には、最新の画像、正しい座標スケーリング、確認済みのターゲットが必要です。これはアクセシビリティによるアクティベーションと同等ではありません。
残りのライフサイクル、権限、プッシュ通知、クリップボード、録画、ログ、テストのワークフローについては、操作と診断を参照してください。
信頼性の高いコマンド結果
オプションのヘルパーは、シェルを介さず、制限時間付きで非対話型コマンドを実行します。
node "$SKILL_DIR/scripts/run.mjs" --timeout-ms 120000 -- \
xcrun simctl bootstatus "$UDID" -b
このヘルパーは JSON エンベロープを報告し、起動失敗、子プロセスの終了コードがゼロ以外、シグナル、タイムアウト、出力超過の場合にゼロ以外の終了コードを返します。キャプチャされる出力の合計はデフォルトで 1 MiB です。--max-bytes で上限を最大 16 MiB まで調整できます。コマンド独自の結果を解析したり、操作を承認したり、出力をマスキングしたり、リモート処理の終了を保証したりするものではありません。ネストされた結果を確認し、状態を検証してください。タイムアウトした書き込み操作はすでに実行されている可能性があります。タップ、購入、プッシュ通知の送信、破壊的な操作をむやみに繰り返さないでください。
録画、対話型ツール、ストリーミングログは、この制限付きヘルパーを介さず、明示的にライフサイクルを制御して直接実行してください。idb-repl など、一部の実行インターフェースでは、終了コードがゼロでも出力に実行エラーが報告されます。プロセスのステータスだけでは、結果を検証できません。
安全性と受け入れ
シミュレーターアプリから実際のサービスにアクセスできる場合があります。UI 入力、URL、プッシュ通知、権限、アンインストール、消去、削除は変更操作であり、一律に安全な操作ではありません。テスト用アカウント/バックエンドと、ユーザーが許可した範囲を使用してください。破壊的な操作の前に対象とデータ損失を確認してください。無関係な失敗を解決するために、既定で all を指定したり、消去したりしないでください。スクリーンショット/ログは非公開にし、共有する前に内容を確認してください。
ビルド/UDID、実行した操作、期待結果と実際の結果、証跡のパス、未解決の失敗を報告してください。シミュレーターでの成功は、実機でのパフォーマンス、ストア課金、ハードウェアの動作、または提出準備が整っていることを示すものではありません。
メンテナー向け確認:node --test "$SKILL_DIR/tests/run.test.mjs"。これらのランナーテストはローカルのサブプロセスの動作を検証するものであり、Xcode、idb、実際のアプリケーションは対象としていません。