RPA(ロボティック プロセス オートメーション)にまつわる国内外の最新情報をお伝えすると共に、自動化推進に役立つ話題や社内の導入事例などについてご紹介します。

Workflow Inspectorを使ってみよう

RPAエンジニア 大庭

先日、UiPathコーディング規約とワークフロー品質評価キットがUiPathの公式サイトで公開されました。そのワークフロー品質評価キットの中に、UiPath Go!のサイトからダウンロードできるWorkflow Inspectorがあります。これは、開発したプロジェクトの品質を自動で検査し、レビューをしてくれるツールです。

Workflow InspectorはUiPath Studioプロジェクトとして提供されていて、このプロジェクトをUiPath Studioで開いて実行し、表示されるウィンドウで評価したいプロジェクトのフォルダを指定すると、その評価レポートがExcelファイルとして出力されます(Microsoft Excelをインストールしている必要があります)。

チェック項目としては、

  • 命名規則違反(デフォルトでは変数及び引数がアッパーキャメルケースかどうかを判定するようです)
  • 複数の同じ表示名(表示名に重複がないかどうか)
  • 未使用の変数(作成した変数の中にワークフローで使用されていないものがあるかどうか)
  • 必要最小限でない変数のスコープ(変数のスコープが適切かどうか)
  • 不必要なシーケンスやフローチャート(空のシーケンスやフローチャートがないか、もしくは1つのアクティビティのみなのにシーケンスやフローチャートで囲っていないか)

などがあり、全部で24項目あります。これらは、ダウンロードしたWorkflow Inspectorの「WorkflowInspector\Config\JP」フォルダ内にある「Checklist.xlsx」で確認や設定ができます。なお、「ワークフローの命名規則」の項目だけはデフォルトでは検査しない設定になっています。

レビューの結果は「WorkflowInspector\Reports」内に保存されます。この結果を見て適宜修正することでより品質の高いワークフローができます。

ロボットを再利用するときやチームで共有するときなどには、ロボットの可読性や保守性、安定性はより一層重要になってきます。今回ご紹介したWorkflow Inspectorを使うことでプロジェクトの品質管理がしやすくなります。そしてチーム全体でUiPathコーディング規約を理解してワークフロー品質評価キットを使うことで、プロジェクトの生産性をより向上させることができるのではないかと思います。

UiPathでカスタムフォームを活用しよう

RPAエンジニア 大庭

RPAロボットを開発する中で、実行の途中でユーザー(今回の場合はロボットを実行している人)から入力を受け付けたい場面があると思います。Input Dialog(入力ダイアログ)アクティビティCustom Input(カスタム入力)アクティビティを使うこともできますが、先日、UiPath.Form.Activitiesパッケージがリリースされ、UiPathのアクティビティでカスタムフォームが作成できるようになりました。

カスタムフォームを作成すれば、ユーザーが入力した複数項目を対話形式で受け取ることができます。これを利用すれば、例えばロボットの実行中に何らかのIDとパスワードが必要なときに、ユーザーからの手入力で設定することがよりシンプルにできるようになったり、ほかにも、ユーザーが予めカスタムフォーム内で設定した内容でロボット内の複数の条件分岐の方向を指定すれば、その時の場面に応じたロボットのフローを実行できます。具体的にはデバッグ作業にも応用できると思います。

UiPath.Form.Activitiesパッケージをインストールすると、Create Form(フォームを作成)アクティビティが使えるようになります。出力は、アクティビティのプロパティパネルにある「フォームフィールドコレクション」でフォームに入力された情報を一つずつ変数に格納したり、「フォームフィールド出力データ」でJSON形式のデータ(String型)で一度に受け取ることができます。後者の場合は、UiPath.Web.ActivitiesパッケージをインストールすればDeserialize JSON(JSONをデシリアライズ)アクティビティを使ってJSONオブジェクトにできます。

これからはCreate Form(フォームを作成)アクティビティを活用してより使いやすいロボットを開発していきたいです。

Uipathで繰り返し処理を途中再開するための工夫

RPAエンジニア 小林

RPAを使った自動化作業では、繰り返し処理を行うことがよくあります。同じ作業を何度もするのはRPAの得意領域ですが、時には途中で想定外のパターンが生じてしまいロボットが止まってしまうということもあります。小規模の作業ならまだしも、時間のかかる作業を再度初めから動かすのはなるべく避けたいものです。ロボットが止まらない設計も大事ですが、万が一止まってしまっても途中再開がしやすい設計にすることで効率的に作業を進められます。今回は、UiPathでループを途中再開するための工夫を紹介します。

扱う例

Excelファイルに書かれたデータを使って、行ごとに同じ作業を繰り返す場合を考えます。例えば、商品情報が書かれたExcelファイルから各情報を拾い、CMSに入力して商品ページを作るという作業があります。今回扱う例は、Excelファイルの1行目には商品名や価格などの項目名が、2行目から100行目までは各商品の情報が書かれているものとします。

