🧠 AI開発ナレッジ2026年3月11日15分で読める

Android AIエージェントで競合アプリを自動操作 — 5つの技術アプローチと主要OSSプロジェクト完全ガイド

Androidで他アプリのスクリーンショット取得・UI構造分析を自動化する技術を徹底リサーチ。AccessibilityService、Shizuku、ADB連携など5つのアプローチと、mobile-use、AppAgent等の主要OSSを比較評価。

この記事で得られること

  • Androidで他アプリを自動操作しスクリーンショットを取得する 5つの技術アプローチ の比較
  • Google Playポリシー(2026年1月施行)の重要制約と回避戦略
  • mobile-use、AppAgent、agent-device 等の主要OSSプロジェクトの評価
  • AIエージェントの Screenshot → LLM → Action ループ の設計パターン
  • 競合アプリ分析の自動化に向けた推奨アーキテクチャ

背景:なぜアプリ操作の自動化が必要か

個人開発者やプロダクトチームにとって、競合アプリのUI分析は避けて通れない作業だ。たとえば自治体向けアプリ(さいたま市みんなのアプリ等)の競合調査では、アプリをインストールし、各画面を手動でスクリーンショットして、UI構成を分析する必要がある。

この作業を AIエージェントで自動化 できれば、以下のメリットがある:

  • 数十の競合アプリを一括でスクリーンショット取得
  • UI階層の構造化データ(XML/JSON)を自動抽出
  • Vision LLMによるUI分析レポートの自動生成
  • 定期的な変更検知(リグレッションテスト的活用)

本記事では、この実現に必要な技術を5つのアプローチに分けて徹底解説する。


5つの技術アプローチ比較

比較サマリー

アプローチ root不要 Google Play配布 Android単体 UI階層取得 スクリーンショット 難易度
AccessibilityService 条件付き ○(API 30+)
Shizuku 中〜高
MediaProjection API ×
PC接続型(ADB) 不要 × 低〜中
Root-based × ×

1. AccessibilityService(最も実用的)

Androidの AccessibilityService は、もともと障害者向けの支援技術だが、他アプリのUI階層を読み取り、操作を実行する最も強力なAPIでもある。

できること:

  • UI階層の読み取り: AccessibilityNodeInfo ツリーから、テキスト、resource-id、content-desc、bounds(座標)等を取得
  • ジェスチャー実行: dispatchGesture() API(API 24+)でタップ、スワイプ、ロングプレス、ピンチズーム等を合成
  • スクリーンショット: takeScreenshot() API(API 30+)で画面キャプチャ
  • ウィンドウ情報: 現在のアクティビティ、パッケージ名、ウィンドウ構成を取得

実装のポイント:

<!-- AndroidManifest.xml -->
<service
    android:name=".MyAccessibilityService"
    android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
    <intent-filter>
        <action android:name="android.accessibilityservice.AccessibilityService" />
    </intent-filter>
    <meta-data
        android:name="android.accessibilityservice"
        android:resource="@xml/accessibility_service_config" />
</service>
<!-- res/xml/accessibility_service_config.xml -->
<accessibility-service
    android:canPerformGestures="true"
    android:canTakeScreenshot="true"
    android:accessibilityEventTypes="typeAllMask"
    android:accessibilityFeedbackType="feedbackGeneric"
    android:notificationTimeout="100" />

制約: ユーザーが設定画面で手動でサービスを有効化する必要がある(セキュリティ上、プログラム的に有効化は不可)。


2. Shizuku(ADBレベル権限をアプリから利用)

Shizuku は、ADB/shell権限をサードパーティアプリに提供するフレームワーク。root不要でADBレベルのコマンドをアプリ内から実行できる。

仕組み:

  1. PC(またはワイヤレスデバッグ)で一度だけShizukuサービスを起動
  2. サードパーティアプリがShizuku APIを通じてshell権限のコマンドを実行
  3. 端末再起動まで権限が維持される

できること:

  • uiautomator dump — UI階層XMLのダンプ
  • screencap — スクリーンショット取得
  • input tap x y — タップイベントの注入
  • input swipe x1 y1 x2 y2 — スワイプ操作
  • Hidden API制限のバイパス

導入方法:

// build.gradle
dependencies {
    implementation 'dev.rikka.shizuku:api:13.1.5'
    implementation 'dev.rikka.shizuku:provider:13.1.5'
}

開発ガイドは Shizuku-API で公開されている。XDA Developersにも 詳細な実装ガイド がある。


3. MediaProjection API(スクリーンショット専用)

画面録画/キャプチャ用の公式API。スクリーンショット取得のみが目的なら最もシンプル。

特徴:

  • ユーザーの明示的な許可ダイアログが必要(Android 14+でさらに厳格化)
  • FLAG_SECURE が設定された画面はキャプチャ不可
  • UI階層の取得はできない(画像のみ)

AccessibilityServiceと組み合わせることで、「UI階層はAccessibilityから、スクリーンショットはMediaProjectionから」というハイブリッド構成が可能。


