使い方

【root不要】画像認識オートクリッカーで自動タップする方法

公開日: Read in English

「同じところを何度もタップするだけなのに、そのために画面をずっと見ている」——そんな時間を、もったいないと思ったことはありませんか?

決まった場所を連打するだけのオートクリッカーなら、設定は 5 分で終わります。ところが実際に走らせると、思ったほど続きません。読み込みが 1 秒遅れただけでタップは空振り。広告バナーが差し込まれてレイアウトが下にずれれば、そのあとはずっと見当違いの場所を押し続けます。

私たち TapEzy 開発チームも、この壁には何度もぶつかりました。効いたのは「もっと速い連打」ではなく、画面を見てから押すという考え方でした。

この記事では、TapEzy の画像検出を使って「探しているキャラクターのアイコンが画面に出たら、その場所をタップする」シナリオの作り方を説明します。root 化もプログラミングも不要です。

TapEzy の練習用画面。画像検出がダイヤを見つけ、その場所をタップしているところ

座標だけのオートクリッカーが空振りする理由

座標タップは、目隠しでの指示です。「0.5 秒後に x=540, y=1180 を押して」としか言っていないので、そこに何が表示されているかは見ていません。

だから、こんな場面で簡単に崩れます。

  • 読み込みが終わる前にタップしてしまい、ローディング表示を押して終わる
  • バナーや通知が入って、狙ったアイコンが数十ピクセル動く
  • 別のスマホで再生したら、画面サイズが違って座標が全部ずれる
  • 目的のキャラクターが、前回と違うマスに出ている

「待ち時間を長めに取る」で誤魔化すこともできます。ただし全体が遅くなりますし、想定より読み込みが遅い日にはやはり失敗します。待ち時間で解決しようとしている限り、いつまでも当たり外れが残ります。

「画面を見て動く」= 画像認識で自動タップする

検出(画像認識)を使うと、指示の形そのものが変わります。「この時刻にここを押す」ではなく、「このアイコンが出るまで待って、出た場所を押す」になります。

この一手で、もろさの大半が消えます。読み込みが遅ければ、出るまで待ってくれます。レイアウトがずれても、タップ位置がアイコンに追従します。そして、そもそも目印が出なかったときの動きも、自分で決めておけます。

TapEzy には画像検出・テキスト検出・画面要素検出・数値検出があります。この記事で扱うのは画像検出です。キャラクターの顔アイコン、建物の絵柄、アイテムのサムネイルのように、文字を持たない目印を狙うときに向いています。

用意するもの

  • Android 端末(root 化は不要です)
  • Google Play からインストールした TapEzy
Google Playで手に入れよう

特別な機器を買い足したり、PC につないだりする必要はありません。TapEzy は無料でも画像検出やテキスト検出が使えます。無料版では、同時に保持できるシナリオの数に上限がありますが、この記事の内容を試すには十分です。

なお、TapEzy には練習用の画面が用意されているので、練習するだけなら他のアプリもいりません。ここからは実際に練習用画面を使って画像検出を行う手順を解説します。

手順:画像が出たらタップするシナリオを作る

以下は全体像です。ボタンひとつひとつの位置までは書きません(それは後述のチュートリアルの役割です)。何をするステップで、なぜそうするのかが伝われば十分です。

1. 練習用画面を開いて、何が難しいのかを見る

設定 → 練習用画面を起動 → 画像検出を選びます。5×5=25 マスに岩とダイヤが並び、そのうち 5 つがダイヤです。ダイヤをタップすると消えていきます。

大事なのは、どのマスがダイヤになるかは毎回変わるという点です。座標を控えても意味がありません。ゲームで特定のキャラクターやアイテムを探す状況と同じで、まさに画像認識の出番です。

2. シナリオを作り、探したい画像を登録する

シナリオ一覧の + からシナリオの作成でシナリオ名を付け、ステップの追加で画像検出を選びます。あとは画像を選択から、その場で画面を撮影するかギャラリーから選択して、使用する範囲をドラッグで選択するだけです。

見本画像のトリミング画面。ダイヤの絵柄だけを枠で囲んでいるところ

ここが記事のなかで、いちばん結果を左右する場所です。開発チームで試した限り、検出が不安定なときの原因はたいてい設定ではなく見本画像のほうにありました。押さえておきたいのは 2 点です。

  • できるだけ小さく切る — キャラクターの顔や、建物の特徴的なシルエットだけを残します。背景を含めるほどノイズが増えます
  • 変化する部分を入れない — レベル表示や「残り 12」のようなカウンターを含めると、数字が変わった瞬間に一致しなくなります

3. 探す範囲と、見つかったときの動作を決める

検出範囲は、画面のどこを探すかの指定です。全画面のままでも動きますが、目印が出る領域に絞ると、検出が速くなり、別の場所にある似た絵柄を誤って掴むこともなくなります。

検出成功時のアクションには、ステップを追加した時点で検出画像をタップが入っています。自分で組み立てる必要はありません。ここが座標タップとの決定的な違いです。タップ先は事前に控えた座標ではなく、見つかった場所そのものになります。スワイプや長押し、ドラッグをしたい場合は検出した場所でジェスチャーを使います。

「検出する範囲をドラッグで選択」の画面。練習用画面のグリッド部分だけを検出範囲に指定しているところ

4. 見つからなかったときを決めて、再生する

