無料 RPA のマウス操作の基本を操作の記録から学ぶ

FacebooktwitterredditpinterestlinkedinmailFacebooktwitterredditpinterestlinkedinmail

高機能な無料 RPA ツールのPulover’s Macro Creator(PMC)の使い方を1から解説するシリーズ。3回目の今回は、マウス操作についての解説を行います。

本シリーズは連続となっているので、できれば第一回の「【無料 RPA 】Pulover’s Macro Creator v5.4の使い方を解説 1」から読んでいただくと分かりやすいかと思います。

無料 RPA の Pulover’s Macro Creator でマウスを操作する

RPA においてもショートカットキーがとても大切であるという話は前回しましたが、キーボード操作だけだったら別にWindows を使う理由はないわけで、昔ながらのMS-DOSで黒い画面をいじっていてもいいのです。そうではなくて、複数のウィンドウを開いて、グラフィカルな操作ができることがWindowsの利点です。

そして、キーボードショートカットが充実してきたWindows ですが、やはり微妙にマウスでないとしっくり来ない部分があります。

ということで今回は、マウスの操作について解説したいと思います。本来は、マウスの操作についてはウィンドウクラスやウィンドウに対するメッセージなどとセットで扱わないと面倒なのですが、いっきに解説すると初心者は混乱してしまいがちなので今回はマウスだけに絞ります(今は当たり前ですが、PCの世界においてウィンドウをマウスで操作するというのは大変なことだったのです)。

関連記事

本連載の他の記事や、Pulover’s Macro Creator の関連情報は以下の記事にまとめています。

【無料RPA】Pulover’s Macro Creator まとめ【ゲームマクロ】

初めての RPA 自作のときは記録から

RPA を自作するときに、最初からコマンドの種類を調べて記述してもいいですが、なんのヒントもないと不便なので操作の記録から行いましょう。そうすると、(PMCの場合)どんなタイプが使われて、どんなオプション(プログラム、PCの用語でパラメータと言います)を入力するか、分かりやすいからです。

また、最終的に他のコマンドで置き換えるにしても、大体の骨格が最初にできあがっていると、作業に取りかかりやすくなります。

ということで、前回作成した電卓を起動するマクロ・ RPA を開きます。もし、まだ作成していなければ、第一回から順に分かりやすいチュートリアルになっているので、ぜひ作ってから戻って来て下さい。

マウスも含めて記録する

チュートリアルの通りに設定されている場合、PMCの記録する操作の設定が、キーボードだけになっています。これを、以下のようにして、「マウスのクリック」と「ホイールの操作」も記録するようにします(マウスの移動は不要です!)。

そうしたら、次に、前回の通りの場合は、「Enter」のチェックボックスが入っていないはずなので、チェックを入れて RPA を実行して、電卓が起動することを確認します。上手く起動しない場合などは、ディレイの値を調整してみてくださいね。

無事、電卓が起動したら、今度は電卓を起動するコマンドが記されたタブの「まま」、Ctrl + R, F9を押して操作を記録します。

ここでは、「1, 2, 3, +, 4, 5, 6, =」とクリックしてから、もう1度F9を押して記録を終了します。すると、以下のように、一連の電卓の起動アクションの後に、Left Move & Click アクションが記録されています。

上手く記録されていない場合、タブが増えてしまっている場合はF9ではなくF10を押してしまっているなどが考えられるので、もう一度手順を確認してためしてください。

動作の確認を行う

今作成した RPA の動作を確認する前に、Enterの後に適切な遅延・ディレイをかけてあげましょう。電卓アプリは軽量ですが、それでも起動に数百ミリ~数秒はかかると思います。ちょうどよさそうなディレイを設定したら(起動までに意外に時間がかかるので、長めに2, 3秒設定した方が安定します)、電卓は終了して RPA を実行してみます。

どうでしょうか、上手く動かなかったのではないでしょうか?(上手く行った方は、次節以降をなんとなく読んでください)

おかしな部分を目で見て探す

では、失敗だ! と記録しなおす前に、アクション・コマンドのリストからおかしなところがないか探してみます。

すると、法則として

  • Left, DownとLeft, Upが交互に出ている
  • 数字がLeft, DownとLeft, Upでセットになっている
  • セットは合計8個