4. PC接続型(ADB + Python)— 最も制約が少ない

Android端末をPCにUSB/Wi-Fi接続し、ADBコマンドで外部から操作するアプローチ。Google Playポリシーに一切抵触しないのが最大の利点。

基本コマンド:

# スクリーンショット取得
adb exec-out screencap -p > screen.png

# UI階層XMLダンプ
adb shell uiautomator dump /sdcard/window_dump.xml
adb pull /sdcard/window_dump.xml

# タップ操作
adb shell input tap 500 800

# スワイプ操作
adb shell input swipe 500 1500 500 500 300

# アプリ起動
adb shell am start -n com.example.app/.MainActivity

UIAutomator dump XMLの構造:

<node index="0" text="ホーム" resource-id="com.example:id/title"
      class="android.widget.TextView" package="com.example.app"
      content-desc="" bounds="[0,0][1080,200]" />

各ノードに textresource-idclassbounds(座標)が含まれ、UI要素の特定と操作に利用できる。

画面ミラーリング: scrcpy を使えば、PCからリアルタイムで画面を確認しながら操作可能(30〜60fps、35〜70msの低遅延)。


5. Root-based(最高権限)

root化した端末では、/dev/graphics/fb0(フレームバッファ)への直接アクセスや、InputManagerへの直接イベント注入が可能。FLAG_SECUREの無効化もMagiskモジュールで対応できる。

ただし、root化は端末のセキュリティを低下させ、一部アプリ(銀行系等)が動作しなくなるリスクがある。個人の開発・検証端末でのみ推奨。


Google Playポリシーの重要制約

AccessibilityServiceを使ったアプリをGoogle Playで配布する場合、2026年1月28日施行のポリシーに注意が必要。

禁止事項

AccessibilityService APIを使ってアプリが自律的に行動を計画・判断・実行することは厳格に禁止

これにより、「AIが画面を見て動的に次のアクションを決定する」タイプのエージェントは、Google Play配布できない。

例外(許可されるケース)

例外 説明
ルールベース自動化 「If X then Y」の静的・人間定義スクリプト。Tasker/MacroDroid等と同じ扱い
アクセシビリティツール isAccessibilityTool="true" を設定した検証済みツール

実質的な選択肢

配布方法 AI自律行動 ルールベース
Google Play ×
サイドロード(APK直接)
PC接続型

結論: 完全なAIエージェントを実現するなら、サイドロード配布 または PC接続型 を選択する。


主要OSSプロジェクト比較

AIモバイルエージェントの分野は急速に発展している。以下は2024〜2026年の主要プロジェクト。

一覧

プロジェクト 開発元 アプローチ 対応OS 特徴
mobile-use minitap ADB + LLM Android/iOS AndroidWorld 100%達成。Docker利用
AppAgent Tencent Screenshot + VLM Android マルチモーダルLLMでスマホ操作
agent-device Callstack Accessibility Tree + CLI Android/iOS Claude Code等のAIエージェント向け
CogAgent Tsinghua/Zhipu Vision-only VLM Android/Desktop 18Bパラメータ、CVPR 2024 Highlight
arbigent takahirom UI + AI Android/iOS/Web 5分セットアップ、日本人開発者

mobile-use(minitap)

AndroidWorldベンチマークで100%のタスク成功率を達成した初のフレームワーク。論文「Do Multi-Agents Dream of Electric Screens?」ではタスク分解による精度向上を報告。

  • Docker環境で動作
  • 複数のLLMプロバイダーに対応
  • 自然言語での操作指示
  • Apache License 2.0

AppAgent(Tencent)

Tencent QQラボが開発したマルチモーダルエージェント。スクリーンショットをVision LLMに送信し、次のアクションを決定するループを実装。

  • 学習フェーズで操作パターンを蓄積
  • 実行フェーズで蓄積した知識を活用
  • Vision-based interaction(スクリーンショット中心)

agent-device(Callstack)

AIエージェント(Claude Code等)がモバイルデバイスを操作するための軽量CLI。アクセシビリティツリーのスナップショットを中心に設計。

# スクリーンショット取得
npx agent-device screenshot

# UIスナップショット(アクセシビリティツリー)
npx agent-device snapshot

# タップ操作
npx agent-device press --ref="button_submit"

Node.js 22+で動作し、TypeScript製。OSS(無料)。

CogAgent

清華大学とZhipu AIが開発した18Bパラメータの視覚言語モデル。スクリーンショットのみからUI要素の位置と操作を理解する。

  • 1120×1120の高解像度入力に対応
  • HTMLテキスト不要 — 画像だけで操作可能
  • CVPR 2024 Highlight(上位3%)
  • 最新版CogAgent-9B-20241220はバイリンガル(中英)対応

arbigent

日本人開発者 takahirom による、Android/iOS/WebのAIテストエージェント。直感的なUIとコードインターフェースの両方を提供し、シナリオ分割機能で複雑なタスクにも対応。


AIエージェントのアーキテクチャパターン

