ESP32 iPhone Agent:約7ドルのESP32を「手」、AirPlayミラーリングを「目」にして、視覚モデルが本物のiPhoneを操作する

Published · AI Daily — AI-assisted deep research, methodology & disclosure

onehumanbeing/esp32-iphone-agentはMITライセンスのPythonプロジェクトで、2026年10月11日に作成され、執筆時点でスターは約1,500。AirPlayミラーリングでiPhoneの画面をコンピューターに送り、iPhoneに挿したESP32-S3がUSBマウスとキーボードとして動き、OpenAI互換の視覚モデルが計画して操作する。iPhoneに何もインストールせず、Mac、Xcode、開発者アカウントも不要。信頼性の数値は示されておらず、デモは作者によるものだ。

onehumanbeing/esp32-iphone-agentはPythonで書かれたオープンソースのプロジェクトで、MITライセンスです。2026年10月11日に作成され、最後のプッシュは10月13日、執筆時点でスターは約1,517、フォークは194です。売り込みは一言で、約7ドルのESP32で、AIモデルに本物のiPhoneを使わせる、Macも開発者アカウントも脱獄も不要というものです。デモ動画と更新は作者のXアカウントとYouTubeにあります。READMEには2つの例があります。1つ目は「ホワイトボードを開いて笑顔を描く」で、エージェントはアプリを検索して開き、連続したストロークで顔を描きます。2つ目は「毎日繰り返す午前7時のアラームを設定して保存する」で、時計を開き、時刻のホイールに0700と入力し、繰り返しの曜日を数回のタップでまとめて選び、保存します。各ステップのスクリーンショットは、タップやストロークの印が重ねられて「ステップウォール」に残ります。

なぜこの道を選ぶのでしょうか。READMEによれば、iPhoneの自動化の多くはXCTestやWebDriverAgentで端末を動かします。それにはMac、Xcode、署名済みの補助アプリ、Appleの開発者アカウントが必要で、無料アカウントの署名は7日で切れます。このプロジェクトは人が使うのと同じ経路、つまり画面とポインターを使うので、iPhoneには何もインストールしません。READMEの比較表によれば、この方式は開発者アカウントもXcodeも不要で、MacでもLinuxでも動き、iPhoneにアプリを入れず、ピクセルしか見ないのでゲームを含むどのアプリでも動きます。XCTest系のツールは開発者アカウントとXcodeが必要で、Macのみで、テストランナーのアプリが要り、多くはアクセシビリティツリーに見える範囲に依存します。 技術的には3つの部分から成ります。目はAirPlayミラーリングで、iPhoneが画面をコンピューター上のUxPlayにミラーリングし、GStreamerのパイプラインが映像をエージェントとウェブページ用のJPEGフレームに変換します。手はUSB HIDブリッジで、iPhoneに挿したESP32-S3が標準のUSBマウスとキーボードとして認識されます。iOSの「アシスティブタッチ」をオンにすると、マウスが丸い画面上のポインターを動かし、クリックがタップ、ドラッグがスワイプになります。ボードはWi-Fiでコンピューターにつながり、move、click、typeなどの簡単な行コマンドを実行してokかerrを返し、ロジックはすべてコンピューター側にあります。頭脳は計画役と実行役です。計画役が目標と現在の画面から短い計画を書き、実行役が新しいスクリーンショットごとに、タップ、スワイプ、経路の描画、入力、キー操作、ホームへ戻る、終了のどれかを選びます。2つの役は同じモデルでかまいません。画像を受け付けるOpenAI互換のモデルなら、クラウドのAPIでも自分で動かすものでも使えます。

