RPAツール「Power Automate Desktop」をみんな使おう!って話

1か月ぶりくらいにこんにちは、スタッフの山口です。今回はMicrosoftの回し者になります(?)。

#山口って結局何やってる人なの?
前回の記事では館内に掲示するポスターデザインのお話をしました。そして、今回は打って変わって社内システムの作成・管理に関するお話です。その他にも、効率とお客様の満足度を両立したオペレーションを考えたり、新着情報の記事を書いたり、今後実施していくイベントの企画を練ったり、ブログには書けない企業秘密の仕事(!?)をしたり…。とにかく、いろいろなことをやらせてもらっています。その中でも、今回お話しする社内システムの作成・管理は最も重要で時間もかけてきた業務です。「XCUBEでなにやってる人なの?」と聞かれたら、「いろいろやってるけど、メインは社内システムの管理かな~」が現状最も適当な返事でしょう。

#毎日の面倒な作業とおさらばしたい!
 さて、そろそろ本題へ。XCUBEには毎日繰り返し行っている業務があるのですが、その最たるものが「運営会社の財務部への日報提出」でした。日報の提出と言っても、すでに僕が作った日報を自動生成するプログラムへ必要なファイルやデータを読み込ませればメールの送信まで勝手に済ませてくれるのですが、ファイルやデータを取得するためにはレジや会員に関係するシステムにアクセスし、そこから必要なファイルをダウンロードしたり、データをコピペしたりしなければなりません。オープン当初は手計算で日報を書き、それをFAXで送っていた訳ですからこれでもだいぶ進歩したのですが、少し楽になると「もう少し楽にならないかな」と考えてしまうのが人間というものです。そこで、ファイルのダウンロードやデータのコピペも自動でやらせて、ボタン一つで作業が終わるようにしちゃおう!ということになりました。そこで、僕たちが注目したのがRPAでした。
(図の左側の部分を自動化したい)

#RPA、かっこいいよね!
突然ですが皆さん、「RPA」って知っていますか?RPAとは、「Robotic Process Automation」の略で、ざっくりと言ってしまえば「PCで行う単純な繰り返しの業務を、PC上で動作するロボットに、まるで人間がPCを操作するかのようにやらせてしまおうぜ!」というものです(厳密に言うと少し違う気もするのですが、細かい説明はここでは省略するのでGoogle先生にでも聞いてみてください)。特に「人間がPCを操作するかのように」という部分がとても重要で、普通のプログラムであれば人間とは違うプログラム独自の考え方で必要な処理を行いますが、RPAの場合は人間にかなり近い考え方で処理を行ってくれます。ですので、僕みたいにプログラミングがあまりできない人でも比較的簡単に使えてしまうわけです。とは言え、その性能は目を見張るものがあり、これまで人が数分かけて行っていた仕事をボタン1つで勝手に終わらせてくれる優れものです。ここ数年RPAに注目が集まるのも当然でしょう。
それに、RPAを使いこなせるってなんかかっこよくないですか…?PCの画面が勝手に動いて勝手に操作をしてくれるんですよ!?めっちゃかっこいいですよね!!ということで今回はXCUBEでRPAを導入して、それなりに安定稼働させるまでのお話です。

#SikuliX、便利だけど…
 幸いなことにXCUBEにはITに強いスタッフが複数いるということで、無料で公開されているRPAツールを使って自分たちでツールを作成しようということになりました。そんな中、目を付けたのが「SikuliX」というツールでした。SikuliXのホームページを見ると、「Sikuli is God's Eye」と上の方に書かれていますが、本当に人間と同じ目を持っているかのような挙動をするのがこのSikuliXの最大の特徴です。我々人間がPCを操作する時、だいたいの人は文字とカーソルだけの画面(「Character User Interface, CUI」と言います)ではなく、アイコンや写真などが組み合わせられた画面をマウスや指使って操作している(「Graphical User Interface, GUI」と言います)かと思います。そして、SikuliXはなんと人間と同じように画面を画像で認識して操作を行ってくれます。
そして、実際に動作を制御するためのコードを書いている画面が次の画像です。
このように、いかにも「プログラミング!」という感じの文字列と、スクリーンショットの画像を組み合わせてコーディングを行います。少しクセはありますが、文字列だけで書くよりは幾分も初心者には分かりやすいとは思います。
こんな感じでコーディングを行い、無事目標としていた作業の自動化に成功したわけですが、SikuliXには4つほど問題点がありました。
問題点1.Pythonのバージョンが2.7
SikuliXの標準のプログラミング言語はPythonなのですが、そのバージョンが2.7で止まっています(なお、執筆時点での最新バージョンは3.9.4だそうです)。バージョン2.xから3.xにバージョンアップする段階で多くの変更が加えられたため、書き方が現在主流のものとは少し異なるケースが出てくるようです。ただ、僕はPythonなんてそんなハイカラなものはSikuliX以外で使ったことがなかったため、個人的にはほぼ影響はありませんでした。

問題点2.導入がめんどくさい
SikuliXの実行ファイルは.exeではなく、なぜか.jarです。ということは、わざわざjavaの開発環境を整えなければなりません。また、実行ファイルを置くパスに日本語が含まれていると起動ができません。1度やってしまえば問題なく動作してくれるため問題の度合いとしては小さめではあるのですが、やっぱり導入は楽であるに越したことはないでしょう。

