UiPathでVB.NETの表現をうまく使おう!

RPAエンジニア 小林

UiPathを始めとするRPAは、プログラミングに慣れていない人でも開発を行えることが利点の1つとされていますが、 慣れてきたらプログラミングの考えを取り入れることでさらにロボット開発が便利になります。 今回は、UiPathでロボット開発をするときに便利なVisual Basic .NET(以下VB.NET)による表現と活用法を紹介します。

VB.NETとは

VB.NETとは、プログラミング言語の1つです。UiPathではこのVB.NETを使ってロボットにさせたい動作を記述することができます。プログラミング言語というと難しく聞こえるかもしれませんが、例えばオブジェクトを文字列に変換するObject.ToString()はUiPathを使ったことのある人ならおなじみではないでしょうか?このObject.ToString()もVB.NETによる表現(メソッドといいます)の1つです。他にもUiPathで文字列操作をしたことがある人なら、String.Split()String.Substring()などのメソッドも使ったことがあると思います。このようにUiPathでのロボット開発において、VB.NETはとても身近な存在です。

便利なVB.NET活用法の例

上記の方法以外にも、使えるようになると便利なVB.NETはたくさんあります。例えば今日の日付を取得したい場合に有効なのがDateTime.Nowです。DateTime.Now.ToString()とすれば今日の日付と現在時刻が入った文字列が得られます。さらにDateTime.Now.ToString("yyyy/MM/dd")という書き方で出力する文字列の形式が選べます。資料に作成日を書き込みたい場合や、実行時刻を記録に残したいときなどに使うと有効でしょう。

DateTime.Nowを参照すると今日の日付と現在時刻が得られる

また、条件によって違う値を返したい場合、If演算子を使うことができます。If(条件, A, B)と書くことで、条件が真のときにAを、偽のときにBを返します。もちろんこれはIfアクティビティを使っても実現できるのですが、単に返す値を決めるだけの条件分岐でしたらIf演算子を使ったほうが使うアクティビティが少なくて済みます。

If演算子の使用例
条件によって異なるメッセージを表示するだけなら、If演算子を使うことで1つのアクティビティで実現できる。

UiPathではAssignアクティビティWrite Lineアクティビティなどの通常のアクティビティへの入力としてVB.NETを使った表現を書く他にも、Invoke Codeというアクティビティを使ってVB.NETのコードを直接動かすことができます。コードを書くといっても本格的にコーディングするわけではなく、簡単なコードを書くだけで通常のアクティビティでは実現しにくいことを簡単に実現できる場合があります。例えば、配列をソーティングする場合が考えられます。配列を降順でソートしようと考えた場合、Array.Sort()Array.Reverse()という2つのメソッドを使うだけで降順ソートされた配列ができあがります。

Invoke Codeアクティビティの使用例
VB.NETのコードを直接実行することで、簡単に降順ソートができる。

UiPathでVB.NETをどう活用していくか?

このようにVB.NETを使うと、UiPathでできることの幅がさらに広がります。UiPathでなにかやりたいことがあるとき、VB.NET関係のことも調べるようにすると実現できる可能性をあげることができます(上記した例でいえば、Web検索するときに「UiPath 配列 ソート」だけでなく「VB.NET 配列 ソート」というキーワードでも検索すれば得られる情報は多くなります)。

しかしながら必ずしもVB.NETをたくさん活用すればいいというわけではありません。便利な機能を盛り込もうとするあまり扱いにくくなってしまっては意味がないからです。

日付入力の例でいえば、「資料に今日の日付を入れるようにしたいが、たまにイレギュラーで別の日付を入れることもあり、どう設定していいか分からない」ということも考えられます。この場合は、無理に日付取得を自動化しないで手動設定で行い、それ以外の操作を自動で行うという選択肢も決して悪くありません。

条件式の例でいえば、If演算子を使えばアクティビティの見た目がすっきりする一方で、条件分岐を行っていることが見えにくくなる可能性もあります。今後の運用も考えて条件分岐を行っていることをはっきりと示したいなら、IfアクティビティやFlow Decisionアクティビティを使ったほうが無難でしょう。ソーティングの例でいえば、操作をUiPathで完結させることにこだわらず、いったんExcelにデータを貼り付けてExcelの機能を使ってソーティングするという方法も考えられます。

色々と手段がある中で、所望の動作に対して「どのようにロボットを構築すれば最も見通しが良くなり、メンテナンス性が高まるのか」を考えてロボット開発を行うのが大切だといえます。

今回は、VB.NETによる表現を使うことでUiPathのロボット開発が便利になる例を紹介しました。ロボットにある動作をさせたいと考えたときに、採れる手段が多くなると開発の幅がより広がります。手段の1つとしてVB.NETをうまく取り入れて、より便利にロボットを作っていきたいですね。