UiPathの繰り返し処理 「Flow Dicision」と「While」「Do while」「For each」の整理

 

 

こんにちは。めがねロボット税理士の谷口(@khtax16)です。

 

 

当ブログでも何度か紹介している、RPAツールのひとつ「UiPath(ユーアイパス)」では、フローチャート方式でロボットを作っていくことができます。

 

で、UiPath初心者の私としては、この


マークを使いたかったのですがどう使っていいのかが、いまいちわかりませんでした。

 

↑ これこれこれ

 

 

UiPathのビデオチュートリアルを見ればわかるのですが、私のような半端者が見ながら操作をしていくと、10分の動画で1時間ぐらいかかったりします。

(当時のチュートリアルのリンク https://www.uipath.com/ja/tutorials/control-flow-jp )

 

なので、私のような初心者の方向けに、簡単な機能と使い方についてまとめてみました。

 

 

※ そのほかのUiPathの基礎知識についてはこちら!

『【UiPath初歩の初歩】マウスで画面をクリック、指定の文字を入れる、アプリを起動するなど』

『【税理士のRPA】UiPathで弥生会計を操作 試算表・決算書をPDFとして印刷』

『UiPathと弥生会計 総勘定元帳と仕訳日記帳をCSVでエクスポート→Excelに貼り付け【税理士のRPA】』

 

 

UiPathのフローチャートで分岐をさせたいときの処理[Flow Dicision]の使い方・設定方法

まず、このマーク、


名前を[Flow Dicision]といいます。

(Activitiesで検索すると出てきます)

 

この[Flow Dicision]、フローチャートを進めていく際、

  • 条件を満たすときは左へ(True)
  • 満たさないときは右へ(False)

と分岐させる機能を持っています。

(左右は別にして、このマーク自体はUiPathに限らずフローチャートではよくある分岐の記号だと思います)

 

 

Excelを多少使われている方、ほんの少しでもプログラミングを勉強したことがある方はピンと来ると思いますが、要は「if」です。

 

使い方としては難しいことは何もなく、[Flow Dicision]をセットしてクリックし、「Properties」の「Condition」に条件式を入れるだけです。

 

 

↓ こんな感じ

 

 

たとえば、

  1. [Input dialog]で「好きな数字は?」と質問させる
  2. 任意の数字を答えさせる(変数「number」)
  3. メガネを象徴する数字「8」なら「一緒だね!」、それ以外なら「趣味悪いね!」

というメッセージを出すとします。

 

この場合、画像のように「Condition」に「number = 8」と入れておくことで、一緒かどうかを判定させられます。

 

 

↓ 好きな数字を入力

 

 

↓ 条件式に一致していれば「一緒だね!」

 

 

↓ 不一致なら罵倒される

 

 

 

 

Flowchartのときは[Flow Dicision]、Sequenceのときは[If]

そもそもの話でもありますが、RPAツールのひとつであるUiPathは、

  • 単純な命令のとき ⇒ Sequence
  • 命令が長くなるとき ⇒ Flowchart

というような感じで、厳密ではないにしろ使い分けがされているようです。

 

 

私はこの[Flow Dicision]の使いどころがいまひとつよくわかっていなかったのですが、当時のビデオチュートリアル「2.2. Control Flow」を見ると、

  • Flowchartのときは[Flow Dicision]
  • Sequenceのときは[If]

という使い分けが、これも厳密ではないにしろ目安として説明されていました(たしか)。

 

[If]でさっきの分岐をつくると、こんな感じになります。

 

 

「Then」が「True」、「Else」が「False」と同じ意味ですね。

(中級ぐらいのExcelだとTrueとFalseしか出てこないかと思いますが、プログラミングだとThenとElseはいろんな言語で出てきます)

 

 

 

UiPathでのFor文 繰り返し処理[Flow Dicision][While][Do while][For each]の違い

で、ようやく繰り返し処理の話になりますが、[Flow Dicision]単体は「if文」であるものの、くり返したいときはこうすることで実現できます。

 

 

 

 

「False」のとき等の、Activitiesの矢印をのばして[Flow Dicision]の前のものにつなげるだけです。

 

 

 

 

こんな図にすると、誤っていた場合(Falseの場合)に循環していくのがなんとなくわかるでしょうか?

 

こうすることで、メガネへの尊敬の気持ちで「8」と答えるまでは永遠に「趣味悪いね!」と罵倒されつづけるドMループが完成しました。

 

 

 

[While][Do while]の使い方

なので、少々難易度の高い「While」などを知らなくても、Flowchartで[Flow Dicision]を使えば簡単な繰り返し処理はできるようになる わけです。

 

 

ただおそらく、特に[For each]のようなほかの繰り返し処理も知っておいたほうがいいでしょう。

 

上で「Sequenceのときは[If]」と書きましたが、特に[While][Do while]はSequenceのときに使う繰り返し処理 のようです。

(While自体はほかの言語でもあるものなので、もちろんFlowchartでも使えます)

 

プログラミング自体をちょろっとしか勉強していない私には、[While]と[Do while]の違いがよくわからなかったのですが、2つを見比べていただくとわかりやすくなるかもしれません。

 

 

↓ While

 

 

↓ Do while

 

 

ご覧のように、[While]と[Do while]は順番が違います

 

[While]⇒ 条件が満たされるまで実行

[Do while]⇒ まず実行して、条件が満たされているかを判定

という感じです。

 

先ほどのFlowchartを、Sequenceでつくるとこうなります。

 

 

 

使用しているのは[If]と[Do while]です。

 

こちらのほうがややこしく、プログラミングチックな雰囲気が出ますね。

(それでもプログラミングよりは見た目で表現されているので、まだ理解しやすいかもしれません)

 

なお、Do whileの「Condition」は、「この条件に合致するときはくり返す」という意味であり、「この条件に合致したら終了する」という意味ではありません。Ifとは感覚が変わるので、注意しましょう。

 

 

 

[For each]は?

と、ここまで述べてきませんでしたが、[For each]についても少しだけ。

 

正直私もきちんと理解できていないのですが、[For each]は[While][Do while]とは少し毛色が違い、データが終わるまで特定の処理を繰り返す、というようなことができます。

 

(使ったことはない)

 

 

自分で使ってみたことがあり、役割がわかりやすかったのは[For each row]で、これは、

  1. Excelのデータを読み取って変数に入れると、
  2. そのデータの数だけ書き込みをくり返す

というようなことができます。

 

『【RDA比較】WinAutoMationとUiPath JDLにて概況書作成【税理士のRPA】』でご紹介したロボットは、[For each row]を使っています。

 

 

ちゃんと理解できてきたら、初心者の方向けにまとめてみたいです。

 

 

 

UiPathビデオチュートリアルの「数当てゲーム」

これは余談ですが、この「8を当てる」ロボットは、何度か書いたUiPathの当時のビデオチュートリアル「2.2. Control Flow」の後半に出てくる数当てゲームを、初心者向けにかなりシンプルにつくり直したものです。

 

ビデオチュートリアル、用意してくれてるだけものすごく助かるんですが、初心者には結構難易度が高いんですよね。。

 

元のものは「0~1000の数字をランダムに出し、その数と一致しているか当てていくゲーム」であるため、ノーヒントだとかなりの時間がかかってしまいます。

 

そうした場合には、[Flow Dicision]を2個入れて、ヒントをつくるとよいそうです。

さっきの「8当てゲーム」だと、「10」を入力すると「もっと小さいよ!」、「2」を入力すると「もっと大きいよ!」と教えてくれるようなヒントを仕込んでおくと、より当てやすくなります。

 

一応自分でつくったものも置いておきます。

 

 

(単にせっかくつくったから載せておきたかっただけ)

 

 

 

 

おわりに

というわけで、UiPathのくり返し機能、

[Flow Dicision]

[While]

[Do while]

を整理してみました。

([For each]はおまけ程度)

 

さらに複雑なものをつくりたいときは、[Flow Dicision]でなく[Flow Switch]というものもあるようです。

 

これは使ったことがないため、もしできたらまたまとめていきます。

 

内容について「ここってこうじゃない?」などありましたら、コメントいただけると嬉しいです!

 

 

 

 

RPAについての関連記事

『【RPA超入門編】RPAとRDAの違い 小規模企業のためのざっくり図解』

『RPA・RDAの衝撃 ロボットがあなたの手となる日(税理士業界向け)』

『RPA習得の難易度は「Excelの関数以上プログラミング未満」説』

 

 

<広告代わり>
「役に立った!」「ニヤニヤした」など、もし「こいつ応援してやろうかな」という菩薩のごときお心が芽生えましたら、Amazonか楽天でお買い物するときに、下のリンクを踏んでからお買い物をしていただけますと私にジュース代なんぞが入ります。とても嬉しい。(なぜかメガネの検索画面が出てきますが無視してお好きなものを!)
▷Amazonでお買い物
▷楽天市場でお買い物