こんにちは。スマートソリューションセンターの吉田です。

 

前回:エンジニア目線で見るRPA(1)として、RPAの特徴とマクロとの違いや、RPAによる自動化はClass 1 ~ Class 3に分かれていること、エンジニアにもまだまだ挑戦すべきフィールドがあることを紹介しました。
本記事では、エンジニア向けにもう少し掘り下げた内容を紹介していきます。
※本記事は、テンプレート型RPAを前提としています。開発型RPAは以下当てはまらないこともありますが、あらかじめご了承ください。

RPAを構成する技術要素とルーツ

RPAを構成する技術要素と、各RPAのルーツを見ていきましょう。

Webスクレイピング技術

開発の現場では、Selenium などのテストフレームワークを使って、UIテスト自動化を行うこともあると思いますが、RPAツールではコーディングすることなく、UI操作の自動化が可能になっています。
その裏では、Webブラウザ操作を自動化するために、Webスクレイピング技術が使用されています。少し複雑な画面だと、DOMツリーを眺めて、対象の要素を一意に特定できるタグを選択する。などのチューニングが必要になるケースもあります。

RPAツールでは、BizRobo!/BasicRobo(Kofax Kapow)は、Webスクレイピング技術から発展してできたツールです。他の RPAツールに比べて、Webブラウザ操作自動化において、操作性に優れており、使いやすく感じます。
逆に、BizRobo!/BasicRobo(Kofax Kapow)は以下で説明するデスクトップオートメーションには当初対応しておりませんでした。現在では Device Automation という機能が追加され、デスクトップオートメーションも可能になっていますが、操作性、機能性など、UiPath や WinActor に分があるかなと思うところです。
このように得意不得意はツールによって異なりますので、自動化の要件に沿ったツール選定も重要になってくるかと思います。

デスクトップオートメーション(Microsoft .NET Framework)

RPAツールの多くは、Windowsデスクトップアプリの自動操作にも対応しています。
それも、座標や画像として認識しているわけではなく、オブジェクトを認識して操作することが可能です。そのおかげで、特定の PC環境(解像度や画面サイズ)に依存せず、要素を認識することが可能となっています。
これら、RPAツールの内部でWindows APIを呼び出し、操作を行っていますが、ロボット開発者はそれらを意識することなく、ノンコーディングで使用することが可能です。

RPAツールでは、UiPathや、Blue Prismは、Microsoft .NET Framework 上に構築されており、GUIオートメーションをベースに発展をしてきました。
NTTデータが提供するWinActorもデスクトップアプリの自動操作に強みを持っています。
UiPathに関しては、Windows Workflow Foundationをベース技術に採用し、パッケージ管理はNuget、ログ管理には.NET系のログライブラリNLogを採用しています。
このように、RPA(特にデスクトップオートメーション)と.NET系技術は親和性も高く、.NET技術者は違和感なく触れるのではないかと思います。

画像(OCR)認識、座標認識

リモートデスクトップ環境や Citrix 環境の場合、オブジェクト認識ができません。そのため、別の方法で操作対象を認識する必要があります。このような場合に備え、多くの RPAツールは、画像認識、座標認識にも対応しています。
合わせて、スキャナーから読み込んだ注文書を自動化する場合などに、OCRを活用することで自動化の幅が広がります。

RPAツールでは、RPAExpress(WorkFusion)は画像認識をベースに据え、機械学習と組み合わせ、Class 2 以降を見据えたツールとされています。ただし、現時点では、オブジェクト認識のほうが、認識率は高く、安定性が勝ると思われます。

そのほか、Automation Anywhereは、テスト自動化技術をベースにできた RPAツールであり、
NICEコールセンター業務の自動化を目的に作られたものです。

それぞれ、強み、弱みや、使い勝手に差ははあるものの、RPAツールが提供する主機能は以下の通りです。

  • Webブラウザの自動操作(データ抽出、データ入力)
  • デスクトップアプリの自動操作(データ抽出、データ入力)
  • 制御構文や、エラー処理、演算などのロジック

エンジニアの中では、Selenium などのテストフレームワークによるUIテスト自動化や、Jenkins などの CIツールによる開発プロセス自動化、Docker によるポータビリティ化など、様々な自動化に取り組んでいる例も多いと思います。RPAもご多分に漏れず、そのような自動化技術を目指す過程で、業務自動化にも使えるのでは、として発展したツールであり、それを支える技術は新しいものではなく既存の技術の組み合わせで成り立っています。

ノンコーディング is 何?

RPA の技術要素を説明する中で、何度かノンコーディングという言葉を出しました。
イメージがわきづらいかもしれませんので、画面を交えてご紹介します。
以下は、BizRobo!/BasicRobo(Kofax Kapow) の開発画面です。

画面中央上部のフローチャートをご覧ください。
BizRobo!/BasicRobo(Kofax Kapow) では、「ブラウザを開く操作」や、「値を入力する操作」「指定回数繰り返す操作」などが事前に用意されています。これらの部品(Actionと呼びます)を組み合わせてワークフローを作成することで、自動化を行います。

続いて、UiPathの開発画面をご覧ください。

