Claude CodeにiOSシミュレーターを操作させる方法
想像してみてください:ターミナルに座ってClaude Codeとチャットしながら、Xcodeを手動で開いたり、シミュレーターで適切なボタンを見つけたり、コンソールからログをコピーしたりする必要はなく、ただ「ログイン画面がiPhone 15でどのように見えるか確認して、サインインボタンをタップして」と書くだけ。そうするとAIがそれを実行してくれる。魔法のように聞こえるが、実際にはios-simulator-skillスクリプトコレクションの作品だ。
このリポジトリを見つけたのは、エージェント型AIをモバイル開発に統合する方法を探していたときだ。プロジェクト著者のConor Ladhyは、Claudeを本格的なQAエンジニアや開発アシスタントに変える22のPythonとBashスクリプトを集めた。Claudeはアプリのインターフェースを「見て」操作できるようになる。
Xcodeがあるのに、なぜ面倒を起こすのか
通常、AIエージェントがiOSプロジェクトとやり取りしようとすると、大量のビルドログと重いスクリーンショット 때문에悪夢のような状況になる。標準出力そのままをClaudeに食べさせると、xcodebuildコンテキストウィンドウが数秒でジャンクデータで溢れる。
このプロジェクトはエレガントに問題を解決する。スクリプトはフィルターとして機能する:神経ネットワークには本質的なものだけを供給する。認証ログ400行の代わりに、Claudeはクリーンな15行のテキストを受け取る。これによりトークンの節約になるが、それ以上に重要なのは、情報のオーバーロードによるモデルの「幻覚」を防げることだ。
このツールセットできること
このプロジェクトは2つの主要な課題に取り組む:アプリのビルドとシミュレーターの操作。
ノイズのないスマートビルド
build_and_test.pyスクリプトは標準のAppleツールをラップする。ビルドを実行すると、Claudeは短いステータス行と結果IDだけを見る。問題が発生した場合、モデルは特定のIDのエラーや警告をリクエストできる。これは段階的データ開示と呼ばれ、すべてを一度にダンプするのではなく、オンデマンドで詳細を提供する。
Accessibilityによるナビゲーション
これはおそらく最もクールな機能だ。スクリーンショットでボタンの座標を推測しようとする代わりに(これはしばしば失敗につながる)、スクリプトはiOS Accessibility APIを使用する。Claudeは要素をセマンティックな意味で検索する。例えば、「Login」というテキストを見つけてクリックするコマンドは、座標でクリックするx: 320, y: 400よりずっと確実に動作する。さらに、要素ツリーのテキスト説明は、画像と比較してトークン消費を数百倍も削減できる。
スクリーンショットの最適化
ビジュアル検証が不可欠な場合(デザインの比較やレイアウトバグの発見など)、スクリプトはスクリーンショットを自動的に圧縮してリサイズする。これによりコンテキスト負荷を90〜95%削減できる。
内部動作の仕組み
リポジトリには、Pythonスクリプトのコレクションが含まれており、xcrun simctlと(FacebookのiOS自動化ツールである)idbを呼び出す。
リストから興味深いツールをいくつか紹介しよう:
screen_mapper.py— 画面を分析し、すべてのインタラクティブ要素のリストをコンパイルする。gesture.py— スワイプ、ピンチ、さらには引っ張って更新を実行できる。privacy_manager.py— 写真、連絡先、位置情報へのアクセス許可を1つのコマンドでアプリに付与できる。これまではシステムアラートを手動でクリックする必要があった自動テストにとって、これは信じられないほど便利だ。
興味深いことに、著者はWCAG規格へのアプリ準拠を確認するためのaccessibility_audit.pyさえ追加している。Claudeは画面を巡回して、VoiceOver用のラベルを忘れた箇所を教えてくれる。
自分で実行する方法
このプロジェクトはClaude Code用の「スキル」として位置づけられているが、実際には独立したスクリプトのセットであり、個別に使用することも可能だ。
Claude Codeを使用している場合は、インストールは次のようになる:
/plugin marketplace add conorluddy/ios-simulator-skill
/plugin install ios-simulator-skill@conorluddy
必要な依存関係は、Xcode Command Line Tools、Python 3、そしてできればHomebrewでインストールしたidbだ。スクリーンショットの比較を計画している場合は、pip経由でPillowライブラリもインストールする。
実用的なメリット
誰がこれを活用できるか?第一に、ルーティンタスクを自動化したい人だ。例えば、Claudeに以下を依頼できる:
- 「プロジェクトをビルドしてiPhone 14 Proで起動し、すべての画面のスクリーンショットをドキュメント用に撮って」
- 「認証段階でテストがクラッシュする理由を調べて、過去2分間のログだけを表示して」
- 「アプリが遅いインターネットと無効化された位置情報でどのように動作するか確認して」
著者自身のテストでは、Claude + ios-simulator-skillの組み合わせはシナリオ完了率100%を示したが、これらのツールなしの「ベア」Claudeは半分以下の成功率だった。
試す価値はあるか
iOS開発者で、AIエージェントをワークフローに統合し始めているなら、このプロジェクトは必須だ。冗長なAppleツールと言語モデルが必要な簡潔さとの間の非互換性という主なペインポイントを取り除く。
もちろん、プロジェクトのセットアップには環境構築が必要で、idb新しいmacOSバージョンでは時に不安定になることがあるが、セマンティック要素ツリーを通じてシミュレーターを制御するというアイデアは、現代の自動化が目指すべき姿だ。スクリプトはシンプルに書かれているため、自分のニーズに合わせてカスタマイズしやすい。CI/CDパイプライン用に 필요한部分だけを抽出して使うこともできる。
関連プロジェクト