ということが分かります。ここまでやってきた皆さんなら、Left, Downがマウスの左ボタンを押し、Left, Upが左ボタンを放す、クリックのワンセットということが想像できますね(LWin Down, LWin Upもご覧ください)。

しかし、最初のLeft, Down と Left, Upだけ数値が異なり、特にLeft, Downの数値が明らかにおかしいですね。このコマンドをダブルクリックして修正しましょう。

おかしい数値(マウス座標)の修正

アクションをダブルクリックして編集画面を出すと、キーボード操作を送信していたときとは違った(当然ですが)ダイアログが出ます。

ここで、座標の部分を次に続くLeft, Upと同じ数値に置き換えます。Xの方が前の方にある数値ですね。修正出来たら、OKをクリックして閉じます。

再度のテスト

修正後、もう一度再生ボタンをクリックすると、今度は大体の人が上手く動作するようになったと思います。今までは正確に記録してくれていたのに、なぜ、このような現象が起きてしまったのでしょうか?

Windows PCで RPA を自作するときに重要な「座標系」の話

なんだか、すこし難しい表現が出てきてしまいましたが、できるだけ分かりやすく説明するつもりなので、少しおつきあいください。

Windows PCでは、デスクトップと呼ばれる、「背景に画像があり、ショートカットなどのアイコンがあり、その上にウィンドウがいくつも並べられる」仮想的な机の上があります。そしてこの仮想的な机には、小学校、中学校でならった2次元のグラフの座標・あるいは、地図の経緯度のような座標が割り当てられています。これをもとに、Windows PC では、ユーザー(私たちですね)がどこをクリックしたよ! という情報を管理します。

しかし、個別のウィンドウにしてみたら、「自分(のウィンドウ)は、どの位置にあって、デスクトップのどこをクリックされたらどんな処理をして……」と考えると非常にややこしいです。言葉で説明されている側もややこしいですね。

スクリーン座標とウィンドウ座標とクライアント座標

そこで、Windows PC では、デスクトップ全体の座標をあらわすスクリーン座標・個別のウィンドウの座標を管理するウィンドウ座標・個別のウィンドウの中でも、OSに依存しない部分を管理するクライアント座標(ざっくりいうと、タイトルや閉じるボタン、メインメニュー辺りを除いた領域)というものが設定されました。模式図を以下に示しますね。

原点(0, 0)はいずれも左上からスタートします。

たとえば、アクティブなウィンドウが、デスクトップの左上から(200, 100)の位置にあるとき、アクティブなウィンドウの座標系の(0, 0)はスクリーン座標で言うと(200, 100)になります。スクリーン座標の(300, 150)は、(アクティブなウィンドウの範囲であれば)、ウィンドウ座標では(100, 50)となります。

しかし、アクティブなウィンドウの位置を、(100, 50)に移動したときのスクリーン座標(300, 150)は、ウィンドウ座標では(200, 100)になってしまいます! ただ、ウィンドウ座標(100, 50)は、アクティブなウィンドウにとっては、常に同じ位置を意味します。今のウィンドウ座標(100, 50)は、スクリーン座標の(200, 100)を意味しています。

クライアント座標系はもう少し特殊で、OSが標準で提供してくれるコントロール部分を除いた領域になります。たとえば、Windows 10とWindows 7では、タイトルバーのあたりのデザインや大きさが大分違いました。この差を吸収しなければいけないときに、クライアント座標は便利でした。なぜ過去形かというと、モダンなアプリケーションでは、このOS標準のコントロールを装備しないものも多くなってきたからです。

単独のアプリケーションでは、ウィンドウ座標・クライアント座標だけを考えればいい

さて、RPA でも、普通のアプリケーション開発でも、1つのアプリケーションを考える場合には、「ウィンドウ座標」または「クライアント座標」を使うのが便利そうです。いちいち、今のウィンドウの位置が……とか、普通は考えたくないですから。

しかし、一方で、PCで動作する RPA は単独のアプリケーションではなくて、様々なアプリケーションを行き来するのが普通です。そして、そもそもデスクトップ自体にアクセスする場合もあります。そういった場合に備えて、 Pulover’s Macro Creator ではスクリーン座標を扱う方法や、途中でウィンドウ座標とスクリーン座標を切り替える方法も用意されています。ただ、基本的にはウィンドウ座標を扱うように設定されています。

