【初心者向け】SikuliXを入れたらまずやるべきチュートリアル5選

【初心者向け】SikuliXを入れたらまずやるべきチュートリアル5選

SikuliXチュートリアルアイキャッチ

いつもの業務を自動化するのに役立つ「SikuliX」。無料で使えるOSSのRPAツールということで、ひとまずダウンロードしてみたという方もいるのではないでしょうか。

とりあえず起動させてみたはいいものの、基本操作がわからず途方にくれていませんか?本記事では、「SikuliX」をダウンロードしてから最初に始めるべきチュートリアルを画像付きでわかりやすく解説しています。

まずは焦らず、本チュートリアルをこなしてみましょう。意味がわからないところがあっても最初は手を動かすことが大事です。実際にチュートリアルを通して「SikuliX」に触れることで自動化の流れやイメージをつかんで頂ければ幸いです。

※本チュートリアルはSikuliX公式チュートリアルを参考にしています。

まずは入力欄にテキストを入力してみよう!

まずは、入力欄にテキストを表示させてみましょう。このチュートリアルでは、以下の画像のようにWindowsスタート画面の入力欄に「Hello, World!」と文字を入力するところまで自動化します。

文字入力チュートリアル完成イメージ

それでは開発画面を開き、「スクリーンショットを撮る」ボタンをクリックしてください。

SikuliXIDE

すると、キャプチャ画面が開くので、Windowsアイコンを囲むように指定してください。

Windowsアイコンを囲うようにキャプチャ

キャプチャが完了すると、開発画面にアイコンが表示されます。

Windowsアイコン

アイコンを囲むようにクリックコマンドを書くことで、アイコンをクリックする処理になります。

Windowsアイコンクリック処理

次にタイプコマンドを使って文字を入力しましょう。カッコ内に入れた文字が入力されます。

typeコマンドによる文字入力処理

これで文字入力は完了です。実行してみると、タスクバーの入力欄に文字がタイプされました。これで画面キャプチャとクリック、タイプができるようになりました。

文字入力チュートリアル完成イメージ

複数のチェックボックスに一度でチェックを入れる

チェックボックスを題材に画面内の同じ要素を繰り返しクリックする処理を作ります。下記のようにチェックボックスが複数ある場合、すべてクリックするにはどうすればいいでしょうか?

複数チェックボックスサンプル

クリック処理を一つ書いただけではひとつしかチェックが入りません。すべてチェックするには、同じ要素のものをすべて識別し、一つひとつクリックするよう処理を書いていきます。

まずは、チェックボックスのスクリーンショットを撮りましょう。

チェックボックスキャプチャ

このチェックボックスをすべて取得するには「findAllコマンド」を使います。「findAllコマンド」を使うことで、画面内の同じ画像をすべて探し出せるようになります。

findAllコマンド例

取得したチェックボックス一つひとつ繰り返しクリックするには「for文」を使います。「for文」とは制御構文の一つで、繰り返し処理を記述する際に使用する構文です。

for文の書き方

オブジェクトとは、繰り返し処理を行う対象を意味します。変数は一時的な保管スペースです。繰り返し対象のオブジェクトが一つずつ変数と呼ばれる入れ物に入り、「繰り返す処理」で実行させたい処理を指定していきます。

「for文」の書き方を踏まえ、画面内のすべてのチェックボックスを一つずつ繰り返しクリックする処理を書いてみましょう。ここではオブジェクトとしてすべてのチェックボックスを保持している「findAll」コマンド、変数として任意の英字「x」を指定しています。

全チェックボックスクリック処理

これで画面内のチェックボックスをすべてクリックする処理は完了です。

複数のチェックボックスの中から特定の一つにチェックを入れる

複数のチェックボックスすべてにチェックを入れることができましたが、特定の一つのみチェックを入れる場合はどうでしょう。今回は「Book」のチェックボックスにチェックを入れてみたいと思います。チェックボックスの形はすべて同じなので区別できません

複数チェックボックスサンプル

この場合、ほかの目印を起点として相対位置から特定のポイントを指定するという方法があります。今回は「Book」を起点にするので、スクリーンショットを撮りましょう。

「Book」テキストキャプチャ

次はBookを探し当てる「findコマンド」を使用します。「findコマンド」を使うことで特定の画像を探し出せます。

