【初心者向け】SikuliXを入れたらまずやるべきチュートリアル5選
いつもの業務を自動化するのに役立つ「SikuliX」。無料で使えるOSSのRPAツールということで、ひとまずダウンロードしてみたという方もいるのではないでしょうか。
とりあえず起動させてみたはいいものの、基本操作がわからず途方にくれていませんか?本記事では、「SikuliX」をダウンロードしてから最初に始めるべきチュートリアルを画像付きでわかりやすく解説しています。
まずは焦らず、本チュートリアルをこなしてみましょう。意味がわからないところがあっても最初は手を動かすことが大事です。実際にチュートリアルを通して「SikuliX」に触れることで自動化の流れやイメージをつかんで頂ければ幸いです。
※本チュートリアルはSikuliX公式チュートリアルを参考にしています。
目次
まずは入力欄にテキストを入力してみよう!
まずは、入力欄にテキストを表示させてみましょう。このチュートリアルでは、以下の画像のようにWindowsスタート画面の入力欄に「Hello, World!」と文字を入力するところまで自動化します。
それでは開発画面を開き、「スクリーンショットを撮る」ボタンをクリックしてください。
すると、キャプチャ画面が開くので、Windowsアイコンを囲むように指定してください。
キャプチャが完了すると、開発画面にアイコンが表示されます。
アイコンを囲むようにクリックコマンドを書くことで、アイコンをクリックする処理になります。
次にタイプコマンドを使って文字を入力しましょう。カッコ内に入れた文字が入力されます。
これで文字入力は完了です。実行してみると、タスクバーの入力欄に文字がタイプされました。これで画面キャプチャとクリック、タイプができるようになりました。
複数のチェックボックスに一度でチェックを入れる
チェックボックスを題材に画面内の同じ要素を繰り返しクリックする処理を作ります。下記のようにチェックボックスが複数ある場合、すべてクリックするにはどうすればいいでしょうか?
クリック処理を一つ書いただけではひとつしかチェックが入りません。すべてチェックするには、同じ要素のものをすべて識別し、一つひとつクリックするよう処理を書いていきます。
まずは、チェックボックスのスクリーンショットを撮りましょう。
このチェックボックスをすべて取得するには「findAllコマンド」を使います。「findAllコマンド」を使うことで、画面内の同じ画像をすべて探し出せるようになります。
取得したチェックボックス一つひとつ繰り返しクリックするには「for文」を使います。「for文」とは制御構文の一つで、繰り返し処理を記述する際に使用する構文です。
オブジェクトとは、繰り返し処理を行う対象を意味します。変数は一時的な保管スペースです。繰り返し対象のオブジェクトが一つずつ変数と呼ばれる入れ物に入り、「繰り返す処理」で実行させたい処理を指定していきます。
「for文」の書き方を踏まえ、画面内のすべてのチェックボックスを一つずつ繰り返しクリックする処理を書いてみましょう。ここではオブジェクトとしてすべてのチェックボックスを保持している「findAll」コマンド、変数として任意の英字「x」を指定しています。
これで画面内のチェックボックスをすべてクリックする処理は完了です。
複数のチェックボックスの中から特定の一つにチェックを入れる
複数のチェックボックスすべてにチェックを入れることができましたが、特定の一つのみチェックを入れる場合はどうでしょう。今回は「Book」のチェックボックスにチェックを入れてみたいと思います。チェックボックスの形はすべて同じなので区別できません。
この場合、ほかの目印を起点として相対位置から特定のポイントを指定するという方法があります。今回は「Book」を起点にするので、スクリーンショットを撮りましょう。
次はBookを探し当てる「findコマンド」を使用します。「findコマンド」を使うことで特定の画像を探し出せます。
「findコマンド」で探してきた「Book」テキストはそのままでは使えないので、一時的な保管場所である変数「text」に保管します。
そして、「Book」テキストを保管した変数をクリックコマンドで囲うことでクリック処理を自動化できるようになります。
しかし、このままでは、テキストをクリックするだけになってしまいます。「Book」の左に位置するチェックボックスを指定するには、「Book」画像をクリックしてパターン設定ダイアログのターゲットオフセットをクリックします。
ターゲットオフセットでは、指定した画像の相対位置を簡単に指定できます。チェックボックスを指定して、「OKボタン」をクリックします。
すると「Book」画像に赤い十字が表示されました。この印が「Book」テキストの起点を意味します。
それでは実行してみましょう。意図したとおりに「Book」テキストのチェックボックスのみにチェックが入ります。
スライダーを操作する
次はこのようなスライダーを操作するチュートリアルです。まずは通常のドラッグアンドドロップで操作する処理を書いてみましょう。
ここではドラッグアンドドロップコマンドを使用します。最初の値として「スライダー画像」を指定し、2つ目の値としてマウスを離すポイントのスクリーンショットを指定します。
これで、1つのスライダーを操作する処理は完了です。では、スライダーが2つある場合はどうでしょう。先ほどは1画面に1つのスライダーしかなかったので迷わず識別できました。しかし、形が同じものが複数存在すると最初に認識したものにしか操作が適用されません。
この場合、ほかの目印から任意のスライダーを特定する必要があります。今回は下のスライダーを操作するために「システム音」テキストを目印にします。「システム音」テキストの右にあるスライダーを探すよう命令するには「rightコマンド」を使います。
探してきたスライダーをドラッグアンドドロップ処理すれば、下のスライダーだけを操作することができます。
アプリケーションの状態を監視する
デスクトップ画面を監視し、変化があったらポップアップ表示する処理を作ってみましょう。今回はチャットアプリの「Slack」のステータスを監視し、ログアウトしたらダイアログをポップアップさせる処理を作ります。「Slack」でなくてもスカイプやフェイスブックといったステータスが表示されるアプリであればなんでもかまいません。
最初はメンバーがログインしている状態をスクリーンショットしましょう。
自動化の流れとしては、数秒おきにログイン状態を示す画像が存在するかチェックし、ログイン画像が消えたときにダイアログを表示させます。
特定の画像が存在することを判定するには「exists」コマンドを使います。そして繰り返し処理として制御構文の「while文」を使います。繰り返し条件の判定が真である限り、「while文」で囲まれた処理が繰り返されます。
それでは「while文」と「existsコマンド」を使って処理を書いてみましょう。
続いて、画像を確認した後に数秒間処理を停止させる処理を書いていきます。任意の間隔で処理を停止させるには「sleepコマンド」を使います。コマンドに入れた秒数分だけ処理が止めることが可能です。
以上で監視の処理は完了です。メンバーがログインしているときは緑色の印が表示されますが、ログアウトすると印が消え、繰り返し処理から抜けて次の処理に進みます。
処理を抜けたときにダイアログをポップアップさせるには「popupコマンド」を使います。表示させたい文字をカッコ内に入れましょう。
これで実行してみましょう。まずはログインしている状態で自動化処理を実行します。メンバーがログアウトするとダイアログがポップアップすることを確認してください。
まとめ
「SikuliX」の基本操作をチュートリアル形式で解説しました。画像とコマンドを組み合わせて自動化していく流れがつかめたでしょうか。
本記事で紹介しているコマンドはごく一部です。「SikuliX」の機能はまだまだたくさんあるので、一つ一つ解説する記事を紹介する予定です。
【 2019/9/12 追記】書きました!
Regionとは?SikuliXで画面領域を扱うRegionクラスの基本的な使い方
本記事を通して、「SikuliX」による自動化処理の流れをつかんでいただければ幸いです。