記事一覧に戻る
使い方 · · 9 分で読めます

画像認識でGUI操作を自動化する仕組みと使い方

マクロを記録して再生していると、多くの人が「昨日は動いたのに今日はクリック位置がずれる」という現象にぶつかります。原因の多くは、記録したマクロが「画面上の固定座標」を基準に動いているためです。ウィンドウが別の場所に開いた、画面の解像度が変わった、別のモニターで再生した——こうした状況の変化で、クリックが本来とは違う場所に当たってしまうのです。この根本的な問題を解決するのが「画像認識」による自動化です。

画像認識とは、座標ではなく「見た目」を基準に画面上の要素を探す技術です。あらかじめクリックしたいボタンの小さな画像を登録しておき、再生時にはツールが画面全体を走査して、その画像と一致する場所を探し出します。ボタンがどこに移動していても、見た目さえ同じなら正確に見つけてクリックできる——これが画像認識の強みです。

画像認識はどうやって要素を見つけるのか

仕組みはシンプルです。まず、目印にしたい要素——たとえば「送信」ボタンや特定のアイコン——の小さな画像(テンプレート画像)をキャプチャして保存します。マクロを実行すると、ツールはその瞬間の画面を撮影し、テンプレート画像と一致する領域を画面の中から探します。一致する場所が見つかれば、その中心座標を返し、マクロはそこへマウスを移動してクリックします。

ここで重要なのが「一致のしきい値(マッチング精度)」という設定です。100%完全に一致しなくても、たとえば90%以上似ていれば「一致した」と判定する、といった調整ができます。しきい値を高くすると誤検出は減りますが、わずかな見た目の違いで見つけられなくなることがあります。逆に低くすると柔軟になりますが、似た別の要素を誤って掴むリスクが増えます。実際の画面で試しながら、ちょうどよい値を見つけるのがコツです。

FIND_IMAGE と WAIT_IMAGE の使い分け

makuroku では、画像認識をスクリプトから使うための2つの代表的なコマンドが用意されています。FIND_IMAGE は「今この瞬間、画面のどこにその画像があるか」を探すコマンドです。見つかった座標を変数に格納できるので、「どこに表示されるか分からないボタンをクリックする」といった用途に向いています。

一方 WAIT_IMAGE は、「その画像が表示されるまで待つ」コマンドです。Webページの読み込みやアプリの起動には時間がかかり、その完了を待たずに次の操作をすると失敗します。WAIT_IMAGE を使えば、「読み込み完了を示すアイコンが現れるまで待ってから、次に進む」といった、画面の状態に合わせた確実な自動化ができます。この2つを組み合わせることで、実際の業務にありがちな「タイミングのばらつき」に強い、壊れにくい自動化になります。

画像認識が特に役立つ場面

画像認識は、次のような状況で威力を発揮します。

  • ボタンやウィンドウの表示位置が毎回変わるアプリ
  • 読み込みや処理の完了を待ってから次に進みたいとき
  • 座標指定では対応しきれない、レイアウトが動的な画面
  • 特定のアイコンや状態が現れたことをきっかけに処理したいとき

逆に、画像認識にも限界はあります。対象の見た目が頻繁に変わるデザインや、半透明・アニメーション付きの要素は、一致判定が不安定になりがちです。また、画面全体を走査するため、座標指定に比べるとわずかに処理時間がかかります。すべてを画像認識に置き換えるのではなく、「座標指定で十分な箇所は座標で、位置が動く箇所だけ画像認識で」と使い分けるのが、実用的で速い自動化のコツです。

テンプレート画像を上手に用意するコツ

画像認識の精度は、登録するテンプレート画像の質に大きく左右されます。コツはいくつかあります。まず、目印にする範囲は「小さく、特徴的に」切り取ることです。ボタン全体ではなく、そのボタン特有のアイコンや文字だけを切り取ると、他の要素と間違えにくくなります。逆に範囲を大きく取りすぎると、周囲のわずかな変化(背景色や隣の要素)で一致しなくなることがあります。

次に、色や状態が変わりやすい部分は避けることです。マウスを乗せると色が変わるボタンや、選択状態でハイライトされる箇所を目印にすると、状況によって一致しなくなります。常に同じ見た目を保つ、安定した部分を選びましょう。また、画面の表示倍率が変わると画像のサイズも変わるため、テンプレートは実際に運用する解像度・倍率でキャプチャしておくのが確実です。こうした小さな配慮の積み重ねが、画像認識の成功率を大きく引き上げます。

画像認識とその他の手法を組み合わせる

画像認識は強力ですが、万能ではありません。実務で堅牢な自動化を作るには、複数の手法を適材適所で組み合わせるのが正解です。位置がまったく動かないボタンは、素早い座標指定で十分です。位置が動くボタンや、表示までに時間がかかる要素だけを画像認識に任せる。さらに、画面の文字情報を読み取りたい場合はOCR(文字認識)を、外部サービスと連携したい場合はHTTP通信を——というように、目的に応じて手法を使い分けます。