基本ループ:Screenshot → LLM → Action

ほぼすべてのモバイルAIエージェントは、以下のループで動作する:

1. スクリーンショット取得
2. UI階層(アクセシビリティツリー)取得
3. Vision LLM に送信
   - タスク指示:「設定画面を開いて」
   - スクリーンショット画像
   - UI階層XML(オプション)
4. LLMが次のアクション決定
   - tap(x, y) / swipe / scroll / back
5. アクション実行
6. ゴール達成まで 1→5 を繰り返し

Vision-only vs ハイブリッド

アプローチ 入力 利点 欠点
Vision-only スクリーンショットのみ セットアップが簡単 座標予測の精度が低い、コスト高
ハイブリッド スクリーンショット + UI階層XML 高精度、要素の正確な特定 セットアップが複雑

ハイブリッドが推奨。 アクセシビリティツリーでUI要素のテキスト・ID・座標を正確に取得し、スクリーンショットでレイアウト理解を補完する。

Set-of-Mark(SoM)プロンプティング

Microsoftが提案した Set-of-MarkarXiv 2310.11441)は、スクリーンショット上のUI要素に番号ラベルを重ねてLLMに送信する手法。

手順:

  1. スクリーンショットを取得
  2. セグメンテーションモデル(SAM等)でUI要素を検出
  3. 各要素に番号マークを付与した画像を生成
  4. LLMに「3番のボタンをタップ」と指示させる

これにより、LLMが座標を直接予測する必要がなくなり、操作精度が大幅に向上する。


推奨アーキテクチャ

競合アプリの自動スクリーンショット取得・構造分析には、以下の3つの構成を推奨する。

構成1: PC接続型(推奨度: ★★★)

[Mac/PC]                        [Android端末]
  │                                  │
  ├── Python スクリプト               │
  │   ├── adb shell screencap ──────→ スクリーンショット取得
  │   ├── adb shell uiautomator dump → UI階層XML取得
  │   ├── adb shell input tap x y ──→ タップ実行
  │   └── Claude API で分析 ─────────→ 構造分析結果
  │
  └── agent-device CLI も利用可能

利点: Google Playポリシー無関係、root不要、最も柔軟

構成2: agent-device + Claude Code(推奨度: ★★★)

# 接続確認
npx agent-device list

# 対象アプリ起動
npx agent-device open --app="jp.saitamacity.rsa"

# スクリーンショット + UI構造を一括取得
npx agent-device screenshot --output=screen.png
npx agent-device snapshot --output=ui-tree.json

# Claude Code でそのまま分析可能

利点: Claude Codeのワークフローに直接統合、コマンド1つで操作

構成3: Android単体・サイドロード(推奨度: ★★☆)

Shizuku + カスタムAccessibilityServiceアプリをサイドロード。外出先でも使えるが初回セットアップにPC必要。


技術課題と対策

課題 詳細 対策
FLAG_SECURE 一部アプリがスクリーンショットをブロック root + Magiskモジュールで無効化。ADB経由なら回避可能な場合あり
WebView内コンテンツ ネイティブのアクセシビリティツリーでは限定的 スクリーンショット + OCR を併用
動的コンテンツ ローディング中のキャプチャ waitForIdle / スクリーンショット差分検知で安定化待ち
スクロールコンテンツ 画面外の要素が取得できない スクロール → キャプチャ → 繰り返しのループ
LLMのコスト Vision APIは画像処理にトークンを大量消費 ハイブリッドアプローチでLLM呼び出し回数を最小化

リサーチリソース一覧

Awesome Lists

リポジトリ 内容
awesome-mobile-agents モバイル/PC GUIエージェント論文・データセット集
Awesome-GUI-Agent マルチモーダルGUIエージェント論文集
awesome-edge-ai-agents モバイル/エッジAIエージェント論文集

主要ツール・フレームワーク

ツール 用途
Shizuku ADB権限をアプリから利用
Shizuku-API Shizuku開発者向けAPI
scrcpy Android画面ミラーリング・制御
Set-of-Mark UI要素への番号ラベル付与手法

学術論文

論文 内容
CogAgent (CVPR 2024) GUI理解に特化したVLM
Set-of-Mark (arXiv 2310.11441) 視覚グラウンディングのプロンプティング手法
ScreenAI (Google) 画面アノテーションデータセット

まとめ:次のアクション

  1. 今すぐ始めるなら: agent-device をインストールし、手持ちのAndroid端末で npx agent-device screenshot を試す
  2. 本格的に自動化するなら: PC接続型(ADB + Python + Claude API)でスクリプトを構築
  3. Android単体で使いたいなら: Shizuku + カスタムAccessibilityServiceアプリをサイドロード
  4. 最新動向を追うなら: awesome-mobile-agents をウォッチ

モバイルAIエージェントの技術は急速に成熟しつつある。2026年時点でAndroidWorldベンチマーク100%達成(mobile-use)という成果が示すように、実用レベルの自動操作はもはや研究段階ではなく、実装可能な段階に入っている。