こんにちは。ホームスタッフサービスのT上です。

前回は、UiPathで動作を繰り返す方法について説明しました。

UiPath「繰り返し」アクティビティ大解剖!【概要編】

今回はその中でも、「繰り返し(前判定)」「繰り返し(後判定)」のアクティビティについてもう少し詳しくお話しします。

「繰り返し(前判定)」と「繰り返し(後判定)」の違い

前回のブログでも少し触れましたが、「繰り返し(前判定)」「繰り返し(後判定)」の違いは下の通りです。

  • 「繰り返し(前判定)」は、最初の判定結果がFalseだと動作が一度も行われない。
  • 「繰り返し(後判定)」は、判定結果に関わらず必ず一度動作が行われる。

つまり、

最初の判定結果がFalseの時、繰り返しの動作が行われるかどうか

というのが「繰り返し(前判定)」「繰り返し(後判定)」の一番大きな違いと言えるでしょう。

しかし、「繰り返し(前判定)」の最初の判定結果がTrueになる場合は、「繰り返し(後判定)」でも同じ結果になります。
「繰り返し(前判定)」「繰り返し(後判定)」の動作フローを図にしてみました。

「繰り返し(前判定)」と「繰り返し(後判定)」の動作フロー

「繰り返し(前判定)」は最初の動作の前に判定が行われます。しかし「繰り返し(前判定)」でも「繰り返し(後判定)」でも同様に、繰り返される度「動作と判定」の回数が増えていきます。そして、同じ回数だけ動作が行われます。

つまり、一度Body内の動作が行われる場合は、「繰り返し(前判定)」「繰り返し(後判定)」も同じ結果になるのです。

私が使いやすいのは「繰り返し(後判定)」です

では、動作が変わらない時は、「繰り返し(前判定)」「繰り返し(後判定)」どちらを使えばいいのでしょうか?

繰り返したい動作がある時、私がまず使おうと思うのは「繰り返し(後判定)」です。

なぜなら、その方が頭でイメージした動きをアウトプットしやすく、ロボットを作りやすいからです。

例えば、九九の9の段を計算するワークフローを作成します。
繰り返したい動作は次の通りです。

  • Int型変数cntの数を1ずつ足していく。(開始時はcnt=0とする。)
  • 「9×cnt」をInt型変数Num_Aに代入する。
  • 変数Num_Aを出力パネルに書き込む。

九の段は9×1から9×9までですから、動作を9回行った後繰り返しを抜けます。
そのため、条件は「cnt<9」となります。

作成したワークフローが下の画像です。

九九をする「繰り返し(後判定)」のワークフロー

このように、ワークフローを作成する際、まず繰り返したい動作が何か考え、次に「その動作をいつまで繰り返すか」を考えます。そのため、「動作→判定(条件)」の順に配置されているのが「繰り返し(後判定)」は作りやすいのです。
また、アクティビティの処理も「動作→判定」の順に繰り返されるため、ロボットの動作がイメージしやすいです。そのため、私はまず「繰り返し(後判定)」を使ってワークフローを作成することが多いです。

「繰り返し(前判定)」を使う場合

では、「繰り返し(前判定)」を使うのはどういう場合でしょうか。

私が使おうと思うのは「動作を一度も行いたくない場合がある時」「自分以外の誰かが見る時」です。

動作を一度も行いたくない場合がある時

前述の通り「繰り返し(前判定)」は、最初の判定結果がFalseだと動作を一度も行いません。だから、Body内の動作を行いたくない場合がある時は「繰り返し(前判定)」を使います。

ちょっと例が思い浮かばなかったのですが、「繰り返し(前判定)」を使えば条件に合わない場合は一度も行わないでワークフローを終了することができます

「この動作は一度も行わない場合があるな」という時は「繰り返し(前判定)」を使いましょう。

自分以外の誰かが見る時

私の先輩M田さんによると、自分以外の誰かが見る時は「繰り返し(前判定)」を使用した方が見やすいそうです。M田さんは「繰り返し(前判定)」の方が見やすいし、「繰り返し(前判定)」しか使わないとおっしゃっていました。

なぜなら、「繰り返し(前判定)」は最初に条件が提示してあるから処理が把握しやすいそうです。
「確かにそういうこともあるだろう」とは思うのですが、私はあまり実感がわきません。自分が作ったロボットを他の誰かに見せることも、誰かが作ったロボットを詳しく見ることもほとんどないからです。

ただ、今後先輩方や社外向けにロボットを作る時は、「繰り返し(前判定)」を使ってみたいと思っています。

初心者には「繰り返し(後判定)」をすすめたい

「繰り返し(前判定)」「繰り返し(後判定)」どちらがいいのか、というのは一概には言えません。

しかし、私がおすすめしたいのは「繰り返し(後判定)」です。
私もそうだったのですが、UiPathを使い始めたばかりのころは、「とにかく作ってみること」で精一杯です。そのため、作ったワークフローを誰かと共有することはあまりないと思います。

また私の実感として、「繰り返し(前判定)」は「条件に合う時に同じ動作をもう一度繰り返すアクティビティ」というよりは、「条件に合う間だけ同じ動作を続けるアクティビティ」と言った方が近いです。
そのため、「繰り返すこと」に条件があるのではなく、「動作を行うこと」に条件があると考えると「繰り返し(前判定)」の動作をイメージしやすくなるかもしれません。

次回は「繰り返し(コレクションの各要素)」についてお話します。