RPA / Power Automate Desktop を使ってWindowsアプリを自動実行してみた

本記事では、私のような初めて RPA を使う人が、非常に単純な作業の自動化をどの程度の期間で実装、運用できるものなのか、という事例と、実際に使ってみた印象をメモします。

【目次】

[1]はじめに

以前の記事『Puppeteer を使ってウェブスクレイピングしてみた』では、Puppeteer を使って Chrome の操作を自動化して Webスクレイピングを行った経験を書きました。

今回はブラウザではなく、Windows ネイティブアプリの画面操作を自動化する機会がありました。

具体的には、ある Windows ローカルアプリの画面から条件を入力してデータファイルを作成することを数万回繰り返すというものです。

作業そのものは非常に単純なものですが、数万オーダーのサンプルデータを作ろうとすると、個人の手作業ではとてもじゃないけどできません。

肉体的に大変というだけではなく、抜けや間違いなく条件を入力できていることを保証することも難しいし、何より、精神的に耐えられないと思います(笑)。

そこで思いついたのが「RPAを使ってみよう」でした。


とはいっても、私はこれまで RPA に触れる機会がなかったため、どのような製品を使えば、どの程度の期間で目的とする作業の自動化ができるのか、全く見当もつきませんでした。

本記事では、私のような初めて RPA を使う人が、非常に単純な作業の自動化をどの程度の期間で実装、運用できるものなのか、という事例と、実際に使ってみた印象をメモします。

なお、私は今でも RPA の初心者なので、この記事には RPA の使い方や専門的なノウハウは全くありませんし、認識漏れの可能性もあります。その点ご了承ください。

[2]Power Automate Desktop を使ってみる

Windows で動作する RPA をネットで調べてみると、いろいろあることは分かったのですが、ざっと見た感じでは、私のような RPA 初心者には何を選ぶべきなのか分かりませんでした。

今回の利用に限れば、簡単な画面操作を自動化できれば十分だったので、簡単に使えること(学習時間が短く、直ぐに運用できること)が重要でした。

とはいっても、使ってみないと簡単に使えるかどうか分からなかったので、まずは、無料で手軽に試せるもの、という基準を考えました。

そこで試してみたのが、Microsoft の Power Automate Desktop です。

このページの「無料トライアルを始める」や「アプリを起動する」のリンクをクリックすると、Power Automate がインストールされて自動起動します。

ここまではとても簡単です。

[3]フローを作って画面操作を自動化してみる

インストールと起動まではあっさりできたので、実際に画面操作を自動化してみます。

今回やりたいことは、アプリの画面に対して以下の操作を指定回数(数万回)繰り返すことです。
  1. コンボボックスである項目を選択する。
  2. テキストボックスにテスト用の文字列を入力する。
  3. ボタンをクリックする。
  4. 実行結果がリスト表示されるので、リストの最上位の項目を選択する。
  5. ボタンをクリックする。(これで指定の実行結果がファイルに保存される。)

Power Automate では、実行するプログラム(処理)のことをフローというようです。

起動画面にある「+新しいフロー」をクリックして、適当な名前を付けてフローを作成すると、フロー デザイナー画面が表示されます。

これは Office や Google Workspace のマクロをご存知の方なら分かりやすいと思いますが、コードエディタのようなもので、ここで処理内容(アクション)を記述します。

ただし、プログラミング言語で書くのではなく、画面上に用意されているアクション(処理部品のようなもの)を画面操作でビジュアルに並べて作ります。

以下の画面例は、今回作成したフローを抜粋して簡略化したものですが、こんなイメージです。一見するとコメント文(アクション)が並んでいるだけです(笑)。

Power Automate フロー デザイナー画面


アクションを作成する最も簡単な方法は、実際に画面操作を行ってそれを記録することだと思います。

これは画面上にある録音ボタン?(自動化のステップを取得してフローアクションに変換する)をクリックして、自分で画面操作を行います。すると、その操作内容からアクションのリストを作成してくれます。

ただし、行った操作をそのまま再生するだけでよいのならこの方法だけでよいのですが、実際には、記録した処理に加えて、条件分岐や繰り返し(ループ)などの制御を追加したい場合が殆どだと思います。

今回の例だと、画面に入力するテキストを変化させながら繰り返し処理を行いたいので、変数化と文字列処理、そして繰り返しループ)が必要です。