検出タイムアウトは、諦めるまで探し続ける時間です。想定される「いちばん遅い読み込み」より少し長めにしておきます。

検出失敗時のアクションは、空のままでかまいません。何も設定しなければ、そのステップは何もせず次のステップへ進むだけです。今回のシナリオはステップが 1 つきりなので進む先がなく、次に説明する繰り返しでシナリオの先頭に戻り、もう一度検出からやり直すことになります。目印が出るまで待ちたいだけなら、これで十分です。

設定が役に立つのは、既定の動きでは足りない場面です。何度か外れたら再生を終了したい、想定外の画面から「閉じる」を押して復帰したい、前のステップに戻ってやり直したい、といったときに追加します。

最後にシナリオ設定の繰り返し(0で無限)に回数を入れて再生します(0 なら手動で止めるまで繰り返します)。Android から画面キャプチャの許可を求められたら許可してください。あとは、目印がどこに出ても追いかけてタップしてくれます。

Google Playで手に入れよう

うまく検出できないときは

検出の安定度は、画面・端末・見本画像の組み合わせで変わります。すべての環境で完璧に検出できるわけではありません。

効くツボは 2 つで、どちらもここまでに出てきたものです。見本画像を小さく切ることと、検出範囲を絞ること。調整はまず練習用画面で、一度に 1 つずつ試しましょう。条件が一定なので、変更が本当に効いたのかを判断できます。

症状別の詳しい対処は、公式ガイドの検出がうまくいかないときの調整にまとめています。

手を動かしてみたい方へ:チュートリアルがあります

この記事は「なぜ座標では無理で、検出ならできるのか」に絞って書きました。実際に自分の端末で一歩ずつ進めたい方や、もっと細かい設定まで知りたい方には、公式チュートリアルの Lesson 5: 画像検出 を用意しています。

この記事と同じ練習用画面(岩とダイヤ)を題材に、画面のスクリーンショットと動画つきで、迷わないように全手順を追える構成になっています。まずは記事で考え方をつかみ、作るときにチュートリアルを開く、という順番が近道です。

よくある質問

複数の画像を順番に探せますか?

できます。画像検出のステップを必要な数だけ並べれば、上から順に処理されます。「見つかったら別のステップへ飛ぶ」「シナリオの最初に戻る」といった流れも、シナリオ制御のステップで組めます。組み方は公式ガイドの検出がうまくいかないときの調整でも紹介しています。

root 化や PC への接続は必要ですか?

どちらも不要です。Google Play からインストールして、アクセシビリティの許可を与えれば動きます。

画像検出とテキスト検出、どちらを使えばいいですか?

目印に文字が書かれているならテキスト検出、アイコンや絵柄のように文字がないなら画像検出です。ボタンのデザインだけが変わるようなケースでは、テキスト検出のほうが長持ちします。

バッテリーはどのくらい消費しますか?

検出は画面と見本画像を繰り返し見比べる処理なので、単純な連打よりは負荷がかかります。検出範囲を絞るのがいちばん効きます。また、再生中にサービスが止まってしまう場合は、端末のバッテリー最適化が原因のことがあります。端末の設定でバッテリー最適化の対象から TapEzy を外しておくと、途中で終了しにくくなります。

時間を指定して、自動で再生させられますか?

再生予約の機能はありますが、画像検出とテキスト検出を含むシナリオは予約再生では動きません。どちらも画面キャプチャを必要とし、予約再生ではキャプチャが使えないためです。時間指定で動かしたい場合は、キャプチャ不要の画面要素検出を検討してください。

検出でできることは、まだ先がある

画像検出は「見た目で狙う」ときの基本ですが、選択肢はほかにもあります。

  • テキスト検出 — 画面の文字(OCR・文字認識)で判断します。手順は【コード不要】画面の文字で自動タップ!OCRテキスト検出入門で解説しています
  • 画面要素検出 — 見た目ではなく UI 部品そのものを狙います。画面キャプチャの許可が不要なのも利点です
  • 数値検出 — 画面上の数値を読み取ります。条件分岐と組み合わせれば「ある値を超えたら動く」といった処理も作れますし、細かく制御したい方向けに Lua スクリプトも用意されています

上で作ったシナリオには、これらは一切必要ありません。必要になったときに追加料金なしで手が届く、という位置づけです。

まとめ

やっていることは、たったひとつの発想の転換です。どこを押すかを教えるのをやめて、何を待つのかを教える。

見本画像を小さく切り、検出範囲を絞り、検出成功時のアクションに検出画像をタップを置く。それだけで、座標タップが崩れていた場面のほとんどは越えられます。検出失敗時のアクションは空のままでも、今回のような 1 ステップのシナリオなら繰り返しの次の周回で再挑戦になります。必要になったときに足せば大丈夫です。

まずは練習用画面で 1 シナリオ作ってみてください。5 分で終わりますし、そこで掴んだ感覚はそのまま本番の画面でも通用します。

関連リンク

TapEzyはGoogle Playで配信中の無料アプリです。インストールにより利用規約およびプライバシーポリシーに同意したものとみなされます。

本アプリは業務効率化、テスト、アクセシビリティ補助などの正当な用途を目的としています。ゲームのチートや他のアプリ・サービスの利用規約に違反する目的での使用は推奨していません。本アプリを使って自動化する対象アプリ・サービスの利用規約への遵守は、ユーザーご自身の責任となります。