iOSアプリの開発中、シミュレータの画面をチームメンバーに見せたい、AIエージェントに操作させたいと思ったことはありませんか。Evan Bacon氏が公開した「serve-sim」を使えば、コマンド1つでiOSシミュレータをブラウザに配信し、リモートから操作できます。

この記事でわかること

  • serve-simの概要と解決する課題
  • インストールと基本的な使い方
  • Claude DesktopやCodexなどAIエージェントとの連携方法
  • 類似ツールとの違い

serve-simとは

https://github.com/EvanBacon/serve-sim

serve-simは、macOS上で動作するiOSシミュレータの画面をブラウザに配信するオープンソースツールです。Expo開発者のEvan Bacon氏が作成し、Apache-2.0ライセンスで公開しています。

内部ではSwift製のヘルパーバイナリがsimctl io経由でシミュレータのフレームバッファをキャプチャし、MJPEGストリームとWebSocket制御チャネルとして公開します。npmパッケージにSwiftバイナリが同梱されているため、Xcodeプラグインやアプリへの組み込みは不要です。

どんな課題を解決するのか

iOSシミュレータは基本的にmacOS上でしか操作できません。リモートのMac miniでシミュレータを動かしている場合、画面を確認するにはVNCやスクリーン共有が必要で、操作のレイテンシも大きくなります。

また、AIエージェントにiOSアプリを操作させたい場面でも障壁がありました。シミュレータの画面をスクリーンショットで取得し、座標を計算してタップを送信する処理を自前で組む必要があったのです。

serve-simはこれらの問題をnpx serve-simの一行で解決します。ブラウザからの操作、AIエージェントからのプログラム制御、どちらにも対応した統一インターフェースを提供します。

主な機能

60FPSのライブストリーミング: シミュレータの画面をブラウザ上でリアルタイム表示します。Apple Watch、iPad、iPhoneのいずれにも対応しています。

ジェスチャー操作: ブラウザ上でスワイプ、ピンチズーム(Optionキー併用)、キーボード入力が可能です。下からスワイプしてホーム画面に戻る操作もそのまま動作します。

ドラッグ&ドロップ: ブラウザからシミュレータへ画像や動画をドラッグ&ドロップで転送できます。

シミュレータログの転送: デバイスのログがブラウザのコンソールに転送されるため、ブラウザ操作系のMCPツールからログを読み取れます。

デーモンモード: --detachフラグでバックグラウンド実行が可能です。複数のシミュレータを同時に配信することもできます。

インストールと使い方

前提条件はmacOSとXcodeコマンドラインツール(xcrun simctlが使える状態)だけです。Node.jsがあれば以下のコマンドで起動できます。

npx serve-sim

起動するとhttp://localhost:3200でプレビューUIが開きます。起動中のiOSシミュレータを自動検出して接続するため、事前にシミュレータを立ち上げておくだけで使えます。

特定のデバイスを指定する場合は引数で渡します。

npx serve-sim "iPhone 16 Pro"

バックグラウンドで起動したい場合は--detachを付けます。

npx serve-sim --detach

稼働中のストリーム一覧は--list、停止は--killで確認・操作できます。

AIエージェントとの連携

serve-simの大きな特徴は、AIエージェントとの連携を前提に設計されている点です。

Claude Code Desktopとの連携

.claude/launch.jsonに以下の設定を追加すると、Claude Code Desktopからserve-simを起動できます。

{
  "version": "0.0.1",
  "configurations": [
    {
      "name": "ios",
      "runtimeExecutable": "npx",
      "runtimeArgs": ["serve-sim"],
      "port": 3200
    }
  ]
}

CodexやCursorとの連携

ブラウザ操作系のエージェントツールであれば、serve-simのURLを開くだけでシミュレータを操作できます。Evan Bacon氏自身も、Codex Desktopからserve-sim経由でiPhoneアプリを直接ビルド・操作するデモを公開しています。

Expoプロジェクトへの組み込み

Expoを使っている場合はmetro.config.jsにミドルウェアを追加することで、npx expo startと同時にserve-simも起動し、http://localhost:8081/.simでシミュレータにアクセスできるようになります。開発サーバーとシミュレータプレビューが一体化する形です。

類似ツールとの違い

同じ領域のツールとしてjasonkneen氏の「agent-simulator」があります。こちらはReact Nativeのコンポーネントツリーの表示、15個のMCPツール、ソースコードの逆引きなど、React Native開発者向けの高度なインスペクション機能が充実しています。一方、Rustツールチェーンが必要でセットアップの手間がかかります。

serve-simはフレームワーク非依存で、あらゆるiOSアプリに対応します。npx一発で起動できる手軽さと、デーモンモードやミドルウェア統合による運用のしやすさが強みです。React Nativeの深いデバッグが必要ならagent-simulator、汎用的にシミュレータを配信・操作したいならserve-simという使い分けになります。

まとめ

serve-simは、iOSシミュレータの配信とリモート操作のハードルを大幅に下げるツールです。AIエージェントによるモバイルアプリのテスト自動化や、リモート環境でのシミュレータ共有など、活用の幅は広いです。macOSとNode.jsがあればnpx serve-simだけで試せるので、iOSアプリ開発に関わる方はぜひ触れてみてください。