AgentSkillsCN

ios-simulator-debug

使用 AI 操作 iOS 模拟器进行调试和验证。构建→启动→UI 操作→截图→分析的循环。 使用时机:(1) 需要确认 UI 行为时,(2) “用模拟器确认一下”、“拍个截图”, (3) 复现和调查 Bug 时,(4) 验证 UI 实现时,(5) 确认无障碍性时 前提条件:ios-simulator MCP 服务器已启用(通过 apple-platform-plugin 自动设置)

SKILL.md
--- frontmatter
name: ios-simulator-debug
context: fork
description: |
  iOS SimulatorをAIで操作してデバッグ・検証。ビルド→起動→UI操作→スクショ→分析のループ。
  使用タイミング: (1) UIの動作確認が必要な時、(2) 「Simulatorで確認して」「スクショ撮って」、
  (3) バグの再現・調査時、(4) UI実装の検証時、(5) アクセシビリティの確認時
  前提条件: ios-simulator MCPサーバーが有効化されていること(apple-platform-plugin導入で自動設定)

iOS Simulator Debug スキル

iOS SimulatorをAIで操作し、ビルド→起動→操作→スクショ→分析のデバッグループを実行する。

前提条件

必須

  • macOS
  • Xcode(Simulator含む)
  • Node.js(npx実行用)
  • Facebook IDB: brew tap facebook/fb && brew install idb-companion

MCP設定(自動)

apple-platform-pluginを導入すると、.mcp.jsonによりios-simulator MCPサーバーが自動で有効化される。

ワークフロー

Step 1: 要件確認

以下をユーザーに確認:

  1. 対象アプリ

    • Xcodeプロジェクト/ワークスペースのパス
    • スキーム名
    • Bundle ID
  2. 検証内容

    • 確認したい画面・機能
    • 再現したいバグの手順
    • 期待する動作
  3. Simulator設定

    • デバイス(iPhone 15, iPad等)
    • OSバージョン

Step 2: ビルド&起動

bash
# 1. Simulatorを開く(MCPツール使用可能になったら)
# → open_simulator ツールを使用

# 2. アプリをビルド
xcodebuild -workspace App.xcworkspace \
  -scheme App \
  -sdk iphonesimulator \
  -destination 'platform=iOS Simulator,name=iPhone 15' \
  -derivedDataPath ./build \
  build

# 3. アプリをインストール
# → install_app ツールで ./build/Build/Products/Debug-iphonesimulator/App.app をインストール

# 4. アプリを起動
# → launch_app ツールで Bundle ID を指定して起動

Step 3: UI操作&検証ループ

code
現状把握 → 操作 → 結果確認 → 分析 → 次のアクション
    ↑                                      ↓
    └──────────── 繰り返し ←───────────────┘

MCPツール一覧

Simulator管理

ツール説明使用例
open_simulatorSimulatorアプリを起動最初に実行
get_booted_sim_id起動中のSimulator IDを取得状態確認
install_app.app/.ipaをインストールビルド後
launch_appBundle IDでアプリ起動インストール後

UI検査

ツール説明使用例
ui_describe_all画面全体のアクセシビリティ要素を取得現状把握
ui_describe_point特定座標の要素情報を取得要素特定
ui_view圧縮スクリーンショット取得クイック確認
screenshotフルスクリーンショット保存証跡保存

UI操作

ツール説明パラメータ
ui_tapタップx, y座標
ui_typeテキスト入力入力文字列
ui_swipeスワイプ開始/終了座標、duration

録画

ツール説明
record_video動画録画開始(H.264/HEVC)
stop_recording録画停止

デバッグパターン

パターン1: 画面遷移の確認

code
1. ui_describe_all で現在画面を把握
2. screenshot で初期状態を保存
3. ui_tap でボタンをタップ
4. ui_describe_all で遷移後の画面を確認
5. screenshot で結果を保存
6. 期待と比較して分析

パターン2: 入力フォームのテスト

code
1. ui_describe_all でフォーム要素を特定
2. ui_tap でテキストフィールドをタップ
3. ui_type でテキスト入力
4. ui_tap で送信ボタンをタップ
5. ui_describe_all で結果を確認

パターン3: スクロールコンテンツの確認

code
1. screenshot で現在の表示を保存
2. ui_swipe で下にスクロール
3. screenshot でスクロール後を保存
4. 必要に応じて繰り返し

パターン4: バグ再現の録画

code
1. record_video で録画開始
2. 一連の操作を実行
3. stop_recording で録画停止
4. 動画で再現手順を確認

アクセシビリティ検証

ui_describe_all の結果から以下をチェック:

  • すべてのインタラクティブ要素にラベルがある
  • 論理的なフォーカス順序
  • ボタンとリンクの区別が明確
  • 動的コンテンツの通知

トラブルシューティング

Simulatorが起動しない

bash
# Simulatorをリセット
xcrun simctl shutdown all
xcrun simctl erase all

IDBが見つからない

bash
# IDBをインストール
brew tap facebook/fb
brew install idb-companion

# パスを確認
which idb

アプリがインストールできない

bash
# 署名を確認
codesign -dv --verbose=4 App.app

# Simulatorに直接インストール
xcrun simctl install booted App.app

出力ディレクトリ

スクリーンショット・動画のデフォルト保存先: ~/Downloads

環境変数で変更可能:

bash
export IOS_SIMULATOR_MCP_DEFAULT_OUTPUT_DIR=/path/to/output

ベストプラクティス

  1. 操作前に必ず現状把握: ui_describe_allで画面状態を確認
  2. スクショは証跡として保存: 問題発見時はscreenshotで記録
  3. 座標はui_describe_allから取得: ハードコードせず動的に取得
  4. エラー時は画面を確認: 期待と異なる場合はスクショで状態確認
  5. 複雑な操作は録画: 再現手順を動画で残す