この記事ではClaude Codeに特化して解説します。Claude Code全般は Claude Code完全ガイド2026:インストールから本番運用まで をご覧ください。
iOS Simulator Skillとは
iOS Simulator Skillは、Claude CodeがiOSシミュレータを直接操作できるようにするPythonスキルセットです。GitHubで公開されており(conorluddy/ios-simulator-skill)、AIエージェントがiOSアプリのテスト・デモ・検証をシミュレータ上で自律的に実行できる環境を提供します。
XcodeのiOSシミュレータはmacOS上で動作する仮想デバイス環境です。このスキルセットを導入することで、Claude Codeはシミュレータの起動・アプリインストール・UIの操作・スクリーンショット取得といった一連の操作を、自然言語の指示から自動実行できます。
従来の座標ベース自動化はUIレイアウト変更のたびにスクリプト修正が必要でした。iOS Simulator Skillはテキスト・型・IDによるセマンティックナビゲーションを採用し、UIリデザイン後も大幅な再実装なしにテストを維持できます。
主な機能
- セマンティックナビゲーション:座標ではなくテキスト・コンポーネント種別・アクセシビリティIDで要素を検出する
- 21本の本番対応スクリプト:ブート・シャットダウン・アプリインストール・起動・タップ・テキスト入力・スクリーンショット・シミュレータ一覧取得など
- ゼロコンフィグ:macOS上のXcode環境があれば追加設定なしに動作開始できる
- 自動UDID検出:使用するシミュレータのデバイスIDを自動取得するため毎回指定が不要
- 構造化出力:JSON形式およびフォーマット済みテキストで出力を提供し、AIが解析しやすい
- バッチ操作:複数デバイスの一括ブート・削除・消去に対応
- IDB統合:Facebook製のiOS Developer Bridge(IDB)と連携した高度な操作が可能
AIエージェントとiOSシミュレータの連携フロー
セマンティックナビゲーション vs 座標ベース
iOS自動化の従来手法は座標指定(x=210, y=450でタップ)でした。この方式の問題点は、画面サイズの違いや、UIリデザインによる要素移動でスクリプトが即座に壊れることです。
iOS Simulator Skillのセマンティックナビゲーションは、Xcodeのアクセシビリティツリーを通じて要素を意味的に特定します。
# 座標ベース(脆弱な方式)
tap(x=210, y=450) # UIが変わると即座に壊れる
# セマンティックナビゲーション(iOS Simulator Skillの方式)
tap_element(text="ログイン") # テキストで要素を特定
tap_element(type="XCUIElementTypeButton", index=0) # コンポーネント種別で特定
tap_element(accessibility_id="login_button") # アクセシビリティIDで特定
| 比較項目 | 座標ベース | セマンティックナビゲーション |
|---|---|---|
| UIレイアウト変更への耐性 | 低い(即座に壊れる) | 高い(要素が存在する限り動作) |
| 異なる画面サイズ対応 | 再実装が必要 | そのまま動作 |
| 可読性 | 低い(数値の羅列) | 高い(意図が明確) |
| デバッグのしやすさ | 難しい | 容易 |
| AI生成との親和性 | 低い | 高い(自然言語に近い) |
導入方法
前提条件
- macOS(Xcode動作環境)
- Xcode(iOS Simulatorを含む)
- Python 3.x
- Claude Code
インストール手順
# 1. リポジトリをクローン
git clone https://github.com/conorluddy/ios-simulator-skill.git
# 2. Claude Code のスキルディレクトリに配置
cp -r ios-simulator-skill ~/.claude/skills/ios-simulator-skill
# 3. スクリプトの実行権限を付与
chmod +x ~/.claude/skills/ios-simulator-skill/*.py
基本的な使用例
シミュレータの一覧を取得する:
# 利用可能なiOSシミュレータを一覧表示
python ~/.claude/skills/ios-simulator-skill/list_simulators.py
出力例(JSON形式):
{
"simulators": [
{
"name": "iPhone 15 Pro",
"udid": "A1B2C3D4-E5F6-7890-ABCD-EF1234567890",
"state": "Shutdown",
"runtime": "iOS 17.2"
},
{
"name": "iPhone 14",
"udid": "B2C3D4E5-F6A7-8901-BCDE-F12345678901",
"state": "Booted",
"runtime": "iOS 16.4"
}
]
}
シミュレータを起動してアプリをインストール・実行する:
# シミュレータを起動
python ~/.claude/skills/ios-simulator-skill/boot_simulator.py \
--udid "A1B2C3D4-E5F6-7890-ABCD-EF1234567890"
# アプリをインストール
python ~/.claude/skills/ios-simulator-skill/install_app.py \
--udid "A1B2C3D4-E5F6-7890-ABCD-EF1234567890" \
--app-path "./build/MyApp.app"
# アプリを起動
python ~/.claude/skills/ios-simulator-skill/launch_app.py \
--bundle-id "com.example.myapp"
UI操作とスクリーンショット:
# テキストでUI要素をタップ
python ~/.claude/skills/ios-simulator-skill/tap_element.py \
--text "ログイン"
# テキストフィールドに入力
python ~/.claude/skills/ios-simulator-skill/type_text.py \
--accessibility-id "email_field" \
--text "[email protected]"
# スクリーンショットを取得
python ~/.claude/skills/ios-simulator-skill/screenshot.py \
--output "./screenshots/login_screen.png"
Claude Codeに「iOSシミュレータでアプリのオンボーディングフローをテストして、各ステップのスクリーンショットを撮って」と指示すると、スキルを使って自律的に操作・記録を行います。
主要スクリプト一覧
| スクリプト名 | 機能 |
|---|---|
list_simulators.py |
利用可能なシミュレータ一覧を取得 |
boot_simulator.py |
指定したシミュレータを起動 |
shutdown_simulator.py |
シミュレータをシャットダウン |
install_app.py |
.appバンドルをインストール |
launch_app.py |
バンドルIDでアプリを起動 |
tap_element.py |
セマンティックナビゲーションでタップ |
type_text.py |
テキストフィールドに文字を入力 |
screenshot.py |
スクリーンショットを保存 |
erase_simulator.py |
シミュレータのデータを消去(リセット) |
batch_boot.py |
複数シミュレータの一括起動 |
ユースケース
AIドリブンなiOSアプリテスト
Claude Codeと組み合わせることで、テスト仕様を自然言語で記述しAIが実行する体制が構築できます。OpenHandsのようなAIコーディングエージェントと組み合わせることで、テストコード生成から実行まで自動化できます。
CI/CDパイプラインへの組み込み
GitHub ActionsなどのmacOSランナー上でスクリプトを呼び出し、PRごとのシミュレータテストを自動化できます。
# .github/workflows/ios-sim-test.yml
jobs:
simulator-test:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Boot Simulator
run: |
python .claude/skills/ios-simulator-skill/boot_simulator.py \
--udid "$"
- name: Run App Tests
run: |
python .claude/skills/ios-simulator-skill/launch_app.py \
--bundle-id "com.example.myapp"
アプリデモの自動記録
リリースノートやドキュメント用に、シミュレータ上のアプリ操作を自動実行してスクリーンショットを連続取得するワークフローが構築できます。
iOSテストツールの比較
| ツール | 操作方式 | AI親和性 | 対象 | 特徴 |
|---|---|---|---|---|
| iOS Simulator Skill | セマンティック | 高い | シミュレータ | Claude Code統合、ゼロコンフィグ |
| XCTest | コードベース | 中程度 | 実機・シミュレータ | Apple公式、Xcode統合 |
| Appium | WebDriver | 中程度 | 実機・シミュレータ | クロスプラットフォーム |
| Maestro | YAML定義 | 中程度 | 実機・シミュレータ | 宣言的、シンプルな構文 |
| EarlGrey | コードベース | 低い | 実機・シミュレータ | Google製、Googleアプリ向け |
iOS Simulator SkillはAIエージェントとの連携を前提とした設計が特徴です。Browser UseがWebブラウザをAIエージェントに操作させる仕組みと同様のアプローチを、iOS環境に適用したツールといえます。
注意事項
- macOS専用:XcodeはmacOS限定のため、このスキルはmacOSでのみ動作します
- Xcode要インストール:Xcodeおよびコマンドラインツール(
xcrun、simctl)が必要です - 実機テストには別途対応:このスキルはシミュレータ専用です。実機でのテストにはXCTestなど別のツールが必要です
関連記事: Claude Code完全ガイド2026:インストールから本番運用まで