また、上記シナリオには書いていませんが、現実には後述の通り、自動操作したいアプリ側の問題(クラッシュなど)を回避するために、条件によって動作を追加する必要もありました。

このような変数や動作制御を行うためのアクションも追加することができます。

これも VBA のようなマクロ言語でコードをテキストで書くのではなく、変数や制御に関するアクションを画面上でドラッグ&ドロップして、フローを作成していきます。

詳細は、以下の公式ドキュメントを参照して下さい。

[4]使ってみた印象

結論から言うと、「かなり使える!」です。

今回の作業の自動化では、本当に助かりました!

とはいいつつも、実際に使ってみていろいろ感じたこともありますので、その印象をメモしておきます。(まとまってなくてすみません)

(1)習得時間が短く、アジャイル的に作れる

私の場合、上記の作業自動化のフロー(プログラム)を作り始めて、目的とする動作を実行するまでに1日くらいかかりました。

これを早いと言えるのかどうか分かりませんが、個人的には満足しています。

というのは、プログラミング言語を初めて使い始めることを考えると、その習得にはそれなりに時間がかかるものです。

Power Automate ではアクションメニューから必要とする要素を並べるだけなので、言語の学習時間はほぼ不要です。(もっとも、変数やループなどのプログラミングの基本を知らない人は、ここの勉強時間が必要かもしれません。)

また、フローに設定したアクションのリストを見ても分かる通り、作業手順とアクションがほぼ一致しており、コード量の観点から見ても非常に少ないです。

一方、上記画面操作は人間がやれば非常に単純な作業ですが、低レベル API を使いながらプログラミング言語で汎用的に操作するのは大変です。

他人が作ったアプリの画面を簡単に操作できる高レベルなライブラリ等が用意されていない限り、初めての言語でかつ低レベルなAPIレベルから作り上げるとなると、私には1日で作ることは到底無理です。

後述しますが、Power Automate のフロー作成に要した時間は、実は半日もかかっておらず、残りは Power Automate の情報源を探す時間と、操作対象となる Windows アプリ側の問題を回避するための処理を加える時間でした。

まずは基本動作を作ってテストを行い、改良してテスト、の繰り返しで目的とする動作を達成できました。

そうこう考えると、初めてさわった環境で目的のものが1日でできたのは驚きです。

恐らく、Power Automate が用意しているサンプルに似たシナリオで利用するなら、本当に直ぐに使えるのではないかと思いました。

(2)フローを共有して複数のPCで並列実行が簡単にできる

当初は全く意識していませんでしたが、作成したフローはネットで共有されています。

他の端末で Power Automate を起動すると「自分のフロー」に既に作成したフローが一覧表示されますので、他の端末でも、そのままフローを実行できます。

後述しますが、予想以上に Power Automate からアプリの画面を操作する速度が遅かったので、少しでも多くのデータを作成できるように複数のPCで同時に実行しようと考えてました。

そして他の端末で Power Automate を起動すると、作成済みのフローが表示され、そのまま実行できました。

ローテクな対処方法ではありますが、この簡単さには感動しました(笑)。

(3)最初のとっかかりが分かり難かった

フローを作りはじめて、まずつまずいたのは、どのように作り始めればよいのか、とか、フローとかアクションとは何なのか?、などを簡単に書いたドキュメントなどを見つけられなかったことです。

マーケティング的なページではなく、プログラミング初心者的なドキュメントを見つけることができず、迷いました。

かといって、公式ページのドキュメントをきっちり読んで、という時間を取る気もありませんのでしたので(あまり時間がかかるようなら使わなかったと思いますが)、ネットでそれらしき記事を探して、いろいろ斜め読みして雰囲気をつかみました。

雰囲気がつかめれば、あとはパターンで考えられるので難しく感じることはありません。

また、Power Automate は非常に多機能で、UI操作だけでなく、とてもいろいろな機能が用意されています。

それは凄いのですが、逆に自分が必要としているショボい機能が埋もれてしまって探すのに苦労しました。

(4)アクションに用意されていない処理は厳しい

Power Automate は変数や条件分岐、ループなどを備えているので、原理的には様々なアルゴリズムを記述できそうですが、現実にはかなり厳しいです。

Power Automate は多数のアクションが用意されているので、これを利用できる場合はとても簡単に処理できますが、Python や Java のようなプログラミング言語レベルで書くようなデータ処理は難しいと考えたほうが無難な気がします。(やってみると直ぐに分かります。)

