古くからある、無料 RPA (マクロ)ツールのPulover’s Macro Creatorについて基礎から解説する第2回です。
【無料 RPA 】Pulover’s Macro Creator v5.4の使い方を解説2 キーボード・文字列 基本編
今回は、前回から引き続きキーボード操作を行って行きたいと思います。とはいえ、前回は記録したマクロにディレイを追加するだけでしたが、今回は記録ではなく自分でアクションを選択して、 RPA シナリオに組み込んでいきたいと思います。
関連記事
本連載の他の記事や、Pulover’s Macro Creator のまとめは以下のページにあります。
なぜ RPA でキーボード・文字列入力からスタートするのか?
普段、マウスを多用して仕事をしている方も多いと思います。最近では、生産性の高い仕事のためにショートカットキーを覚えよう! という動きも多いようですが、実際のところまだまだ、簡単なCtrl + s, Ctrl + c, Ctrl + v, Ctrl + x …くらいという方も多いと思います(生産性の高い仕事って結局なんだ? ということに興味がある方はこの記事がおすすめです)。
人間が操作する場合は、ショートカットの方が素早く動きますが、 RPA の場合はどうでしょうか。前回みた通り、人間には不可能な速さで入力を行えるために、マウス操作でもいいような気がします。
しかし、実際には RPA でもキーボードで操作できる部分はキーボード操作を行わせた方がいいです。理由は、
- ステップ数(操作の数)自体が少なくてすむ
- 安定しやすい
という2点が挙げられます。
ステップ数が少ないとは?
たとえば、テキストファイルを全て選択してコピーするとしましょう。これをキーボードで行うと、
- Ctrl + A を押す
- Ctrl + C を押す
の2工程を作れば十分です。しかし、マウスで操作するとなると
- 編集メニューや選択メニューをクリックする
- 全選択をクリックする
- 編集メニューをクリックする
- コピーをクリックする
と2倍の工程を踏むことになります。実際には、メニューをクリックした後に、若干ディレイを入れる処理も必要でしょう。
安定しやすいとは?
Windows上では、それぞれのアプリケーションは自由に配置できます。あるときは全画面で、またあるときは小さくして並べて使用したりできます。
人間は、その状況を正確に目で見て認識できますが、 RPA 単体ではそこまでの高機能に至っていません(AIを組み込むとしても、コスト面で不利でしょう)。そこで、
- 画像認識でクリックしたいものを探す
- ウィンドウサイズを記録時の通りに変更する
といった処置が必要になります。しかし、画像認識はマクロ、 RPA シナリオ作成時にそれなりに手間ですし、性質上100%の動作保証が難しいことがあります。
ウィンドウサイズの変更については、全自動 RPA であれば問題にはなりにくいですが、人間の操作をアシストするタイプの半自動 RPA やショートカットキーの拡張といった使用方法の場合、不便さを感じることでしょう。
以上のような理由で、 RPA のシナリオを組む際にもできるかぎりショートカットキーを使用した方が、望む結果を素早く得られやすいため、キーボード・文字列の解説からスタートします。
前回の電卓マクロの改修
【無料 RPA 】Pulover’s Macro Creator v5.4の使い方を解説 1 で作成したpmcファイルは残っているでしょうか? 残っていなければ、前回の記事に戻って作り直してみてくださいね(一度、体験していれば5分もかかりません)。
今回は、「calc」と入力する部分を色々と変えていきたいと思います。
まとめて文字を送信する
前回は、calcの文字入力が、それぞれ別のアクションとして記録されていました。
記録の場合はそれでもいいですが、1つ1つ自分でアクションを入力していくときに、「cを押して、aを押して、lを押して……」と設定して行きたくはないですよね? できれば、「calcと入力。終わったら少し待ってEnter!」と処理したいところです。
文字入力の基本として、まずはそれをやっていきましょう。
下準備
まずは、前回作成した RPA シナリオから、calcと入力する部分を削除します。
(遅延は各自異なっていると思いますが)この中で、アクションが c, a, l, c, となっている部分を選択して、Deleteキーで削除します。さらに、Enter アクションの一番左にあるチェックボックス(インデックスの列)を外します。
上図のようになっていれば大丈夫です。チェックボックスを外すと、その部分のアクションが実行されずにスキップされます。Enterが押されてしまうと、ちゃんと文字が入力されているか確認する前にスタートメニューが閉じてしまうからです。
Send コマンドと SendRaw コマンド
テキスト送信の基本中の基本となるSend コマンドと、SendRaw コマンドを使って、文字列 を送信する RPA シナリオを作ってみましょう。
SendRaw コマンドの実験
- さきほどチェックを外したEnter アクションを、アクション一覧が記載されたパネルから選択します。
- F3キーを押します。
- 「テキスト」ダイアログが表示されるので、内容を設定していきます。
- テキストエディットに「+calc」(大文字小文字を正確に、+も忘れずに)
- 送信モードを「テキスト形式(RAW)」に
- 「コントロール」のチェックを外す
- 「遅らせる」の部分は、Enterのチェックボックスを外しているので、入れなくても構いません。
- OK を押して閉じます。
- 今設定した内容が追加されていることを確認します。
再生用のホットキーを押す、再生ボタンなどを押すなどして、再生してみます。どうでしょうか、ちゃんとスタートメニューに「+calc」と入力されたでしょうか?
いや、電卓を起動したいのにこれでは困りますね? ですがここではこのまま、次に進みます。
Send コマンドの実験
先ほど作成した「+calc」アクションをダブルクリックしてもう一度テキストダイアログを表示します(起動しない場合は、「編集」メニューから「編集」)。
そうしたら、1箇所だけ変更をします。
送信モードを「テキスト形式(RAW)」から「コマンドを記述したテキスト」に変えます(キー遅延を設定 は今は使いません)。変更後、OKを押すと、アクションの一覧はほとんど変化していませんが、「タイプ」だけ「SendRaw」から「Send」に変わっています(このタイプがコマンドでもありタイプでもあるのでややこしいです)。
では、無事「Send」に変わっているのを確認したら、Enterのチェックボックスが外れていることももう一度確認し、 RPA シナリオを再生します。
どうでしょうか。今度は一致する検索結果に「電卓」が出てきたと思います。そして注目して欲しいのが、検索ウィンドウには「Calc」と最初のcだけ大文字で入力されているのが分かります。この違いが「テキスト形式(RAW)」(SendRaw)と「コマンドを記述したテキスト」(Send)のもっとも大きな違いになります。
「テキスト形式(RAW)」(SendRaw)と「コマンドを記述したテキスト」(Send)の違い
詳細に解説すると、とても長くなってしまうので簡単に説明します。
- 「テキスト形式(Raw)」(SendRaw) コマンドは、テキストエディットに入力された文字を、そのままキー入力として送信します。
- 「コマンドを記述したテキスト」(Send)は、いくつかの文字を「特別な命令(コマンド)」と解釈して、キー入力を送信します。
- +c は、「テキスト形式(Raw)」(SendRaw)コマンドでは、 + キー(Shift + ;), c キーとして送信されます。
- +c は、「コマンドを記述したテキスト」(Send)では、Shit + c キーとして送信されます。
- Sendコマンドでは、ショートカットキーの連続を楽に入力できます。
- SendRaw コマンドでは、見たままのローマ字入力を楽に入力できます。
- ただし、日本人はあまりSendRawは使わないかもしれません……。
「テキスト形式(RAW)」(SendRaw)も「コマンドを記述したテキスト」(Send)も、一連のローマ字によるキー入力を送信します。ただ、SendRawがひたすら入力された文字の通りを入力しようとするのに対して、Sendではショートカットキーの入力などを補助したり、通常1文字で表現されないキー(Enterキー)などを楽に入力するためにいくつかの文字を特殊な命令として解釈されます。
よく使われる修飾キーは
- ^ Ctrl
- + Shift
- ! Alt
- # Windows
となります(LuaMacros と一緒です)。また、{} でくくるとそこが特別なキーを送信する命令のように扱われます。
特別なキーを送信するコマンド一覧は、ここに載せると長くなってしまうので、リンク先の AutoHotKey 日本語Wiki を参照してください。
Send で + 文字を入力するには?
ではここで「じゃあ、+calcと 「コマンドを記述したテキスト」(Send)で入力するには?」という疑問が湧きます。上記のリンク先にも答えがありますが、いくつかパターンがあります。
- {+}calc と入力する
- +;calc と入力する(日本語キーボードの場合)
- {NumpadAdd}calc と入力する
最初の例は、{}でくくることで、この中の+は特殊文字ではないですよ、と指示する方法。
2番は、Shift + ; とショートカットキーのように入力させることで、+を入力させる方法。
3番目は、テンキーの+を押したよ、とすることで+を入力させる方法。
となっています。テンキーについては、NumLockなどの影響もあり、2番目はキーボードの種類が違う場合は動きません。ですので、安定するのは1番の方法だと思います。
もしかして、1行で電卓を起動できない?
ここまで読んで、「そんなにいろんなキーを入力できるなら、キーボード操作だけで電卓起動できるんだし、1つのアクションですむんじゃない?」と思ったかもしれません。
では実験してみましょう。
今の RPA シナリオ(マクロ)はそのまま残したいので、Pulover’s Macro Creatorのメインウィンドウ上で、Ctrl + T を押して、新しいマクロを作成します(空白のタブが開くはずです)。ここに作って行きましょう。
設定する内容は以下の画像のようになります。{LWin}calc{enter}が一連のキー操作ですね。実行するとどうでしょう? 上手く動きましたか?
よほどのスーパーコンピューターをお持ちでも、おそらく動作しないのではないでしょうか。何故なら、Windowsキーを押してから、一切の隙なくキー処理を行っているため、スタートメニューを開くような余地すらないはずです(マルチコアが上手く効くと……もしかしたら……)。
それにそもそも、PCがcalcという文字から、「電卓」を探す時間も必要でしたね。では、このアクションにディレイをかけていきます。さきほど入力したアクションをダブルクリックして編集します。
「コマンドを記述したテキスト」の下にある「キー遅延を設定」にチェックを入れ、入力できるようになった「キー遅延」に、ここでは仮に200(0.2秒)を入力します。
OKを押してから実行してみます。今度は、うまく動いた方も多いのではないでしょうか。もし上手く動かなかったら、キー遅延をもっと長くしてみてください。
ただ、なんだかちょっと、さっきまでの動作と比べると遅いような感じがします。というのも、この「キー遅延の設定」は全てのキーの入力の後に遅延を入れていくため、合計で1秒ほど実行に時間がかかっているからです。1秒くらいならいい気もしますが、実用的かというと、少し微妙ですね。
ですので、このマクロは失敗作ということで、タブを右クリックして削除してしまいましょう。
{Sleep}ってあるけど?
Wiki のキー一覧を見に行くと{Sleep}という特殊キーが設定されているのが分かります。ただ、これはそこで何秒間か(何ミリ秒間か)停止する、というコマンドではなく、一部のキーボードに搭載されているPCをスリープさせるためのキーを送信するときに使うコマンドです。
PCの設定次第ではありますが、うっかり使用してスリープモードになって慌てる……ということがないようにしたいですね。
「電卓」じゃなくてLibreOffice Calcが起動しちゃうんだけど!
Windowsキーからの検索は、ユーザーの使用履歴などにも依存してしまうので、必ずしも電卓が起動するとは限りません。とくに、calcという単語で検索するのでは、誤検索が増えてしまいます。
そこで、今度は日本語で「電卓」と検索してみましょう。
※もし、まだ先ほどの1行で起動する方法のマクロタブを残している方がいたら、もともとあった、キー入力が別々に記録されているマクロのタブに戻して置いてください。
アクション[Text]を編集する
+calc と入力するアクションが残っているはずなので、ダブルクリックして編集画面を表示します。
テキストエディットには「電卓」、送信モードは「クリップボードから貼り付け」を設定します。
OKを押して、RPA シナリオの動作確認をする前に、適当なテキストをコピーしておいてください(たとえば、「Pulover’s Macro Creator は 手軽で便利な RPA ツール」)。
それから、このマクロを実行すると期待通りに「電卓」が検索されると思います。ただ、筆者の環境では直接 Send などを使っていたときよりも、L Win Upアクションの「遅らせる」を長くしないと安定しにくくなりましたので、改めて何度かやってみて調整してみてください。
無事、安定して電卓が起動されるようになっても、ここで、よかったね……とはなりません。
クリップボードから貼り付け の弊害
ためしに、メモ帳を起動して「貼り付け」(Ctrl + v)をしてみてください。すると、「電卓」とペーストされます。
「クリップボードから貼り付け」のツールチップには「元の内容を復元する」と書かれていますが、version 5.4現在、復元されません(バグかもしれません)。AutoHotKey マクロのプレビューを見ても、復元されるような記載はないので、語訳かもしれません。
幸い、最新のWindows10ではすでに、Windows + v でクリップボードの履歴から貼り付けが可能なので大きな問題はありません。ただ、これの対応も可能ではなので、今は「そういうものだ」と思っておいて下さい(古いバージョンですが、過去記事の一部に解説があります)。今後、新バージョンでも変数を使ったやりかたを作成します。
とはいえ、今回は、ひとまずクリップボードへの影響があるとはいえ、日本語も入力できる RPA の自作まで成功しました。
「コマンドを記述したテキスト」Send で日本語は入力できる?
本記事内で「コマンドを記述したテキスト」はキー入力を送信する、という表現してきましたが、実は「コマンドを記述したテキスト」で直接日本語を送信することもできる場合があります。
ただ、日本語入力環境に依存するため、本記事では取り扱いません。他にやり方があるので、無理に利用する必要もないと思います。
おしまいに
今回は、Send, SendRaw, Clipboard タイプのコマンド、アクションを解説しました。ラジオボタンにはまだもう少し種類がありましたが、あの2種類は設定しなければいけない項目が多いため、今回は取り扱いません。その上、うまく動作する環境がどんどん減って言っているので……。
多分、ここまで基本の基本からPulover’s Macro Creator について解説した記事は他にないと思います。
コマンドの解説だけだと、「で、結局どう組み合わせたら動くの?」という、Pulover’s Macro Creator に限らず、RPA ツールやプログラミングで共通する壁にぶち当たってしまうので、できるだけ、シンプルでも「ちゃんとうごくもの」「動きそうで動かないもの」をベースに解説していきたいと思っています。
そういう積み重ねが、 RPA やマクロに限らず、プログラムを作れる能力を養っていけるので、引き続き勉強していきましょう。
3件のフィードバック