0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

mobile-mcpでiOSアプリのUIテストを試してみて気づいたこと

Posted at

表題の通り、mobile-mcpを使ってiOSアプリのUIテストを試してみていくつか学びになったことがありましたので、まだ使用されたことのない方向けに執筆したいと思います。

mobile-mcpとは

LLMからiOS/Android 端末を自動操作するためのMCPサーバになります。過去にUIテストをやったことのある方ならご存知かも知れませんが、内部的にはAppiumが使われており、それをラップしてLLMから操作できるようにしたものと理解しておけば良いかと思います。

セットアップ

簡単にですが、セットアップ手順についてまとめておきます。
内部的にはAppiumを使用しているとお話しましたが、このAppiumを利用するにあたり、WebDriverAgentが必要になりますので、まずはこちらが動作できるようにします。

git clone --depth 1 https://github.com/appium/WebDriverAgent.git

// ここではiPhone 16を起動するように指定
// xcodeはインストールされている前提です
cd WebDriverAgent
xcodebuild -project WebDriverAgent.xcodeproj \
  -scheme WebDriverAgentRunner \
  -destination 'platform=iOS Simulator,name=iPhone 16' \
  test

あとはmcpを設定するだけです。私の場合はClaude Codeを使用していますので、以下のコマンドを実行しました。

claude mcp add mobile -- npx -y @mobilenext/mobile-mcp@latest

実際に使ってみて感じた課題

mobile-mcpでは利用可能なツールが複数あり、例えばmcp_mobile_click_on_screen_at_coordinatesは指定座標をクリックする操作を提供します。
例えば「ログインボタンを押して」と指示を出すと、上記コマンドが実行されて実際に操作されるのですが試した感じ一発ではいけず、mcpと何度か会話していってクリックする要素の座標値を調整していくという作業が発生しました。(この辺りは使用するLLMによって変わる可能性はあるかと思います)
上記の会話で定まった座標値を次回以降のプロンプトで含めるようにすれば、その実行している端末に限り次回以降のテストはスムーズにいくと思いますが、端末を変えれば座標値も変わるのでこれでは持続性がないと感じました。

課題への対応

iOSではaccessibilityIdentifierという要素に固有のIDを付与をすることができます。mobile-mcpのツールでmobile_list_elements_on_screenというのがあり、これは画面上の要素一覧を取得するものになるのですが、これを使って付与したIDを元に操作対象の要素を特定させます。
例ですが、実行手順書を作成して下記のように記載しました。

## 要素特定の基本ルール

タップ操作を行う前に、必ず `mobile_list_elements_on_screen` で要素一覧を取得し、
`accessibilityIdentifier`(identifier)を使って目的の要素を特定してください。

### accessibilityIdentifierの重要性

accessibilityIdentifierを使うことで、UIの見た目(テキストやラベル)に依存せず、
一意の識別子で要素を特定できます。

### Step 1: ログインボタンをタップする

**要素の特定方法**:
1. `mobile_list_elements_on_screen` で要素一覧を取得
2. `identifier: "login_button"` を探す(ログイン画面では「ログイン」ボタン)
3. その要素の `coordinates` から中心座標を計算する

ツール: mobile_click_on_screen_at_coordinates
パラメータ:
  - device: "iPhone 16"
  - x: (login_buttonの中心x座標)
  - y: (login_buttonの中心y座標)

上記手順だと、mcpで何度も要素の座標の調整をやりとりすることなくだいたい一発で該当の要素を操作してくれるようになりました。

手順まとめ

  1. accessibilityIdentifierを付与
  2. mobile_list_elements_on_screenで最初に操作対象の要素を取得
  3. mobile_click_on_screen_at_coordinatesで操作を行う

終わりに

使うにはそれなりに工夫はいりそうですが、UIテストを大いに補助してくれるツールだと思いました。ただしaccessibilityIdentifierを付与する前提なので、WebViewの多いアプリとかだと活用が難しいのではとも思いました。このあたりの課題感は使用していく中で、別ツールの利用も含めアプローチを考えていきたいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?