sikuliの自動化処理はマウス操作よりもキーボード操作を推奨する4つの理由
sikuliで動作の自動化を行う場合、①マウス操作での処理、②キーボード入力での処理、どちらの自動化を選択したほうがよいのでしょうか。
私はsikuliではキーボード入力方式を推奨しています。なぜsikuliはキーボード自動操作のコードを書くべきか、理由について解説したいと思います。
sikuliはマウスとキーボードの2種類の方法
sikulixで自動化を行うため、コードを書くにあたって、最初の分岐点が入力方法です。
sikulixでは大きく分けて、以下の2種類の入力方式でプログラミングします。
- マウス入力
- キーボード入力
マウス入力の場合、click(doubleClick)などのコマンドで画像認識したアイコンやボタンを(ダブル)クリックします。
キーボード入力の場合、typeコマンドでEnterキーを入力したり、カーソルを操作します。
メモ帳を起動する場合のsikuli操作
例えば、「メモ帳を開く」といった動作は、sikuliではマウス入力とキーボード入力どちらも可能です。
sikulixのマウス操作では、以下のコマンドで実行できます。
doubleClick("メモ帳のショートカットアイコンの画像")
キーボード操作の場合は、以下のコードで実行できます。
type("r",Key.WIN)
paste("notepad")
type(Key.ENTER)
普段使うマウス操作を選びがち
マウス操作による自動化とキーボード操作の自動化、どちらを選ぶかというと、マウス操作を選ぶ人が多いと思います。
普段パソコンを使っている場合は明らかにマウス操作に慣れているため、そちらで行うのが当たり前と感じるからです。
さらに、実際のコードにしてもマウス操作の場合は1行で済むのに対し、キーボード操作で3行必要になります。
しかし、私はマウスでもキーボードでも操作可能な場合は、まずキーボード操作でsikulixの自動化コードを書くようにしています。
sikuliではキーボード入力をオススメする4つの理由
sikuliで自動化する際に、キーボード入力のコードを書くことをオススメする理由として、マウス入力にはリスクがあるからです。
マウス操作の場合に自動化の処理に失敗することがあるのに対し、キーボード入力ではそうしたデメリットが発生しないメリットがあります。
①アイコンがウィンドウで隠れる
クリック対象のアイコンの上に何かのウィンドウが表示されていると、画像認識に失敗します。
もちろん、普段はデスクトップ表示では何も立ち上げなければよいです。
しかし、OS側で更新プログラムのお知らせや、セキュリティーソフトの通知など勝手に表示されることがあります。
そうした場合にデスクトップに表示されたお知らせが邪魔をすることがよく起こります。
②ソフトのバージョンアップでアイコンが変化
操作したいソフトウエアがバージョンアップした際に、アイコンの見た目が変化することがあります。
軽微な変化であれば引き続き認識できますが、アイコンが大きく変わった場合に画像認識できず、処理に失敗します。
そのため、再度画像のキャプチャが必要になり、sikuliの自動化プログラムをメンテナンスする必要があります。
③誰かの操作でアイコンが移動・削除
また、専用のPCであれば問題ありませんが、共有PCなどの場合、誰かの操作によってアイコンが移動させられたり、削除されてしまうこともあります。
そうした場合に目印にしていたアイコンが発見できずに、自動化プログラムが処理失敗することがあります。
④キーボード入力なら他のPCでコード流用可能
これはキーボード入力のメリットですが、キーボード入力の場合、どこかのPC用に作成すると、他のPCにも自動化のコードをコピーして実行できます。
マウス操作の場合、同じ解像度やアイコンの配置など環境がすべて同一なら流用できます。
しかし、ディスプレイの解像度が異なったり、タスクバーのアイコンが異なるとコードが実行できない場合があります。
以上の4点から、Sikuliではマウス操作を自動化するよりもキーボード操作を自動化することを推奨します。
まとめ・終わりに
今回、sikuliで動作を自動化する際にマウス入力とキーボード入力どちらがよいか紹介しました。
普段使い慣れているマウス操作の方が直感的で分かりやすく、コードもシンプルです。
しかし、画像認識を伴うため、何かのウィンドウでアイコンが隠れてしまったり、アイコンが変化すると、画像認識に失敗します。
それに対し、キーボード入力の場合は、そうした心配はありません。
sikuliによる自動化を進めていくと、失敗した自動化プログラムを再実行する手間はかなり大きいです。
そのため、失敗する可能性が少ない、キーボード入力でsikuliの自動化コードを書くことをオススメします。
ディスカッション
コメント一覧
まだ、コメントがありません