繰り返し処理で扱うExcelファイルの例

処理がどこまで進んだかログを残す

ロボットを途中再開するために最も重要なのは、処理がどこまで進んだかのログを残すことです。Write Cell(セルに書き込み)アクティビティを使ってExcelファイルに逐次書き込んでもよいですし、Append Line(文字列を追加書き込み)アクティビティを使ってテキストファイルに追記していくのもよいでしょう。どこまで進んだか簡易的に見るだけなら、Write Line(1行を書き込み)アクティビティを使って出力パネルに表示するという方法もありますが、実行の記録を残すという意味ではファイルとして出力したほうが無難です。

UiPath高速化の工夫(フローチャートの構造編)

RPAエンジニア 小林

RPAを用いた業務自動化において、処理にどのくらい時間がかかるかというのはとても重要な点です。 特に、手順が多く処理に時間がかかる場合、「もっと早く処理が終わるといいけど、どのようにロボットを変えたら良いかわからない」ということも多いのではないでしょうか? このBlogでも以前UiPathを高速化するための工夫を紹介しました。 その中でも特に重要なのが、「無駄な処理を行っていないか、手順を見直す」というポイントでした。 今回はさらに一歩踏み込んで、「無駄になり得る処理を効果的に減らす方法」、つまり状況によって必要だったり必要でなかったりする処理を扱うための方法を考えてみます。 UiPathの画面を例として示していますが、フローチャートの構造そのものを扱うのでRPA全般に共通する話でもあります。

UiPathで呼び出し先のロボットからファイルを参照する

RPAエンジニア 小林

ロボットを動作させるとき、Excelファイルやテキストファイルなど、何らかの外部ファイルを参照するシーンがよくあります。 UiPathで外部ファイルを参照するには、適切なアクティビティに適切なファイルパスを渡せばよいのですが、Invoke Workflow File(ワークフローファイルを呼び出し)アクティビティで呼び出されたアクティビティからファイルを参照する際にはパスの扱いに注意が必要な点があります。 今回は、UiPathで呼び出し先のロボットからファイルを参照する方法について考えてみます。

ロボットから外部ファイルを参照するとき、ファイルが置かれている場所をフルパスで考えたほうがわかりやすい場合と、ロボットから見た相対的な位置(相対パス)で考えたほうがわかりやすい場合があります。 例えば、共有フォルダにあるExcelファイルをロボットで編集するなどの場合は、参照したいファイルの置き場所をフルパスで記述してロボットに参照させることが多いと思います。 一方で、ロボットを動作させる上で一時ファイルを書き出したり、スクリプトを実行したりするということもあります。 このようなロボットの一部とも言えるファイルは、ロボットから見た相対パスで参照する場所を考えたほうが都合がよいことが多いです。

スクリプトなどロボットの動作を補助するファイルを含んだプロジェクトの場合、参照するファイルの場所は相対パスで考えたほうがわかりやすい

UiPathで引数の値をどう管理するか?

RPAエンジニア 小林

ロボットを開発して作業を自動化すると、あとは実行ボタンを押すだけで目的の処理を実行することができます。 しかし時には、今までと異なるExcelファイルを読み込みたい、書類に入力する日付を都度変えたいなど、ロボットを実行する前に変数の値を設定したい場合があります。 実行前に設定する機会や項目が多くなると、設定し忘れたり誤った値を設定してしまったりすることもあるかもしれません。 今回は、UiPathで初期値の設定が必要な変数(引数)をどう管理するかについて考えてみます。

外部からロボットに渡す値は引数として定義する

ロボット内のアクティビティ間で渡す値を変数と呼びますが、その中でも特に外部からロボットに渡す値を引数と呼びます。今回設定するのも、ロボットの実行時に設定しておく必要がある値(=ロボットの外部から管理したい値)なので引数と言えます。まず、引数は引数であることが分かるように設定しておきましょう。UiPathの引数はデザイナーパネルで「変数」の横にある「引数」の項目で設定できます。引数の使い方は基本的に変数と同じで、各種アクティビティ内で使うことができます。通常の変数との違いは、引数として設定することで、他のロボット(ワークフローファイル)とやり取りする値として使うことができるという点です。今回紹介する例ではロボット間の値の受け渡しは行わないので、全て通常の変数として設定しても問題はないのですが、今後の拡張性やロボットとしての見通しのよさを考えると、外部から渡す値は引数として設定したほうがよいでしょう。

デザイナーパネルで、「変数」の横にある「引数」の項目を使って引数を定義できる

公共機関で加速するRPAの導入

UI開発者 宇賀

大手企業を中心に導入が進み、日々拡大するRPAの市場規模。もはやすっかり「RPA」というキーワード自体が珍しくなくなってきている印象です。

RPA元年から数年、昨今では私企業だけではなく公的機関でも導入が進んでいます。