今回は、Android 端末で繰り返し操作を行う必要がある場合に、自動で「繰り返し操作」ができるようにする方法を紹介します。仕事では「繰り返しのテスト操作」プライベートでは「ゲームの単純作業の繰り返し」などに利用できると思います。
方法は 2種類
一般的に、以下の方法が考えられます。iphoneでも、2 番目のやり方は探せばあると思いますが、iphoneを持っていないのでよくわかりません。
- スマホ・タブレットを PC につないで、adb を利用して操作する。
- タップ操作マクロアプリを使う。(機種付属のものも含む)
このブログでは、1番目の方法について詳しく紹介します。2番目の方法は Play ストア を「マクロ」や「自動タップ」などで検索してみてください。多くの人が使っていて、評価が高いアプリを入れましょう。私はこの手のアプリを入れるのに抵抗があるので、端末メーカ純正のアプリか、自分で1番目の方法で実施することが多いです。adb は Android Debug Bridge と言って、google 純正の Android デバッグ用のツールです。
adb を利用した自動化
それでは、adb を利用した自動化について以下のような手順で説明を進めます。
- PC で adb を利用できるようにする
- スマホを開発者モードにする
- タップする位置を調べる
- adbコマンドをbat に組み込み実行する
PC で adb を利用できるようにする
PC で adb を利用できるようにします。以下を参考にして adb が利用できるようにしてください。(以下は、Windows 用の紹介です。linux や MAC を利用している人なら、adb のインストールは問題ないと思います。)
スマホを開発者モードにする
adb は google が提供する純正の開発ツールです。android 側でadbでの操作を許可すれば、色々なことができます。
設定>システム>端末情報>ソフトウェア情報 とたどり「ビルド番号」を連打でタップします。
すると、先ほどまで無かった 設定>システム>開発者向けオプション というものが出てきます。ここに入り、開発者向けオプション と USBデバッグを「ON」にします。
タップする位置を調べる
開発者向けオプション の下のほうに行くと、ポインタの位置というメニューがあります。これをONにすると、上のほうにタップした位置表示されます。スワイプした軌跡に線が引かれるのでかなり見にくいですが、タップする位置(X座標とY座標)を調べるために必要です。(私の利用している ZenFone 5 では、スピーカ部分に被ってY座標が見えなくなるので、以下のスクショでは片手モードを利用しています。)
これで、タップする座標の位置がわかります。自動化したい操作で、タップしたい位置を「すべて」これで調べて記録していきます。
adbコマンドをbat に組み込み実行する
adb を利用できるようにした PC と スマホを接続します。以下のような、「MTPの接続確認」と「USBデバッグの許可」画面が出ます。「MTPの接続確認」は「キャンセル」で閉じます。「USBデバッグの許可」は自分がUSBを接続しているので「このパソコンからのUSBデバッグを常に許可する」をチェックし、OK をタップします。
Windows からコマンドプロンプトを開いて、以下のコマンドを実行してみます。X座標とY座標で指定した位置がタップされます。(例えば、アプリのアイコンの位置をタップするようにしておくとアプリを起動できます。)
例えば、以下のように先ほど調べた、座標を入れてみます。私のスマホのホーム画面で以下を実行するとアプリ一覧が開きます。(アプリ一覧がタップされる位置)
これが1回のタップの基本系で、はじめての人は、まずここまでできればあとひといきな感じです。
1回のタップを以下のように繰り返したい一回分の操作として記載し、auto_play.bat というファイル名で保存します。(以下は特に何かのゲームの自動化ではありませんが、雰囲気は以下のようになります。)
rem は、batファイルのコメントで実行はされません。何のための タップ動作かを記載しておくとよいでしょう。timeout は次のタップまでの待ち時間(秒)です。(ロード時間が長くなる場合があるので、少し余裕を持たせるのがコツです。)keyevent で、バックキー(KEYCODE_BACK)やホームキー(KEYCODE_HOME)やメニューキー(KEYCODE_MENU)を送ることもできます。
rem ステージ選択
adb shell input tap 980 283
timeout /t 7
rem フレンド選択
adb shell input tap 480 580
timeout /t 5
rem 自動戦闘開始
adb shell input tap 780 383
rem 自動戦闘待ち
timeout /t 300
rem ランクアップスキップ
adb shell input keyevent KEYCODE_BACK
timeout /t 5
rem 取得アイテムスキップ
adb shell input keyevent KEYCODE_BACK
timeout /t 5
windows でこのbatファイルを実行(ダブルクリック)して、うまく1回分の操作が動けば成功です。1回分が作れたら、先ほど作った、auto_play.bat を呼び出す loop.bat を作成します。以下の、loop.bat を利用する場合、LOOP_CNT が繰り返し回数になります。100でも1000でも繰り返します。
set LOOP_CNT=3
rem auto_play.bat を LOOP_CNT 回実行
for /l %%n in (1,1,%LOOP_CNT%) do (
echo.
echo.
echo ++++++++++++++++++++++++++++++++++++++
echo %%n 回目...
echo ++++++++++++++++++++++++++++++++++++++
call %~dp0auto_play.bat
)
echo.
echo.
echo ++++++++++++++++++++++++++++++++++++++
echo 終了しました
echo ++++++++++++++++++++++++++++++++++++++
echo.
echo.
pause
以下の様にloop.bat と auto_play.bat は同じフォルダに入れて loop.bat をダブルクリックで実行します。