adb について
adb は、Android Debug Bridge で Android 端末やエミュレーターを操作するエージェントスキルです。画面の撮影、操作、結果確認を繰り返して指定されたタスクを進め、接続や画面の問題にも対処します。
主な機能
- 01ADB による端末接続の確認
- 02画面撮影と状態の分析
- 03タップ、スワイプ、文字入力
- 04UI ダンプによる要素確認
- 05操作結果の検証とエラー対応
活用シーン
- 01設定を開いて端末の項目を変更
- 02Android アプリ内で画面操作を実行
- 03ダイアログや読み込み中の画面に対処
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ morphet81/ cheat-sheets --skill adbインストール後、Claude Code で/adbを入力して読み込まれたか確認します。
詳細
ADB コマンドを使って Android デバイスまたはエミュレーターを操作し、ユーザーが定義したミッションを達成します。ミッションが完了するまで、スクリーンショット・操作・確認のループを繰り返します。
使用方法:
/adb <mission>— デバイスで実行したい内容を説明します(例:「設定を開いてダークモードを有効にする」)
前提条件:
adbが PATH に含まれている必要があります- デバイスまたはエミュレーターが接続されている必要があります
手順:
-
ADB の接続を確認する:
adb devicesを実行し、少なくとも 1 台のデバイスが表示されることを確認します(「unauthorized」ではないこと)- デバイスが見つからない場合は、ユーザーに伝えて停止します
- 複数のデバイスが見つかった場合は、
AskUserQuestionを使って対象のデバイスを確認し、その後のすべてのadbコマンドに-s <serial>を渡します
-
ミッションを理解する:
$ARGUMENTSをミッションの説明として解析します$ARGUMENTSが空の場合は、デバイスで何を達成したいかをAskUserQuestionでユーザーに確認します- ミッションを、想定される手順のチェックリストに頭の中で分解します(これは出力しません。自分の計画にのみ使います)
-
スクリーンショット・操作・確認のループに入る:
ミッションが完了するか、達成できないと判断するまで、次のサイクルを繰り返します。
a) スクリーンショットを撮る:
mkdir -p .tmp && adb exec-out screencap -p > .tmp/screen.pngReadツールでスクリーンショットを読み取り、現在の画面状態を把握します
b) 画面を分析する:
- 現在表示されているアプリや画面を特定します
- どの UI 要素(ボタン、テキストフィールド、トグル、リストなど)が表示されているかを確認します
- ミッションの目標に対する進捗を評価します
- 画面が不明瞭な場合や UI 要素ツリーの詳細が必要な場合は、UI ダンプを実行します:
次にadb shell uiautomator dump /sdcard/ui.xml && adb pull /sdcard/ui.xml .tmp/ui.xml.tmp/ui.xmlを読み取り、要素の境界、テキスト、リソース ID を確認して、タップする正確な座標を特定します。
c) 次の操作を決定して実行する:
次の ADB コマンドを 1 つ以上使います。
操作 コマンド 座標をタップ adb shell input tap <x> <y>スワイプ adb shell input swipe <x1> <y1> <x2> <y2> [duration_ms]テキストを入力 adb shell input text "<text>"戻るボタンを押す adb shell input keyevent 4ホームボタンを押す adb shell input keyevent 3Enter キーを押す adb shell input keyevent 66最近使ったアプリを表示 adb shell input keyevent 187アプリを起動 adb shell am start -n <package>/<activity>URL を開く adb shell am start -a android.intent.action.VIEW -d "<url>"長押し adb shell input swipe <x> <y> <x> <y> 1000座標に関するヒント:
- UI 要素をタップする場合は、スクリーンショットまたは UI ダンプの
bounds属性を基に、その中央を狙います(例:境界[0,200][1080,350]→540,275をタップ) - 下にスクロールするには、画面の下から 3 分の 1 の位置から上から 3 分の 1 の位置までスワイプします(例:
adb shell input swipe 540 1500 540 500 300) - テキストを入力する場合は、先にフィールドをタップし、少し待ってから入力します
d) 待機して確認する:
- 各操作の後、UI が落ち着くまで少し待ちます(
sleep 1) - 操作が期待どおりの効果をもたらしたか確認するため、もう一度スクリーンショットを撮ります
- 操作が期待どおりに機能しなかった場合(例:別の要素をタップした、ダイアログが表示された、画面が変わらなかった)は、調整して再試行します
- 同じ失敗した操作を 2 回を超えて再試行しないでください — 失敗が続く場合は、別の方法(座標の変更、別のナビゲーション経路、UI ダンプを使った正確な境界の確認)を試します
-
よくある状況に対処する:
- 画面を覆うキーボード: 入力後、確認用のスクリーンショットを撮る前に、Back(
keyevent 4)を押してキーボードを閉じます - ダイアログ/ポップアップ: 予期しないダイアログが表示された場合は、内容を確認し、ミッションに照らして適切に閉じます(「OK」「許可」「拒否」などをタップします)
- 読み込み画面: 画面が読み込み中の場合は、2〜3秒待ってからスクリーンショットをもう一度撮ります
- アプリがインストールされていない: 対象のアプリが見つからない場合は、ユーザーに伝えて停止します
- 権限の確認: ミッションに必要な権限は許可し(「許可」をタップ)、関係のない権限は拒否します
- 画面がロックされている: デバイスにロック画面が表示されている場合は、上にスワイプして(
adb shell input swipe 540 1800 540 800)ロック解除を試みます。PIN/パスワードが必要な場合は、ユーザーに確認します
- 画面を覆うキーボード: 入力後、確認用のスクリーンショットを撮る前に、Back(
-
問題が発生した場合は logcat を確認します:
- アプリがクラッシュしたり、予期しない動作をしたりした場合は、直近のログを確認します:
adb logcat -d -t 50 - ログを使って何が起きたかを把握し、問題を解決できない場合はユーザーに伝えます
- アプリがクラッシュしたり、予期しない動作をしたりした場合は、直近のログを確認します:
-
ミッションの完了:
- ミッションの目標を達成したら、確認用に最後のスクリーンショットを撮ります
- 簡単な概要を添えて、最後のスクリーンショットをユーザーに提示します:
## ミッション完了 <達成した内容の説明> 最終状態:<現在画面に表示されている内容> 実行した操作:<手順数>
-
クリーンアップ:
- 一時ファイルを削除します:
rm -f .tmp/screen.png .tmp/ui.xml
- 一時ファイルを削除します:
例外的なケース
adbが PATH に見つからない場合は、セットアップ手順を表示して停止します- ミッション中にデバイスが切断された場合は、
adb devicesを実行して確認します。切断されている場合はユーザーに伝えて停止します - ミッションでアプリのインストールが必要な場合は、続行する前にユーザーに APK のパスまたはパッケージ名を確認します
- 同じ画面のまま3回試しても進めない場合は、UI ダンプを取得して状況を再評価し、まったく別の方法を試します。それでも進めない場合は、ユーザーに伝えて指示を仰ぎます
- 画面解像度が不明な場合は、最初のスクリーンショットのサイズから確認するか、
adb shell wm sizeを実行します
コメント
Markdown 対応