SikuliXのmatch(getLastMatch)の使い方

 

★悩み★
・直近で画面上を画像検索してマッチングした箇所を再び参照できない?
・SikuliXの「getLastMatch」といったmatch関数って何をする関数なの?
・SikuliXの「match関数とは」から「プログラム作成方法」まで知りたい。



こういった「悩み」に答えます。
 

★本記事の内容★
① SikuliXのmatch関数(getLastMatchとgetLastMatches)とは?
➁ 準備:SikuliXのインストールと起動
③ SikuliXのmatch関数(getLastMatchとgetLastMatches)を使う方法



これからご紹介する「SikuliXのmatch(getLastMatch)の使い方」を実践したことで、5分以内で「getLastMatchとgetLastMatchesを使った」自動操作ができました(下の動画参照)。
 

SikuliXでgetLastMatchとgetLastMatchesを使ったプログラム



記事の前半では「SikuliXのmatch関数とは?」から「利用メリット」を解説します。
記事の後半では「SikuliXでgetLastMatchとgetLastMatchesを使い自動操作する方法」を紹介します。
 

この記事を読み終えることで、「SikuliXにおいてmatch関数」を使える状態になります。
 

★SikuliXとは★
SikuliX(シクリ)とは、画像認識を用いたGUI操作自動化ツールです。簡単な操作で「エクセル入力の自動化」などに利用できます。「検索ボックスに検索ワードを入力して検索ボタンを押す」などの操作を自動化できます。
さらに詳しく知りたい方には、以下の記事がオススメです。
>> 【要点解説】SikuliXとは?を解消!3ステップで入門する方法を解説



ちなみに、筆者が2週間でSikuliXを学んだ方法や手順について以下で公開しています。皆様の学習の参考になれば嬉しいです。

>> SikuliXに0から入門し操作を自動化するまでのロードマップを公開中

 

SikuliXのmatch関数とは?


「SikuliXのmatch関数とは?」に関してご紹介します。
 

★SikuliXのmatch関連の情報★
・match関数の種類と記述方法
・match関数を利用するメリット



以降で、上記「SikuliXのmatch関連の情報」の各項目に関してご説明します。
 

match関数の種類と記述方法

「match関数の種類と記述方法」に関して説明します。
 

SikuliX内で使えるmatch関数の種類と記述方法に関して解説しますね。



SikuliXでは、以下のmatchを利用できます。
 

★matchの種類★
・getLastMatch
・getLastMatches



各関数の「機能」と「記述方法」に関して、以下にまとめます。
 

★getLastMatchの記述方法★
・処理
 最後に画像一致した箇所の位置情報などを取得する
・書き方
 getLastMatch()
・例
 click(getLastMatch())
・実行結果
 直前に画像一致した箇所をクリックする
・参照
 SikuliXのgetLastMatchのリファレンス(公式サイト)

  

★getLastMatchesの記述方法★
・処理
 最後に画像一致した全箇所の位置情報などを取得する
・書き方
 getLastMatches()
・例
 for f_item in getLastMatches():
  click(f_item)
・実行結果
 直前に画像一致した全箇所をクリックする
・参照
 SikuliXのgetLastMatchesのリファレンス(公式サイト)



以上が、「match関数の種類と記述方法」となります。
 

match関数を利用するメリット

「match関数を利用するメリット」に関して説明します。
 

筆者の体験談をもとにして、SikuliXのmatch関数(getLastMatchとgetLastMatches)のメリット関して解説しますね。



筆者は、この1年間でSikuliXを用いて、10件ほどの業務自動化を実施しました。
その経験を通して、match関数(getLastMatchとgetLastMatches)のメリットは、以下だと感じました。
 

★match関数(getLastMatchとgetLastMatches)のメリット★
getLastMatchとgetLastMatchesを使うことで、SikuliXで作成したプログラムの処理速度を速くできます。



例えば、以下の場合だと、match関数(getLastMatchとgetLastMatches)を使ったプログラムの方が処理速度が速くなります。
 

★getLastMatchを使わない場合★
・プログラム例)
 wait(“画像.jpg”)
 click(“画像.jpg”)
・実行結果
 画像.jpgを画像検索し、画面上に「画像.jpg」が表示されるまで待機
 画像.jpgを画像検索し、画面上の「画像.jpg」をクリック
 → 画面上の画像検索を2回実施する

 

★getLastMatchを使う場合★
・プログラム例)
 wait(“画像.jpg”)
 click(getLastMatch)
・実行結果
 画像.jpgを画像検索し、画面上に「画像.jpg」が表示されるまで待機
 直前の画像検索結果を用いて、画面上の「画像.jpg」をクリック
 → 画面上の画像検索を1回実施する



以上より、match関数(getLastMatchとgetLastMatches)を使うことで、「画面上の画像検索の回数を削減」できるため、SikuliXで作成したプログラムの処理速度が速くなります。
 

以上が、「match関数を利用するメリット」となります。
 

画像検索を多用しているSikuliXのプログラムの処理速度を向上させたい場合、match関数(getLastMatchとgetLastMatches)の利用を検討してみてください。


 

準備:SikuliXのインストールと起動


「準備:SikuliXのインストールと起動」に関してご紹介します。
 

★SikuliXでmatch関数を使うための環境準備の手順★
手順1:SikuliXをインストール
手順2:SikuliXの起動



上記の流れで、「match関数(getLastMatchとgetLastMatches)を使うための環境準備」ができます。
 

上記の各手順は、以下の日時で動作確認済みです。
動作確認済み日時:2022年5月5日



以降で、上記「SikuliXでmatch関数を使うための環境準備の手順」の各手順に関してご説明します。
 