おかしな部分を見直してみる

では、先ほどおかしな数値を出した部分を見直してみましょう。

マルチディスプレイのために、Xの値が非常に大きくなっていますが、おかしな部分だけスクリーン座標になっているようです。

どうしてこんなことが起きたかというと、Pulover’s Macro Creator でCtrl + R, F9 を押した直後は「どのウィンドウも選択されていない状態」となるため、ウィンドウ座標が使えずスクリーン座標で記録するしかなかったからです(あるいは、デスクトップのウィンドウ座標≒スクリーン座標)。

しかし、スタートメニューの検索から、アプリケーションを起動した場合は、何もしなければ新しく起動したアプリケーション(ウィンドウ)がアクティブになります。そうなると、電卓のウィンドウ座標としてPulover’s Macro Creatorがクリックの動作を解釈してしまって動作がおかしくなったということになります。

ですので、極端な話、Enter 後の猶予時間をとても長くして、電卓の操作が始まる前に別のアプリケーションをアクティブにした場合、やはりこの RPA はうまく動作しません。ある程度の対策はありますが、 RPA の動作中に人間がPCを操作するとおかしくなることがあるのは、ある種宿命みたいなものです。

もう少しだけ、安全に RPA が実行されるようにする

先に書いた通り、別のアプリケーションが人間の操作でアクティブになったりすると、この RPA は動作しません。不意に他のウィンドウが前面にでてきてしまうことは、ままあることなので少しだけ対策をいれます。

まずは、Enter より下のマウス操作部分をすべて消します。

消したら、もう一度操作を記録する前に、記録のオプションから「ウィンドウクラス」「ウィンドウのタイトル」にチェックをいれます。

これにより、ウィンドウを切り替えた場合などに「どのウィンドウをアクティブにしたよ」という情報が記録されるようになります。

あらためて、電卓を起動しておき、RPA のアクションを追加で記録します( 1,2, 3, +, 4, 5, 6, =)。

すると今度は、上記のような内容が記録されます。内容はほぼ一緒ですが、WinActivate というアクションが追加されているのが分かると思います。

これは、読んで字のごとく「このウィンドウをアクティブにするよ」という命令になります。右側の「ウィンドウ」のところにある文字が、どのウィンドウか Pulover’s Macro Creator (AutoHotKey)に指示している内容になります。今回はマウス回なので、詳細は今度にしますね。

まず、Enter直後のWinActivateはいらないので(記録の開始の通知がでてきたことを記録していると思われます)、Deleteで削除してしまいます。

次に、数字の1がクリックされるまで、電卓がアクティブになっていないため、今回もLeft Move & Clickの1つめがおかしい数字になっているので、2番目と揃えます。

最後に、WinActivate が2番目のLeft Move & Click の下に追加されています。これが「電卓をアクティブにするよ」という意味の命令なので、Enterの下まで、ドラッグで持っていきます。

これで、仮に電卓が起動されたあと、別のウィンドウをアクティブにしてしまったとしても、1の入力前までなら、もう1度電卓がアクティブにされるようになりました。とはいえ、電卓のボタンをクリックしている最中に、Alt + Tab などで切り替えてしまった場合には対応できません。こればかりは、操作しないようにする・余計な通知は切る、といった処理が必要になりますね。

おわりに

マウス回といいつつ、座標系の話が非常に長くなってしまいました。ただ、実務で RPA を自作しようと思うと、どうしても複数のアプリケーションを切り替える、座標がおかしなことにならないように気をつける、といったことは大事になってきます。

一方で、マウスの操作だけに関して言えば、「座標」そのものはありますが、キーボードと比較して、ボタンの数も限りがあるために文字の種類といった面倒さはありません。どちらかというと、どうやって「正しい座標」を RPA 上で作り出すかが大事です(そして画像認識などが必要になっていきます……)。

とはいえ、まだ左クリックだけなので、次回も引き続きマウス操作に関して解説をしていきたいと思います。

FacebooktwitterredditpinterestlinkedinmailFacebooktwitterredditpinterestlinkedinmail

1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

最新の記事