makuroku は、これらの手法を一つのスクリプトの中で自由に組み合わせられます。「WAIT_IMAGEで画面の準備を待ち、FIND_IMAGEでボタンを探してクリックし、OCRで結果の数値を読み取り、条件分岐で処理を分ける」——といった、人間の作業に近い柔軟な自動化を、一本の流れとして記述できます。単一の手法に固執せず、それぞれの長所を活かして組み合わせる。この発想が、現場で本当に使える自動化への近道です。

画像認識がうまくいかないときの対処

画像認識を使い始めると、「登録したはずの画像が見つからない」という場面に出くわすことがあります。原因はいくつか考えられます。もっとも多いのが、テンプレート画像を撮ったときと、実際に探すときとで、画面の表示倍率や解像度が違うケースです。この場合、画像のサイズが変わってしまうため一致しません。運用する環境と同じ設定でテンプレートを撮り直すのが確実な対処です。

次に多いのが、一致のしきい値が厳しすぎるケースです。100%の完全一致を求めていると、ほんのわずかな色味の違いやアンチエイリアスの差で見つけられなくなります。しきい値を少し下げて、90%程度の類似で一致と判定するようにすると、安定することが多いです。ただし下げすぎると誤検出が増えるので、実際の画面で試しながら、ちょうどよい値を探るのがコツです。

それでも解決しない場合は、テンプレートに選んだ範囲そのものを見直しましょう。背景が変わりやすい部分や、選択状態でハイライトされる部分を目印にしていると、状況によって見た目が変わって一致しなくなります。常に同じ見た目を保つ、特徴的で安定した部分——固有のアイコンやロゴなど——に絞ると、成功率が上がります。「探しやすい目印を選ぶ」ことが、画像認識を安定させる最大のコツです。

画像認識は、最初こそ調整に少し手間がかかりますが、一度うまく設定できれば、座標指定では実現できない柔軟さを発揮します。ウィンドウが動いても、レイアウトが変わっても、「見た目」さえ同じなら正確に反応する——この堅牢さは、実際の業務で自動化を長く使い続けるうえで、大きな安心につながります。

画像認識を使った実践的なシナリオ

画像認識の実力を、具体的なシナリオで見てみましょう。たとえば、あるWebアプリで定期的にデータをダウンロードする作業を自動化するとします。このアプリは、ログインのたびに画面のレイアウトが微妙に変わり、ダウンロードボタンの位置も一定しません。座標指定のマクロでは、この変化に対応できず、すぐに壊れてしまいます。

ここで画像認識の出番です。まず、ダウンロードボタンのアイコンをテンプレート画像として登録しておきます。マクロは、WAIT_IMAGEでページの読み込み完了を待ってから、FIND_IMAGEでダウンロードボタンを画面から探し出し、その位置をクリックします。ボタンがどこに表示されても、見た目さえ同じなら正確に見つけてクリックできるため、レイアウトの変化に左右されない、安定した自動化になります。

さらに、ダウンロード完了を示すメッセージが表示されるまでWAIT_IMAGEで待ってから次の処理に進めば、通信が遅い日でも取りこぼしがありません。このように、画像認識は「画面の状態を見て、適切なタイミングで、適切な場所を操作する」という、人間なら当たり前に行っている判断を自動化に持ち込みます。だからこそ、実際の業務環境という「変化に満ちた場所」でも、壊れにくい自動化を作れるのです。

こうしたシナリオは、Webアプリだけでなく、デスクトップアプリや業務システムなど、あらゆる場面に応用できます。「位置が動く」「タイミングが読めない」といった、これまで自動化を諦めていた作業も、画像認識を使えば射程に入ります。まずは、あなたが「毎回位置がずれて困っていた」作業を思い浮かべ、それを画像認識で安定させることから始めてみてください。

壊れにくい自動化をつくるために

自動化が現場で「使い物になる」かどうかは、想定外の状況にどれだけ耐えられるかで決まります。記録した座標だけに頼った自動化は、最初の一回はうまく動いても、環境が少し変わっただけで止まってしまいがちです。そこに画像認識を組み合わせることで、「見た目を頼りにクリックする」「画面が整うまで待つ」といった、人間が無意識に行っている判断を自動化に取り込めます。

makuroku は、GUIでの録画に加えて FIND_IMAGE・WAIT_IMAGE といった画像認識コマンドを標準で備えています。まず操作を記録して骨組みを作り、位置が動く箇所やタイミング待ちが必要な箇所だけ画像認識に置き換える——この組み合わせで、最初の想定外で壊れるのではなく、現実の乱雑さに耐える自動化を作れます。全機能を無料で試せるので、まずは「毎回位置がずれて困っていた作業」を画像認識で安定させてみてください。

無料で試す

それ、makuroku で自動化できます

makuroku はマウス・キーボード操作を記録して自動再生。物足りなくなったら SCR スクリプトや AI(MCP)連携も。全機能を Windows で無料で使えます。