BizRobo!のブランチ～初心者あるある～

私は、SEからRPAエンジニアにキャリアチェンジしました。
RPAエンジニアの初現場で、RPAツールのBizRobo!を使用しています。BizRobo!eーニングのおかげで、ロボットを1人で開発できるようになりました。
しかし、BizRobo!を使い始めて半年も経っていないため、初心者らしい失敗をたくさん経験しています。

現場に配属されてからBizRobo!を知った私が、BizRobo!のブランチについて解説します。

※間違っている箇所や不適切な表現があるかもしれませんが、その時は都度修正いたしますので、ご指摘いただけると幸いです。
　
## BizRobo!の基本処理
BizRobo!での開発は、プログラミングと考え方は一緒です。プログラミングで使用される考え方を理解すれば、BizRobo!での開発も楽になります。ここでは、BizRobo!でよく使われる基本的な処理を解説します。

#### BizRobo!による順次処理
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2955689/2c8e3d8a-60d8-b55b-9f93-3e4b42b9473d.png)
左から右に向けて、順番に実行していく処理を順次処理と言います。上記図の場合、1→2→3と処理が実行されます。
BizRobo!では、四角形部分をステップと呼びます。Robotの処理フローを構成する最小単位で、「Excelファイル開く」や「PDF読取」などステップごとに実装したい機能を設定することができます。

#### BizRobo!による条件分岐
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2955689/654efe52-7deb-1dd9-74aa-f328957657c9.png)
ある条件によって、実行する内容を変える処理を条件分岐と言います。
プログラミングでは、If文を用いられますが、BizRobo!ではトライステップとテストステップを用います。2番ステップに条件が記載されており、条件によって、2番ステップに進むか、4番ステップに進むかが決まります。

#### BizRobo!による反復処理
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2955689/dc547c93-1d32-2858-b282-029b5cd6b5d0.png)
指定された内容を繰り返して行う処理を反復処理と言います。
BizRobo!では、ループステップを用います。上記図の場合、2〜4までが繰り返し実行されます。明示的に次ステップを用いることで、ループ処理がどこまでかを指定させることもできます。

　
以上が基本処理になります。
3つの基本処理を用いることで、BizRobo!の最低限な開発をすることができます。順次処理、反復処理、条件分岐で下記のようなロボットを開発することができます。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2955689/9f1199c9-1586-797b-87e4-30b4619e1087.png)
上記ロボットは、Webページを読み込み、Webページにある表データから該当データ（上記図では日本）を探し、見つかったら、次のページへ探しに行くロボットになります。WebサイトのスクレイピングはRPAでよく期待される自動化ですが、基本処理3つを理解することで処理をくみ上げることができるのです。


### BizRobo!のブランチとは
ほとんどのプログラミング言語は上記の基本処理を上から下へ書いていきます。また、UipathやAutomation AnywhereなどのRPAツールも上記の基本処理をもとに上から下に書いていきます。そのため、基本処理を理解していれば、開発することができます。

しかし、BizRobo!ツールの特性上、ブランチという概念を理解しないといけません。なぜなら、BizRobo!は左から右へ、上から下へと二次元的に書くことが出来るからです。RPAツールだけでなく、プログラミング言語も含めて、二次元的に書くことができるのは珍しいでしょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2955689/c0addd10-df8a-ce0b-12b2-cba1e5cce42a.png)
上記図のように処理フローを書くことができ、処理順は、1→2→3→4→5となります。上記図をみると、樹形図のようですね。処理フローの全体像が見えやすいメリットがありますが、この理解が足りないと、開発で躓いてしまいます。今回私がやってしまった失敗は、ブランチの概念を理解しきれておらず、起こってしまったのです。
　
　
## BizRobo!でブランチを使った際の失敗談
私の今の仕事は、BizRobo!の運用保守です。その時は、過去に開発されたBizRobo!の改修を行っていました。改修していたロボットは下記図のようなイメージです。（実際はもっとステップ数が多いですが、簡略化しています。）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2955689/171c97c4-89cd-b926-b50e-3edd8cb03ec4.png)
改修にて、4番ステップとエラーメール送信ステップを追加しました。4番ステップに入ったら、エラーメール送信を送り、全体の処理を終了させる予定で改修しています。

デバックでもメール送信できることは確認できたため、結合テストを兼ねて、MCによるスケジュール実行を試しました。その結果、エラーメールが永遠と送られてしまい、ロボットが止まらなくなってしまったのです。**無限ループ**になるロボットを開発していたとは思いませんでした。

無限ループになってしまった原因は、複数ありましたが、主な原因はブランチの概念の理解不足でした。エラーメール送信ステップの後で処理が止まると思いこんでいたのです。（**×マークを停止**と勘違いしていました。）

「BizRobo!のブランチとは」というタイトルで説明できたので、理解していたつもりでした。しかし、ステップ数が多くなってしまったり、他の人が開発したロボットをみたりすると、全体像がみえなくなるため、ブランチの概念が抜け落ちてしまったのです。

エラーメール送信で確実にステップを止めるには、明示的に停止ステップを組み込む必要があります。下記図が正しい処理となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2955689/7b039482-463b-4049-3239-8efa84f92f8f.png)
　
## 最後に
BizRobo!のブランチについて、解説いたしました。BizRobo!のeラーニングでブランチの概念を理解していました。しかし、実際の現場の開発で、eラーニングで学んだことが抜け落ちてしまいました。実際の現場による経験がいかに大事かが身に沁みました。

BizRobo!では、樹形図のように書くことができるため、ブランチの概念が抜け落ちると、予想外の処理をしてしまいます。今回の記事を読んで、BizRobo!に必要なブランチの概念を理解し、実際の現場に役に立てばいいなと思います。

また、今後もBizRobo!開発に役立つような記事を書いていきます。