問題点3.別のPCへソースコードを移行するのがとっっってもめんどくさい
これが結構致命的な問題点です。SikuliXのコーディングはスクリーンショットを取りながら行っていくのですが、別のPCにコードを移すときは画像ファイルもしっかりと適切な場所に移す必要があります。加えて、元のPCと別のPCでディスプレイの解像度が異なる場合、ほぼすべてのスクリーンショットを撮り直すことになります。さらに、画像認識精度の調整もやり直しです。一度この作業を実際にやったのですが、本当に面倒でした。二度とやりたくありません。

問題点4.動作が重くて不安定
最終的にSikuliXを使わなくなった最も致命的な問題がこれです。とにかく重い。いちいち画面の画像とコード上の画像を照らし合わせて処理を行うわけですから、PCにそれなりのスペックが無いとちゃんと動いてくれません。ただ残念ながら、XCUBEの事務所にあるillustratorやunityを動かすための高性能なPCにはExcelがダウンロードされておらず、このPC用のライセンスもないので低スペックなノートPCで動作させることを余儀なくされており、結局2回に1回くらいの頻度で途中で止まってしまうダメダメRPAツールになってしまいました…。

そんなこんなでSikuliXに限界を感じていた3月上旬、Microsoftから衝撃的な発表がありました。

#祝!Power Automate Desktop無料化!
 そう、それは3/2(米現地時間)のこと、Microsoftが昨年9月から提供しているRPAツール「Power Automate Desktop」(以下、「PAD」と略します)をWindows10ユーザー向けに無償で提供すると発表したのです!それから世間の反応を見つつ、自分個人のPCにもPADを入れ、前述の処理をSikuliXからPADに移行できないかとやり方を探ってみました。そうしたら思っていた以上に簡単に移行が出来そう!ということが分かってきたのでXCUBEのPCにもPADを入れ、SikuliXの処理をPAD用に書き換えてみました。その結果、SikuliXで作ったツールよりもかなり速く・安定して動作するようになり、毎日の作業がとても楽になりました!!!ここからは、そんなPADのいいところを3つ紹介したいと思います。

#PADのここがすごい!
いいところ1.Windows10やExcel、ブラウザーまでも直接操作できている感が強い!
 PADはMicrosoftが開発しているということで、WindowsやOffice製品との親和性が非常に高く、パスの指定やファイルやフォルダの操作などが自然な形で行えます。また、Excelの場合は特定のセルに書き込みを行ったり、特定のマクロを実行したり、なんてことをGUIに頼らずできてしまいます。さらに、ブラウザーに拡張機能を入れることで、ブラウザーの操作も同様にGUIに頼らない形で処理してくれます。これのおかげでSikuliXのように過度に画像に頼ることなく、低スペックなPCでも安定して処理を行うことができるようです。

いいところ2.はやりのNo Code
 いいところ1では「GUIに頼らず処理を行ってくれる」ということを書きました。そうなってくると、処理を記述するのがどこか難しそうな感じがしてきます。ここで突然ですが、実際に処理で使っているコード(?)の編集画面をお見せします。
プログラミングっぽい言葉・表現は随所に見られますが、コードは一切書いていないことが伝わるでしょうか。確かに、PCが処理を行うときはGUIに頼らず行ってくれるのですが、人間が処理を記述するときは思いっきりGUIに頼ることが可能です。このPCと人間のいいとこ取りをする感じがとっても好きです。細かい部分は是非実際に自分の手で操作してみてください!!

いいところ3.エラーが出たときにしっかりとわかりやすい通知を飛ばしてくれる
 どれだけPADが優れたツールであったとしても、一切エラーを出すことなくツールを作成することは不可能です。そのため、エラーが生じたときにどのタイミングで、どのような理由によりエラーが発生したのか、という情報は極めて重要です。その点、PADはWindows標準の通知機能を用いてちゃんと日本語で、かつリアルタイムでエラーを通知してくれます。プログラミングをする上で、原因の分かるエラーはそこまで脅威ではありません。一方、原因の分からないエラーは天敵で、エラーの解消方法を探ることに長時間腐心した挙句、結局ケアレスミスが原因であることが分かる、なんてことはあるあるです。No Codeとはいえ、やっていることの本質はほぼプログラミングであるため、エラー原因の特定のしやすさは非常に大事になってきます。これの良さはプログラミングをしたことが無い人にはなかなか伝わりにくいかもしれませんが、少しでもプログラミングをしたことがある人ならば賛同してくれるのではないでしょうか。

 逆に、PADの欠点を挙げるとすれば、スケジュール実行(あらかじめ決めておいた時間・頻度で勝手に実行する機能のこと)を行うには有料版の契約をしなければならない、という点くらいですが、そもそもこんな素晴らしいツールが無料で使える方がおかしいくらいです。我慢するか、おとなしくお金を払いましょう。あともう一つ、まだまだインターネットや書籍を介して得られる情報が少ない、ということも新しいツールであるが故の問題点です。ただ、この点については日々PADに関する記事が投稿されていますし、時間が解決してくれそうです。

#終わりに:お客様が直接触れるところではないけれど…
 ここまで、RPAをキーワードに社内システムの話をつらつらと書いてきましたが、あくまでも「社内」システムである以上、お客様が直接僕が作ったシステムやツールに触れるわけではありません。ですが、そのような社内システムがしっかりと機能することで私たちスタッフは安心してお客様への接客や前回お話ししたような掲示物作りなどのクリエイティブな仕事に集中できるようになります。お客様に見えるところ、見えないところのそれぞれで、少しずつではありますが着実にXCUBEは進化してきましたし、これからも進化していきます。どうやら、結構大きな規模の接客支援システムの構築も徐々に進んでいるらしく、今までとは少し違った方法でお客様の皆様をお迎えする日も近いかもしれません。そんな変化も楽しみにXCUBEへご来場いただければ幸いです!