【RPA≠GUI操作】RPAツールにおけるWebAPI利用についての紹介と所見

この記事は Web API Advent Calendar 2020 の 3 日目の記事です。
2 日目は[Hiro](https://twitter.com/mofumofu_dance)さんの[ローコード開発から見たAzure API Managementの役割](https://mofumofupower.hatenablog.com/entry/lowcode_apim)でした。

この記事では、RPAツール・機能における、自動化の中でWeb APIはどのように利用できるかをいくつかのRPAツールごとにまとめてみたものです。

#あらためましてRPAとは
RPA(Robotic Process Automationの略称でDegital Labor(仮想知的労働者)とも言われています。
パソコンまたはサーバ、クラウドサービス上で動作する業務自動化のソフトウェアツール・サービスの総称です。
ルールが決まっているビジネスプロセスに従い、現在のユーザーが現在行っているものと同じ方法で組織のシステムと対話するデジタルワーカーを組織に提供するアプリケーションです。

#RPAは座標ベースや構造ベースのGUIの自動化だから不安定という説について
RPAは、人と同じ様にフロントエンドのシステムを自動化するという前提のもと、RPAがレコーディング機能を用いWebブラウザやデスクトップアプリの操作を行うものといった捉え方をされることは多いように思います。
その中で、クラウドサービスの自動化はRPAを使うよりAPI(Integration)を使おうという文脈で語られることもあります。

[日本に本当に必要とされているのは、RPAではなく、iPaaSだと思う](https://note.com/lotus/n/n0ec272d3aadd)


[RPAツールをお使いのお客さまへご案内【SmartHR社】](https://smarthr.jp/other/19453)

これらの文脈で共通することについては、「システムの画面はいつ変わるかわからないので画面操作や録画機能を使った不安定なRPAを使うのはやめてAPIを使おう」ということです。
画面構造やレイアウトが変わったらGUIによる自動化は動かなくなるというのは納得ですし、操作対象がSaaSのWebアプリケーションであればその可能性も高いので納得しかないです。

**ただ、RPA＝人と同じ用にクリックやEnterを行い、画面を操作するものという前提はどこから来ているのでしょうか？**

改めて調べてみたのですが、RPAベンダーの中でもリーダーの１つであるUiPathも「RPA vs API Integration」という記事の中で、「RPAは、フロントエンドを介してターゲットアプリケーションと対話します。ソフトウェアロボットは、人間のユーザーと同じように、クリックと入力のアクションを使用しますが、より高速で正確です。」ものだと表現しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/72f79469-a838-3cc3-9fae-ad122d7e308d.png)


[【UiPath】 RPA vs API Integration](https://www.uipath.com/blog/rpa-vs-api-integration)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/088f1a50-9c6f-ebb4-d37c-607fbe3ef980.png)

RPAという言葉の定義としては、**【RPAを用いた業務プロセスの自動化は、人と同じ操作を実現することを前提にフロントエンドのGUI操作を正確で高速に行うもの】**という前提が上記のようなイメージを定着させているのだと思います。

RPAという言葉の定義としては、その通りでいいのかなと個人的には納得しているのですが、実際のところ複数のRPAツール・機能を見ていくと、Web APIを利用することができるよう実装されているものが数多くあります。

では、実際どのようにWeb APIを使用できる機能があるのかRPAツール、RPA機能ごとに見ていきます。
ここからは、RPAツール・機能ごとに元々用意されているAPIコネクタと各メーカーのマーケットプレイスから追加できるAPIコネクタの追加方法に触れていきます。


#UiPath

[UiPath社](https://www.uipath.com/ja/)のUiPathでは、[UiPath Connect!](https://connect.uipath.com/ja)の中にあるマーケットプレイスに、UiPathの開発環境であるUiPath Studioに追加できるAPIコネクタが掲載されています。
あくまで一例ですがAzure,AWS、GCPのCognitiveサービスを始め、SalesforceやServiceNowといったクラウドサービスの自動化コネクタをダウンロードすることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/d3afd5e6-afad-9da4-9529-733477a83b6f.png)
(UiPath Connect!より)

以下は、AiInside社のAI-OCR製品「Dx Suite」のコネクタですが、こちらでは、Dx Suiteが公開しているAPIを使用したコネクタが提供されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/364472f8-292a-b3ee-055c-121d6291c6c6.png)


[AI-OCR workflow for AI inside - DX Suite](https://connect.uipath.com/ja/marketplace/components/ai-ocr-workflow-for-ai-inside-dx-suite)


UiPath Connect!には、UiPath社が作成したものの他に連携先ベンダーが提供しているものや個人が作ったコネクタ(UiPathで言うところの「アクティビティ」)が掲載されています。

マーケットプレイスのコネクタ(アクティビティ)を使用するには、UiPathの自動化シナリオの開発環境「UiPath Studio」から、ダウンロードするのがとても簡単だと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/09f5af90-390a-3245-19d4-c5509b9eb04c.png)

画面上部の「パッケージを管理」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/41d7c879-fbdf-69bf-1e6a-c42168c4d4f3.png)

パッケージの管理画面が表示されるので「オフィシャル」をクリックし、検索窓に使用したいコネクタの名前を入力し、検索してください。（ここでは、AzureのCognitive Serviceを使用するためのコネクタを検索しています。）
「UiPath.Cognitive.Activities」が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/148f0999-42e1-67d0-1b72-2b6f513cac6e.png)

「UiPath.Cognitive.Activities」をクリックし、右側のウィンドウの「インストール」をクリック後、「保存」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/9b932857-597a-5ba3-d86a-a213db9f5af5.png)