画面中央に、フローチャートがあります。BizRobo!/BasicRobo(Kofax Kapow) 同様に用意されている部品(UiPathではActivityと呼びます)を組み合わせてワークフローを作成していきます。
このようにGUI操作によってフローチャートを作り込み、コードを書くことなくソフトウェアロボットを作成することができるため、ノンコーディングツールと呼ばれています。
また上記のように、テンプレートとして部品が提供されているRPAツールのことをテンプレート型RPAと呼びます。
対して、コーディングで自動化ロボットを作成する開発型RPAもありますが、テンプレート型と比べて、柔軟な対応が可能な一方、作りこみが必要になるので工数が多くかかる傾向にあります。
昨今RPAツールとして注目されているのは、テンプレート型RPAになっています。

ノンコーディングなのに、変数の知識が必要?

必須ではないと言いたいですが、個人的には避けては通れないと思っています。
コードを自分で書かないとしても裏側ではコードが自動生成されており、変数も使用されています。
一定レベル以上の複雑な処理をさせようとすると、変数を自分で作成したり、修正したりする機会がでてきます。

UiPathは、.NET Framework をベースにできており、.NETの変数が使えます。
例えば、String, Int, Boolean, Array, DateTime, List<T>型などがあります。.NETエンジニアにはおなじみですよね。また、.NET関数も使用可能です。VB.NET記法にて、文字列操作や、配列の操作などができます。例えば、文字列の先頭から末尾までにある空白文字を削除する Trim関数や、特定のタイプの変数を文字列に変換する ToString関数です。
BizRobo!/BasicRobo(Kofax Kapow) でも、同様の型が用意されており、それ以外に構造体定義もできたりします。

ブラウザ、デスクトップアプリの自動操作などは変数を意識せずに行えますが、「ある金額の消費税を計算する」や、「前営業日を算出する」などの演算が入ってくる際には、変数の型を意識する必要が出てきます。

制御構文も使えるの?

IF文、Switch文、ForEach, While構文などが、部品として提供されており、直接コードで書くわけではないですが、フローチャートを書くような形で使用します。ブラウザから抽出した表データをループ処理する場合や、特定の値によってフローを変える場合など、制御構文の概念がわからないと苦労する場面が出てきます。Try-Catch などのエラー処理も部品化されて提供されています。

オブジェクト指向は知っておく必要がある?

そこまで意識する必要はないと思いますが、規模が大きくなると、ロボットを機能毎に分割し、複数のロボットで1つの業務を実行するなどが必要になってきます。また、複数箇所から呼び出される機能をモジュール分割し、部品化することができます。そういう意味では、カプセル化に近いことはできますが、継承やポリモーフィズムといった概念はなく、冗長になりがちな側面はあります。

独自ライブラリ、拡張モジュールは作れるの?

部品化ができるのであれば、独自ライブラリを作成し、利用したいという方もおられるでしょう。
RPAベンダー各社が、拡張モジュールや、ライブラリなどを提供しています。
UiPath では Microsoft社や、Twillio社がライブラリを提供しており、Twillio による SNS通知や、音声通知など、非常に簡単に実現することができます。※Twillio社のライセンス登録が必要です。

WinActor では、VBScript を作成することが可能です。
UiPath では、C#、VB.NET などでライブラリを作成し、Nugetパッケージ化したものを取り込むことが可能です。
C# でライブラリを作成できるということは、Nugetを介して、様々な.NET向けライブラリを利用でき、様々な APIに接続する部品を作ることができるということです。これはエンジニアにとっては非常に強力な武器にもなり、RPAの幅を大きく広げることができるのではないかと考えています。
この方法については今後、本ブログにて紹介する予定です。

ソース管理は可能?

ツールによって異なりますが、本記事で扱っている BizRobo!/BasicRobo(Kofax Kapow)、UiPath は、裏では XMLで管理されていますので、Git や SVN などでソース管理を行うことが可能です。
ただし、ノンコーディングツールのデメリットというべきか、変更箇所以外のコードがまるっと変わってしまうことが往々にしてあり、管理が難しいこと、ソースレベルでレビューを行うのが難しい側面があります。

エンジニアにおすすめの RPAツールは?

個人的には、UiPath がおすすめです。理由は以下です。

  • 個人利用の場合、無償で利用できる。(法人利用でも、60日のトライアルあり)
  • 自習コンテンツが充実している(UiPathAcademyという学習コンテンツ)
  • リファレンスが充実(ここ最近日本語も充実してきました)
  • 変数、制御構文など、.NET Framework そのもの。C#やVB.NETはもちろん、Java などの言語経験があれば、違和感なく触ることができる。
  • 中級者以上では、C# などで独自ライブラリを作る楽しみも満喫できる。
  • ツール自体が非常に軽量で、インストール、セットアップが楽。※Proxy環境の方は、最初のライセンス認証だけ注意してください。Community版だと、Proxy認証は突破できません。法人の場合は Enterprise トライアルでお試しください。

以上となります。

いかがでしょうか。RPA について少し興味をもっていただけたでしょうか。
触ってみたいな。と思っていただければ嬉しい限りです。

本ブログでは、引き続き、RPA についての記事を定期的にお届けしたいと思っています。
当面はお勧めしました UiPath について、技術的な側面を Tips なども含めて、お届けする予定です。
お楽しみに!