この経路を成り立たせているのは閉ループです。ポインターは相対移動なので、サーバーがその位置を追跡します。各タップの前にポインターを揺らしてミラー画面上で見つけ、ずれを補正し、使いながら校正を精緻にします。各操作の後には画面が実際に変わったかを確認してモデルに伝えるため、失敗したタップは気づかれて再試行され、誤った状態の上に積み上がりません。同じ操作の繰り返しは再計画を引き起こし、接続の切断や不正な応答からも復帰できます。ウェブUIには、クリックでタップ、ドラッグでスワイプできるライブの画面、ライブのログ、各ステップのスクリーンショットとモデルの推論を残すステップウォール、緊急停止があります。Escでもエージェントが止まり、ポインターが解放されます。HIDAGENT_DEBUG=1にすると、各実行ごとに、すべてのモデル呼び出しと操作を記したsteps.jsonlと、各呼び出しが見たスクリーンショットを保存したフォルダも作られます。 必要なハードウェアは少なく、ESP32-S3のボードが1枚です。作者はSeeed StudioのXIAO ESP32S3の通常版(ピンヘッダーなし、Senseのカメラ版でもPlusでもない)でテストしており、Seeedで約7ドルです。USB-CポートがS3のネイティブUSBにつながるボードなら他のものでも動きます。USB-CのiPhoneは直接挿せ、LightningはLightning-USBカメラアダプターが必要です。コンピューターはmacOSかLinuxで、iPhoneと同じネットワークに置き、UxPlayとサーバーを動かします。完全にローカルで動かす構成として、作者の開発環境はNVIDIA DGX Spark 2台のテンソル並列(TP=2)でnvidia/Qwen3.8-Flash-Next-NVFP4を動かし、思考モードをオフにして1動作あたり約1.3秒、1計画あたり約2秒です。 読者への注意がいくつかあります。第一に、これらはすべてプロジェクト自身の説明とデモです。READMEにはタスクの成功率、失敗率、多数のタスクでの評価はなく、デモを信頼性の証明と受け取らないでください。第二に、エージェントは端末全体を操作するため、メール、銀行、メッセージのアプリに触れうるうえ、クラウドモデルではスクリーンショットがすべてモデル提供元に送られます。テスト用の端末を使い、重要なアカウントにはサインインせず、緊急停止をすぐ押せるようにしてください。第三に、iPhone自動化の敷居を下げると同時に、物理的に接続して端末を操る敷居も下げます。これはテスターには便利で、セキュリティ担当者には考慮すべきリスクです。全体としては、発想が巧みで試す価値のある小さなプロジェクトですが、まだ非常に初期の段階です。

Sources

FAQ

「見る」と「動かす」はどう実現していますか。

目はAirPlayミラーリングです。iPhoneが画面をコンピューター上のUxPlayにミラーリングし、GStreamerのパイプラインが映像をエージェントとウェブページ用のJPEGフレームに変えます。手はUSB HIDブリッジです。iPhoneに挿したESP32-S3が標準のUSBマウスとキーボードとして認識され、iOSの「アシスティブタッチ」をオンにするとマウスが画面上のポインターを動かし、クリックがタップ、ドラッグがスワイプになります。ボードはWi-Fiでコンピューターにつながり、move、click、typeなどの簡単な行コマンドを実行するだけで、ロジックはすべてコンピューター側にあります。

どうやって正確にタップしますか。

ポインターは相対移動なので、サーバーが位置を追跡します。各タップの前にポインターを揺らしてミラー画面上で見つけ、ずれを補正し、使いながら校正を精緻にします。各操作の後には画面が実際に変わったかを確認してモデルに伝えるため、タップの失敗は気づかれて再試行され、誤った状態の上に積み上がりません。同じ操作の繰り返しは再計画を引き起こし、接続の切断や不正な応答からも復帰します。頭脳は計画役と実行役の2つで、計画役が目標と現在の画面から短い計画を書き、実行役が新しいスクリーンショットごとに次の操作を選びます。同じモデルでもかまいません。

どんなハードウェアが必要で、リスクは何ですか。

ESP32-S3のボードが必要です。作者はSeeed StudioのXIAO ESP32S3の通常版でテストしており、約7ドルです。USB-CのiPhoneは直接挿せ、Lightning機種にはアダプターが要ります。コンピューターはmacOSかLinuxで、iPhoneと同じネットワークに置きます。視覚モデルはOpenAI互換のAPIならクラウドでもローカルでもかまいません。リスクとして、端末全体を操作できるエージェントはあなたのあらゆるアカウントに触れられます。ウェブページには緊急停止があり、Escでも止まります。クラウドモデルではスクリーンショットがモデル提供元に送られます。READMEに成功率の評価はなく、デモは作者による紹介と受け取ってください。