調査方式: 通常 LLM (Claude Opus 4.7) + ローカル LLM (DwarfStar4, Apple M4 Max Metal バックエンド) の円卓会議 (役者 5 名: moderator + mobile_specialist + qa_lead + security_architect + principal_engineer) を 2 周実施し、間に deep-research スキルによる Web 裏取り (108 agent / 447 tool 呼び出し / 9 件の confirmed claim を 3-vote 検証) を挟んだ。
調査日: 2026-06-08
Appium 3.x をコアフレームワークとし、3 領域 (通常 UI / Canvas / DRM) ごとに視覚型救済ツールを使い分けるハイブリッド構成を推奨する。
| 領域 | iOS / iPadOS | Android |
|---|---|---|
| コアフレームワーク | Appium 3.x + XCUITest Driver (プラグイン) | Appium 3.x + UiAutomator2 Driver (プラグイン) |
| 通常 UI 自己治癒 (locator healing) | Healenium-Appium (DOM / a11y locator 層) | Healenium-Appium (DOM / a11y locator 層) |
| Canvas 領域 視覚検証 | OpenCV + Apple Vision Framework (オンデバイス ML) | OpenCV + Android ML Kit (オンデバイス ML) |
| DRM 領域 視覚検証 | Applitools Eyes (商用 Visual AI) | Applitools Eyes (商用 Visual AI) |
| 状態管理・操作制御 | XCUITest ベースのルールベース state machine | Espresso ベースのルールベース state machine |
| CI 連携 | Appium 3.x + GitHub Actions (プラグイン経由 install) | Appium 3.x + GitHub Actions (プラグイン経由 install) |
マルチモーダル LLM (Claude computer use / GPT-4o vision) のモバイル本番採用は 2026-06 時点では時期尚早として不採用とする。
2026 年現在、Appium は 3.x 系列が活ラインである。3.5.0 が 2026-05-31 にリリース済みで、Appium 2.x は LTS / 移行ライン扱いとして併存しているが、年内サポート終了の予定である 1 2。Appium 3.x で起きた構造変化は以下:
appium driver install xcuitest
/ appium driver install uiautomator2 のように Extension CLI
で個別 install
する方式に変更。サーバー本体にバンドルされなくなった結果、CI
イメージを必要な driver のみで最適化できる 4 5。appium:
ベンダープレフィックス必須。appium:app /
appium:noReset / appium:deviceName 等 W3C
標準外項目はすべてプレフィックス付与が要件 6。円卓会議 1 周目では Maestro (Mobile.dev)
が代替案として挙がった。Maestro は YAML ベース DSL で flaky 抑制と CI
統合が容易であり、GitHub Actions では同期 (デフォルト 30 分タイムアウト)
と非同期 (async: true で upload 後即 exit) の 2
モードを公式サポートする 7 8。
しかし以下 2 点で Appium 3.x を選定:
Detox / Xcode UI Test / Espresso は Appium と排他ではなく、以下のレイヤ分けで併用する:
DOM や Accessibility 階層を露出しないため、Appium Inspector の AccessibilityID / XPath 等の要素ベース取得手段が機能しない。タップ座標は計算可能だが、描画完了タイミングや動的レイアウト変更で flaky になる。
スクリーン録画 API・アクセシビリティ階層・WebView の DOM が
OS レベルで遮蔽される。iOS は AVPlayer +
FairPlay、Android は MediaProjection + Widevine の組み合わせで
screenshot blackout が発生し、従来手法では「座標タップ + 再生状態
(currentTime / getCurrentPosition)
確認」までしかできない。
Healenium-Appium は test client と Appium server の間に proxy
として挿入され、ML ベースで broken locator を自動回復する
self-healing フレームワークである。Docker Compose で
hlm-proxy / hlm-backend /
selector-imitator / PostgreSQL の 4
コンポーネント構成で動作する 9。
ただし Healenium の healing 対象は DOM / accessibility locator 層に閉じる。Canvas / WebGL / DRM 領域は README で明示サポート外であり、これらの領域には別系統 (CV ベース) のツールが必要となる 10。本問の救済策はここから派生する。
| 領域 | 救済ツール | 理由 |
|---|---|---|
| 通常 UI (DOM / a11y あり) | Healenium-Appium (proxy 型 self-healing) | locator 自動修復で flaky 抑制 |
| Canvas 描画領域 | OpenCV (OSS) + Apple Vision Framework / Android ML Kit (オンデバイス ML) | ピクセル比較とオンデバイス推論でクラウド送信不要 |
| DRM 保護領域 | Applitools Eyes (商用 Visual AI) | 暗号化 / 難読化パターンに対する偽陰性率を AI モデルで補完 |
computer-use-2025-11-24) は維持され、production retract
されていない。claude-in-mobile 等は ADB / simctl ラッパーであり Anthropic
の提供物ではない。研究用途では Google DeepMind の AndroidWorld (116 タスク × 20 アプリ、screenshot + a11y tree + 自然言語指示) が学術 mobile UI agent ベンチマークの de facto 基盤となっているが、これは PoC / 研究レベルであり実 QA 採用ではない 13 14。
マルチモーダル LLM の代わりに XCUITest / Espresso ベースのルールベース state machine を採用する。YAML 外部ファイル化で UI フローを宣言的に管理し、Healenium → OpenCV+ML → Applitools Eyes のフォールバック順序を明示する。これにより:
appium driver install で導入する driver / plugin は cosign
等で署名検証する。| 観点 | 必須要件 |
|---|---|
| W3C 準拠 | クライアントは W3C WebDriver 準拠ライブラリ (Appium Python Client 3.x / WebdriverIO 9.x / Selenium 4.x) |
| プラグイン管理 | appium driver install を CI
イメージ初期化に組み込み、driver バージョンを lock |
| flaky 抑制 | Healenium proxy + explicit waits + OpenCV 差分検出で flaky 率 5% 未満を目標 |
| CI 統合 | GitHub Actions マトリクスで iOS / Android 並列、appium:
プレフィックス変換は自動スクリプト化 |
| コスト管理 | Applitools Eyes は DRM 領域に限定、Canvas は OpenCV (OSS) を主軸に |
| 対立項目 | 主張 | 裁定 |
|---|---|---|
| Appium 3.x 移行方式 | 即時全面移行 vs 段階併存 | 即時全面移行。3.5.0 安定版リリース済み、2.x LTS は 2026 年内サポート終了予定。技術的負債の観点から即時移行が合理的 |
| DRM 領域ツール | OpenCV vs Applitools Eyes | Applitools Eyes。暗号化 / 難読化領域の偽陰性率が OpenCV では実用不可。AI ベース商用ツールで高精度検出 |
| マルチモーダル LLM 代替 | AndroidWorld 型エージェント vs state machine | ルールベース state machine。NL ベースの非決定性リスクが本番 QA に不適合。決定論的動作で再現性を担保 |
| コアフレームワーク | Maestro (qa_lead) vs Appium 3.x (principal_engineer / mobile_specialist) | Appium 3.x。W3C 準拠と長期保守の確実性、エコシステム成熟度。Maestro の独自 DSL リスクは「確証されず」だが、Appium の積極的優位で選定 |
| DRM 領域操作深度 | 座標タップのみ (security_architect) vs オンデバイス ML 限定的ピクセル比較 (mobile_specialist) | オンデバイス ML 許容。ただし DRM 鍵アクセス禁止・PII マスキング・監査ログ必須 |
appium:
プレフィックス自動変換スクリプト整備: iOS / Android
別の変換ルール定義と、CI パイプラインでの変換漏れ検出設計本書の結論を生成した円卓会議の transcript は以下に保存されている (本プロジェクトとは別ディレクトリの ds4_roundtable プロジェクト配下):
~/Documents/Claude/Projects/EPUBアノテーション検証/ds4_roundtable/ds4_out/council/746973f7-35df-4c4c-9613-79d5f5e2bda8/transcript.md~/Documents/Claude/Projects/EPUBアノテーション検証/ds4_roundtable/ds4_out/council/39924411-b3bc-4ea9-859e-45566008b754/transcript.mdAppium Releases — appium@3.5.0
(2026-05-31). https://github.com/appium/appium/releases↩︎
npm registry — Appium versions. https://www.npmjs.com/package/appium?activeTab=versions↩︎
Appium 公式 — Migrating from Appium 1.x to Appium 2.x. https://appium.io/docs/en/2.0/guides/migrating-1-to-2/↩︎
Appium 公式 — Migrating from Appium 1.x to Appium 2.x. https://appium.io/docs/en/2.0/guides/migrating-1-to-2/↩︎
Appium 公式 — UiAutomator2 Driver Quickstart (3.4). https://appium.io/docs/en/3.4/quickstart/uiauto2-driver/↩︎
Appium 公式 — Migrating from Appium 1.x to Appium 2.x. https://appium.io/docs/en/2.0/guides/migrating-1-to-2/↩︎
Maestro 公式 — GitHub Actions CI/CD Integration. https://docs.maestro.dev/maestro-cloud/ci-cd-integration/github-actions↩︎
GitHub Marketplace — Maestro Cloud Action. https://github.com/marketplace/actions/maestro-cloud↩︎
Healenium-Appium GitHub. https://github.com/healenium/healenium-appium↩︎
Healenium-Appium GitHub. https://github.com/healenium/healenium-appium↩︎
Anthropic — Introducing Claude 3.5 Sonnet & Computer Use. https://www.anthropic.com/news/3-5-models-and-computer-use↩︎
Anthropic — Introducing Claude 3.5 Sonnet & Computer Use. https://www.anthropic.com/news/3-5-models-and-computer-use↩︎
AndroidWorld arXiv 論文 (2405.14573). https://arxiv.org/abs/2405.14573↩︎
AndroidWorld GitHub — google-research/android_world. https://github.com/google-research/android_world↩︎