findコマンド例

「findコマンド」で探してきた「Book」テキストはそのままでは使えないので、一時的な保管場所である変数「text」に保管します。

findコマンドを変数に格納

そして、「Book」テキストを保管した変数をクリックコマンドで囲うことでクリック処理を自動化できるようになります。

「Book」テキストクリック処理

しかし、このままでは、テキストをクリックするだけになってしまいます。「Book」の左に位置するチェックボックスを指定するには、「Book」画像をクリックしてパターン設定ダイアログのターゲットオフセットをクリックします。

ターゲットオフセットでは、指定した画像の相対位置を簡単に指定できます。チェックボックスを指定して、「OKボタン」をクリックします。

ターゲットオフセット設定画面

すると「Book」画像に赤い十字が表示されました。この印が「Book」テキストの起点を意味します。

ターゲットオフセット完了印

それでは実行してみましょう。意図したとおりに「Book」テキストのチェックボックスのみにチェックが入ります。

スライダーを操作する

次はこのようなスライダーを操作するチュートリアルです。まずは通常のドラッグアンドドロップで操作する処理を書いてみましょう。

ボリュームスライダー例

ここではドラッグアンドドロップコマンドを使用します。最初の値として「スライダー画像」を指定し、2つ目の値としてマウスを離すポイントのスクリーンショットを指定します。

dragDropコマンド例

これで、1つのスライダーを操作する処理は完了です。では、スライダーが2つある場合はどうでしょう。先ほどは1画面に1つのスライダーしかなかったので迷わず識別できました。しかし、形が同じものが複数存在すると最初に認識したものにしか操作が適用されません

複数スライダー例

この場合、ほかの目印から任意のスライダーを特定する必要があります。今回は下のスライダーを操作するために「システム音」テキストを目印にします。「システム音」テキストの右にあるスライダーを探すよう命令するには「rightコマンド」を使います。

rightコマンド例

探してきたスライダーをドラッグアンドドロップ処理すれば、下のスライダーだけを操作することができます。

複数スライダー操作処理

アプリケーションの状態を監視する

デスクトップ画面を監視し、変化があったらポップアップ表示する処理を作ってみましょう。今回はチャットアプリの「Slack」のステータスを監視し、ログアウトしたらダイアログをポップアップさせる処理を作ります。「Slack」でなくてもスカイプやフェイスブックといったステータスが表示されるアプリであればなんでもかまいません。

Slack画面

最初はメンバーがログインしている状態をスクリーンショットしましょう。

Slackキャプチャ画面

自動化の流れとしては、数秒おきにログイン状態を示す画像が存在するかチェックし、ログイン画像が消えたときにダイアログを表示させます。

特定の画像が存在することを判定するには「exists」コマンドを使います。そして繰り返し処理として制御構文の「while文」を使います。繰り返し条件の判定が真である限り、「while文」で囲まれた処理が繰り返されます。

while文の書き方

それでは「while文」と「existsコマンド」を使って処理を書いてみましょう。

while文, existsコマンド例

続いて、画像を確認した後に数秒間処理を停止させる処理を書いていきます。任意の間隔で処理を停止させるには「sleepコマンド」を使います。コマンドに入れた秒数分だけ処理が止めることが可能です。

sleepコマンド例

以上で監視の処理は完了です。メンバーがログインしているときは緑色の印が表示されますが、ログアウトすると印が消え、繰り返し処理から抜けて次の処理に進みます。

Slackステータスの変化

処理を抜けたときにダイアログをポップアップさせるには「popupコマンド」を使います。表示させたい文字をカッコ内に入れましょう。

popupコマンド例

これで実行してみましょう。まずはログインしている状態で自動化処理を実行します。メンバーがログアウトするとダイアログがポップアップすることを確認してください。

まとめ

「SikuliX」の基本操作をチュートリアル形式で解説しました。画像とコマンドを組み合わせて自動化していく流れがつかめたでしょうか。

本記事で紹介しているコマンドはごく一部です。「SikuliX」の機能はまだまだたくさんあるので、一つ一つ解説する記事を紹介する予定です。

【 2019/9/12 追記】書きました!

Regionとは?SikuliXで画面領域を扱うRegionクラスの基本的な使い方

本記事を通して、「SikuliX」による自動化処理の流れをつかんでいただければ幸いです。