例えば、テキストボックスに入力する文字列を、少し複雑なアルゴリズムに基づいて作成したいような処理は、汎用プログラミング言語のようには書けません。

しかし、Power Automate はスクリプト連携も可能なので、他のプログラミング言語と連携して実装することができます。そのほうがスッキリするように思えます。

個人的には、Power Automate で複雑な制御は行わないように、可能な限り順次処理になるよう予めデータを用意してから実行するのが良いと思います。

(5)自動化対象のソフト側の問題やフローが止まる問題

意外に盲点だったのは、Power Automate の問題ではなく、自動化したいソフト側の問題でした。

手動操作している時は全く問題なく動作していたアプリが、Power Automate から処理を繰り返していると、そのうちアプリがクラッシュするという事象が発覚しました。

また、アプリがファイル作成を連続して実行し続けるとアプリが無反応になりました。

幸いにも、このような問題は、一定の繰り返し回数後にアプリを再起動する処理をフローに組み込むことで回避できました。

Power Automate を利用する多くのシナリオは他のアプリとの連携だと思いますので、連携対象のアプリの特性も考慮する必要があることを実感しました。

一方、(恐らく)アプリ側の問題ではなく、極まれに Power Automate のフローが途中で止まることもありました(正常に異常終了?)。これは未だ原因不明ですが、殆ど発生しないので、気にせず使っています。

(6)思ったより画面操作の動作が遅いが、思ったより愚直に動こうとする

画面操作を自動化した時に最初に感じたのは、画面操作がとても遅い、ということでした。

自分が操作したほうが早い、と当初はガッカリ感がありました。

これは調査が足りないだけで、高速に動作させる方法があるのかもしれません。また、Power Automate が他の RPA ソフトと比較して早いのか遅いのかもわかりません(比較もしていません)。

しかし、使い始めてみると、画面操作は遅くても、決められた通りのことを、疲れを知らず働き続けますので、時間を確保すれば自分にはできない繰り返し作業を行ってくれます。

結果としては自分よりとても多くの作業を行ってくれます(笑)。

また上記の通り、複数のPCで並行して実行することができますので、1つ1つは動作が遅くても、リソースが許す限り、並列度を上げて処理数を稼げます。

また、ちゃんと指定したところにフォーカスを当ててテキスト入力やボタンをクリックしてくれるのは、驚いたというか、とても感心しました。

自動実行中だという事を忘れて他のアプリを起動してしまい、対象アプリからフォーカスが失われるような事故?が何度かあったのですが、それでもちゃんと動作を継続してくれました。

そのかわり、設定を間違えて途中で止めようと思ったときは、無理矢理動こうとして困りましたけど(笑)。

(7)VBA との使い分け

昔から Office には VBA という強力なマクロが備わっています。

マクロと言っても汎用プログラミング言語なので、かなり複雑な処理の記述ができます。

恐らく、今回の自動化対象が Word や Excel に閉じた内容だったら、Power Automate ではなく、VBAを使ったと思います。動作速度も十分です。

一方で、仮に Word や Excel と他のアプリを連携させようとすると、(連携するアプリに依存しますが)VBA だけでは難しく、Power Automate のような RPA が威力を発揮すると思います。

そういう点では、VBA と Power Automate は競合するものではなく、適用分野が異なるので、組み合わせて使えるものだと思います。

とはいいつつも、最近はセキュリティ対策の関係を考えると、マクロは慎重に扱う必要があるため、Power Automate で同じことができるのなら、そちらのほうが良いという考え方もあるかもしれません。

[5]最後に

RPAを使ってみようと思って、ダメもとで Power Automate を使い始めたら、最初は戸惑ったものの、少しコツをつかむと、なかなか手になじむツールになってました(笑)。

無料で使えることもあり、似たようなケースでは使っていきたいと感じています。

加えて、今回の作業とは関係ありませんが、これはテストツールにも使えるなー、と思いました。

とはいいつつも、私は Windows のネイティブアプリを作る機会が今では殆ど無いので、テストに使う機会も無い気がしますけど。20年くらい前に欲しかった(笑)。

それはともかく、RPAは、ハマれば強力なツールには違いないと感じました。

コメント

このブログの人気の投稿

Google Document AIで画像から表形式データを抽出する(Vision API OCRとの違い)

VirtualBoxのスナップショット機能

オントロジーエディタ Protégé を使ってみる