依存関係ツリーの所に「UiPath.Cognitive.Activities」が追加されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/b3ae9c67-9818-cb65-d7be-ed24106c9f93.png)


これだけでUiPath側の設定は完了です。すぐに利用することができます。
利用した結果はこちらです。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">UiPathでAzure TextAnalyticsを使った感情分析 <a href="https://t.co/2Bg37ZGpVe">pic.twitter.com/2Bg37ZGpVe</a></p>&mdash; Maekawa (@HiMaekawaSan) <a href="https://twitter.com/HiMaekawaSan/status/1334486241979506689?ref_src=twsrc%5Etfw">December 3, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

実際の利用方法については、[RPAツール「UiPath」で行うノーコードな言語解析と感情分析【Azure Text Analytics API】](https://qiita.com/nakaamino/items/7f7ff34b45969be29f7c)を御覧ください。

#Automation Anywhere

続いて、[Automation Anywhere](https://www.automationanywhere.com/jp/)です。ここでは、Automation Anywhere A2019 CommunityEditionを例に見てみます。

A2019の画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/d9be3fc0-a8e6-5233-da2d-11639417167d.png)


Automation Anywhere A2019では、自動化機能をアクションと呼称するのですが、様々なWeb APIを使用できるアクションが備わっています。

AWS(Amazon) Comprehend、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/5c392dda-37d4-0c04-116b-96dcd1f356ca.png)
G Suite、IBM Watson
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/95bb4be4-a401-51da-4d58-05fa97acc598.png)
そして、Microsoft 365。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/8aa4e2f1-f24e-7cf6-6b4f-366240f811d8.png)


以下は、Microsoft 365の予定表（Exchange Onlineの予定表）を操作するためのアクションを展開したイメージです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/9ba515e6-c44b-9fac-7c53-b809a4bced9c.png)


利用するにはAzurePortalからアプリに対してMicrosoft GraphのOffice 365関連の操作を許可する必要がありますが、それらの手順についても、Automation Anywhereが詳しいリファレンスを提供しています。
[リファレンス　Graph APIの接続アクションを使用する](https://docs.automationanywhere.com/bundle/enterprise-v2019/page/enterprise-cloud/topics/aae-client/bot-creator/commands/using-the-connect-action.html?_LANG=jpjp
)

