BizRobo!の条件分岐と「判定(Test)」ステップ～初心者あるある～

就業先で、BizRobo!を使用しています。BizRobo!開発で悩み、BizRobo!ナレッジベースで色々と検索しています。

BizRobo!で開発されたロボットを改修する際、条件分岐で利用される「変数判定(Test Variables)」ステップの使い方を理解しておらず、デバック時に苦戦したことがありました。

今回は、現場に配属されてからBizRobo!を知った私が、BizRobo!の条件分岐でよく使われる「判定(Test)」ステップについて解説します。

※間違っている箇所や不適切な表現があるかもしれませんが、その時は都度修正いたしますので、ご指摘いただけると幸いです。


## BizRobo!の条件分岐とは
条件分岐とは、ある条件によって処理が変わる流れを指します。
BizRobo!でも、条件分岐を表すための書き方が用意されています。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2955689/c06a40c7-3821-d5ab-6406-9915c87b4cf6.png" width=75%>

基本は、「判定(Test)」ステップとトライステップを組み合わせて使う方法を用います

トライステップとは、プログラミングでいうTry-Catchのような使い方ができるステップで、エラーが発生した後にも処理をしたい場合に使用します。

上記図の場合、Test Variablesの条件分岐でBに進んだ場合、Cには進むことがありません。条件次第で、BかCかの一方しか進めないので、プログラミングのIf-Elseと同じ構造になります。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2955689/85e656f3-b4a0-88da-e3d5-99fae5534d12.png" width=75%>

BizRobo!ナレッジでは、「判定(Test)」ステップだけを用いた条件分岐も紹介しています。しかし、この条件分岐を用いる場面が思い浮かびませんでした。

上記図の場合、処理の順番は、Aに進み、Test Variablesでの判定で、条件を満たした場合、B→Cと進みます（A→B→C）。一方、条件を満たさなかった場合、Bには進まず、Cへと進みます（A→C）。

条件分岐の場合、A→Bという処理になってほしいのにも関わらず、上記図ではのC処理も実行されてしまいます。自分にとっては使い勝手が悪く、普段この方法では実装していません。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2955689/292d2bca-80be-8b38-00a5-430db2a7a047.png" width=75%>

「判定(Test)」ステップの基本的な使い方を紹介しましたが、「判定(Test)」ステップには様々な種類があるため、用途によって使い分ける必要があります。
（Bizrobo! version10.3.0.7）


Bizrobo! ナレッジベースで、条件分岐や「判定(Test)」ステップについて解説していますので、下記も参考にしてください。
>[ロボットフローを理解する（条件分岐①）](https://knowledge.bizrobo.com/hc/ja/articles/360030314272 "ロボットフローを理解する（条件分岐①）")
>[ロボットフローを理解する（条件分岐②）](https://knowledge.bizrobo.com/hc/ja/articles/360055373151 "ロボットフローを理解する（条件分岐②）")
>[トライステップとは](https://knowledge.bizrobo.com/hc/ja/articles/360042799251 "トライステップとは")
>[「変数判定(Test Variables)」ステップ](https://knowledge.bizrobo.com/hc/ja/articles/360042800591 "「変数判定(Test Variables)」ステップ")
>[「値判定(Test Value)」ステップ](https://knowledge.bizrobo.com/hc/ja/articles/360054433612 "「値判定(Test Value)」ステップ")
>引用：BizRobo! ナレッジベース



## 条件分岐における注意点
#### 条件がTrueの場合

これは私が苦戦した内容です。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2955689/c06a40c7-3821-d5ab-6406-9915c87b4cf6.png" width=75%>

プログラミングでは、If文がTrueの場合、If文の中の処理が実行されます。BizRobo!でも、If文がTrueの場合、Bに進むと思っておりましたが、Cに進んでしまいます。

BでなくCに進む理由は、BizRobo!で条件分岐を作る際の「判定(Test)」ステップの設定が関係しています。そこで、BizRobo!での条件分岐に関わる「判定(Test)」ステップの設定を説明します。


<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2955689/2bbb51b7-71e6-83b7-9fe6-c13b75fad5c3.png" width=65%>

「判定(Test)」ステップのうち、If&Doの設定が関係しています。
Ifで指定した「すべての条件を満たす」を満たす場合、Doで指定された条件を実行します。Doで指定できる条件のうち、「後続のステップすべてをスキップ」を選ぶと、条件分岐の意味がなくなってしまうため、使用できません。
そのため、「エラー処理時に指定されたとおり」を選ぶしかありません。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2955689/2624d303-b459-7bad-1118-b7e82742d028.png" width=65%>

また、エラー処理のThen設定では、「次の代替手段を試行」を選択します。これはトライステップと紐づけたい時に選択します。

以上で、BizRobo!での条件分岐に関わる「判定(Test)」ステップの設定が完了いたしました。
「判定(Test)」ステップの設定で、下記2項目の設定をするため、トライステップの下のブランチ（C処理）に進むのです。
・If文がTrueだった場合、「エラー処理時に指定されたとおり」を選択
・エラー処理では、トライステップを利用する「次の代替手段を試行」を選択

上記を理解しておらず、なんで条件分岐がうまくいかないのだろうとデバック時に躓いていました。


## 「変数判定(Test Variables)」ステップを使う場合
「変数判定(Test Variables)」ステップは、BizRobo!でよく使用されるステップです。しかし、使いづらい一面があるので、紹介します。

#### デフォルトが「いずれかの条件を満たさない」
Ifで条件を指定する際、「いずれかの条件を満たさない」のようにNotを使用した条件がデフォルトになっています。Ifで条件を書く際は、否定文を用いるとわかりづらくなってしまいます。そのため、自分は「いずれかの条件を満たす」か「すべての条件を満たす」を使うようにしています。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2955689/da7414b0-b066-b9ce-d075-10155256d578.png" width=65%>


他の「判定(Test)」ステップでは、上記のように条件の種類は多くありません。
「条件が満たされています」「条件が満たされていません」のように2種類しか存在しないケースが多いため、選びやすいです。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2955689/eb31d1c3-230a-a440-0313-89e25c91af50.png" width=65%>


#### 条件の英語訳が難しい
職場によっては、英語版のDSしかない時もあるかもしれません。しかし、英語版の場合、「変数判定(Test Variables)」ステップの条件を理解するのが難しいので、ご注意ください。以下に英語版と日本語版を用意しますので、参考にしてください。

英語版
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2955689/7ef4147f-62f8-0f8b-f7e2-9f1b94426724.png" width=65%>

日本語版
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2955689/9fad346b-9a7a-33b5-4594-738e8f7a3d69.png" width=65%>


## 最後に
BizRobo!の「判定(Test)」ステップについて、解説いたしました。

BizRobo!のeラーニングで「判定(Test)」ステップについて学びました。しかし、実際の現場で開発をすると、英語版の環境しかないため、「変数判定(Test Variables)」ステップの条件を選ぶのが大変だったり、条件分岐が予想通りの動きをせず、デバックに時間がかかったりするなど苦戦しました。

実際の現場による経験がいかに大事かが身に沁みました。

今回の記事を読んで、BizRobo!における「判定(Test)」ステップの理解を深め、実際の現場に役立ててほしいと思います。今後もBizRobo!開発に役立つような記事を書いていきます。