手順1:SikuliXをインストール

「手順1:SikuliXをインストール」に関して説明します。
 

お使いのパソコンにSikuliXをインストールしましょう。



「SikuliXをWindowsにインストールする手順」に関しては、以下の記事をご覧ください。
>> 【Windows向け】SikuliXのインストール手順と基本的な使い方
 

「macOS(Mac)にインストールする手順」に関しては、以下の記事をご覧ください。
>> 【Mac向け】SikuliXのインストール手順と基本的な使い方
 

以上が、「手順1:SikuliXをインストール」となります。
 

手順2:SikuliXの起動

「手順2:SikuliXの起動」に関して説明します。
 

インストールしたSikuliXを起動し、「match関数(getLastMatchとgetLastMatches)を使ったプログラム」を記載できる状態にしましょう。



「WindowsにインストールしたSikuliXを起動する手順」に関しては、以下の記事をご覧ください。
>> 【Windows向け】SikuliXのインストール手順と基本的な使い方
 

「macOS(Mac)にインストールしたSikuliXを起動する手順」に関しては、以下の記事をご覧ください。
>> 【Mac向け】SikuliXのインストール手順と基本的な使い方
 

以上が、「手順2:SikuliXの起動」となります。
 

Javaをインストールし、SikuliXのjarファイルをダウンロードすることで、簡単にSikuliXの環境を準備できます。
以降で、match関数(getLastMatchとgetLastMatches)を使ったプログラム作成方法に関して解説します。


 

SikuliXのmatch関数(getLastMatchとgetLastMatches)を使う方法


「SikuliXのmatch関数(getLastMatchとgetLastMatches)を使う方法」に関してご紹介します。
 

★SikuliXでmatch関数(getLastMatchとgetLastMatches)を使う方法★
① match関数(getLastMatchとgetLastMatches)を使ったプログラムを作成



SikuliXの「getLastMatchとgetLastMatches」を使うことで、「画面上の画像検索の回数を削減」できます。
 

上記の各手順は、以下の日時と環境で動作確認済みです。
動作確認済み日時:2022年5月5日
動作確認済み環境:macOS Catalina



以降で、上記「SikuliXでmatch関数(getLastMatchとgetLastMatches)を使う方法」の各項目に関してご説明します。
 

match関数(getLastMatchとgetLastMatches)を使ったプログラムを作成

「match関数(getLastMatchとgetLastMatches)を使ったプログラムを作成」に関して説明します。
 

SikuliXのgetLastMatchとgetLastMatchesを使ったプログラムを作成してみましょう。



メモ帳などのテキストエディタを起動し、下図のように「●」と「ー」を入力しましょう。
 

テキストエディタに「●」と「ー」を記入



続いて、起動したSikuliX上において、「スクリーンショットを撮る」をクリックし、テキストエディタに入力した「●」と「ー」の画像を撮影しましょう。
その後、以下のプログラムを作成してください。

  

match関数(getLastMatchとgetLastMatches)を使ったプログラム

 

# find関数で画像一致度が最も高い箇所をクリック
f = find(Pattern("1651713698116.png").similar(0.89))
click(getLastMatch())
sleep(5)
type("Clicked ")


# findAll関数で画像に一致した箇所を全てクリック
f_list = findAll(Pattern("1651712786891.png").similar(0.77).targetOffset(-2,0))
for f_item in getLastMatches():
    click(f_item)
    sleep(5)
    type("Clicked ")


print "SikuliXのgetLastMatch関数とgetLastMatches関数を使いました。"

 

上記で使った関数を詳しく知りたい方は、以下の記事をご覧ください。
・click()について
 >> SikuliXでマウスのクリックや移動操作を自動化
・sleep()について
 >> SikuliXでよく使うコマンドの一覧
・type()について
 >> SikuliXでキーボード入力操作を自動化する方法
・findAll()について
 >> SikuliXのfind()を使った画像検索を解説
・for()について
 >> SikuliXのforとwhileで繰り返し実行(loop)
・targetOffsetについて
 >> SikuliXでクリック(click)のオフセット(offset)と認識精度を設定



プログラム作成後、SikuliX上の「実行」ボタンをクリックします。

クリック後、下のデモ動画のように、match関数(getLastMatchとgetLastMatches)使った操作の自動化を実現できます。
 

match関数(getLastMatchとgetLastMatches)を使ったプログラムの実行例



以上が、「match関数(getLastMatchとgetLastMatches)を使ったプログラムを作成」となります。
 

SikuliXの「match関数(getLastMatchとgetLastMatches)」を使うことで、直前の画像検索結果を再利用できます。



ちなみに、「SikuliXをシステムで利用する場合の注意点」や「SikuliXでAndroidを操作する方法」などを知りたい方には、以下の記事で紹介している本がオススメです。
>> 【入門者向け】SikuliXの勉強に役に立つオススメ書籍3冊

 

【まとめ】SikuliXのmatch(getLastMatch)の使い方


いかがでしたでしょうか?
SikuliXで直前の画像検索結果を再利用する関数「getLastMatch」と「getLastMatches」の使い方をプログラムとデモ動画を用いて解説し、以下の悩みを解決しました。
 

★悩み★
・直近で画面上を画像検索してマッチングした箇所を再び参照できない?
・SikuliXの「getLastMatch」といったmatch関数って何をする関数なの?
・SikuliXの「match関数とは」から「プログラム作成方法」まで知りたい。



SikuliXで作成したプログラムの処理速度を向上させたい場合、「getLastMatch」と「getLastMatches」の利用を検討してみてください。

コメント