上記の標準で備わっているアクションの他に、Automation Anywhereも[Bot Store](https://botstore.automationanywhere.com/)というマーケットプレイスを展開しており、ここからパッケージをダウンロードをして新たなコネクタを追加することができます。

Automation AnywhereがBot Storeで提供するSlack連携のパッケージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/07927229-7dd4-657e-55c8-47157df793b9.png)

こちらには他にもSalesforceやServiceNowなど数多くのクラウドサービスとの連携パッケージが無料・有料問わず提供されています。


#Power Automate Desktop
最後に、Microsoft の PowerAutomateのRPA機能「Power Automate Desktop」です。
Microsoft の位置づけとしてはRPA機能であってRPAツールではないですが、紹介させてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/f2606226-423f-67ba-ddc4-0acb514994de.png)



こちらもAzureやGCP、IBM WatsonのCognitive ServiceのAPIを利用することができるアクションが備わっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/ac912a0e-8e08-36a2-61e7-3ca50ade2ece.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/f0b12311-1512-fff0-e645-1ccac637dd13.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/f7e93131-3ead-3cc4-2b81-eaad5a2d96bf.png)

他にもAWSやAzureのリソース、仮想マシンの自動化についてもAPIを介して操作を行うことができます。

Power Automate Desktopにどのようなアクションが備わっているかの詳細は以下をご確認ください。
[【Power Automateの新しいRPA機能】Power Automate Desktopで出来ること（全33機能の紹介）](https://qiita.com/nakaamino/items/e171240843e56d98be56)

Power Automate Desktopには現在、マーケットプレイスのようなところからアクションを追加する機能はありませんが、そもそも、Power Automate自身が400を超えるコネクタを持っており、API連携を本当に簡単に実現することができます。

（そもそも、Power Automate DesktopはPower Automateの機能の１つであり、Power Automateのコネクタで自動化できるならそれに越したことは無いと思っています。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547452/fae18f66-063f-a41e-13fb-1ddb001553e3.png)
以上、いくつかのRPAツール・機能におけるWeb API利用についてをまとめてみました。

#まとめ
RPAの概念としては、人の行っている業務をシミュレートする形を含めて自動化するという位置づけではありますが、RPAツールはWeb APIの利用も行えます。上記のように、各ツールの標準機能として備わっているものやコネクタが提供されているものを利用することで簡単に利用することができます。

「デスクトップの自動化もできて、Web APIを利用した自動化もできてRPAいいじゃん！！APIを使った自動化もじゃあRPAでやろう！」ということではあるのですが、ここは適材適所があるのかなーと思っています。

RPAツール・機能によっては、自動化プロセスを自動実行するトリガー機能（条件）が少なかったり、そもそも並列処理に対応できないものもあります。（１つの自動化プロセスが実行中は他のプロセスが実行できないケースもある。）
また、自動化プロセスの実行がPCやサーバ上から行うことになるので、PCの不調やイントラネット側の不調により、実行できないリスクもあります。（実行環境を起因とした不具合の懸念。）

大量にトランザクションを処理するようなケースやシンプルなクラウドサービス間の連携の自動化はiPaaSを利用したAPI Integrationを実現するのが良いのかなと個人的には考えています。

最後に、RPAは、APIによる自動化とGUIに自動化をシームレスに繋ぎ合わせて業務プロセスの自動化することができることが非常に魅力的であります。
ガートナーの予測でもRPA市場は2025年まで2桁の成長率で拡大するという予測もあり、今後どのように変化していくか注目は尽きないと思っています。

##参考
[ガートナー、世界におけるRPAソフトウェアの売上高が2021年には20億ドル近くに達する見通しを発表](https://www.gartner.com/jp/newsroom/press-releases/pr-20200930)