【BizRobo】基礎知識

# はじめに
業務でBizRoboを触ったので、その特徴について気づいたところのメモ。RPAではほかにUiPathを触ったことがあるので、それと比較した点もいくつかある。

# 前提条件
v10.2 と v10.4

# BizRoboの特徴

## WebブラウザとExcel操作機能を内包
BizRoboは独自のブラウザを内包しているため、Webサイトの自動化はBizRobo内で完結する。
![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/424975/ecc36d71-bce6-08b1-9921-1ba1341e6c6b.png)

また、Excel読取＆書込み機能も有しているため、PCにExcelがインストールされていなくてもExcelファイルを編集できる。
ただし、Excel周りの機能は「Apache POI」で実装されているため、完全に対応しているとは言いづらい。

## Webブラウザの自動化に向いている
ブラウザをメモリ上で持つため、複数ロボットを実行しても動作に影響を与えない(パフォーマンス以外では)。

## 開発中もステップは実行される
Design Studioでは、ステップをクリックして選択すると、その1つ手前までステップが実行される。
![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/424975/ee2c7078-1693-59d7-a409-46cbcb11c3a4.png)

Webサイトの参照などであれば致命的な問題とならないが、データの登録などを含む場合でも実行されてしまうので注意が必要。ただし、ファイル出力など一部のステップは編集時に実行しない設定になっている。

ステップを実行させずに選択するときは、Ctrl + クリック するか、右クリック→Select を選ぶ。

手順の多いロボットだと、ステップを選択するたびにいちいち最初から実行が走り、編集の妨げになることもある。

### Desiginモードと値判定(Test Value)の挙動
ロボットを作っているときでも、フローの途中にある値判定(Test Value)ステップは実行される。しかも、判定がfalseになる場合、Error Handling等の設定がどうなっていてもそのステップでフローの実行が止まる。こうなるとWebサイトの自動化を作るときに下の画面で次はどこをクリックする…などの指定ができなくなる。
![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/424975/b9740410-fc89-5221-8f7c-8267fb60b6df.png)
そのため、ロボットを開発する際は、条件分岐などは考えずにクリックなどのステップを作成し、そのあとに条件分岐などを追加していくとよいと思う。

## デスクトップの自動化には向いていない
※v10.2で再現
ロボットに Desktop Automation ステップを追加するだけで、Design Studio の挙動が実用に耐えづらいほど遅くなる。
それに、機能が乏しい。例えば、UiPathにはある「テキストボックスを入力前に空にする」機能がない。繰り返し同じ項目に値を入力する場合、テキストボックスをクリアするステップを自力で実装する必要がある。

### デスクトップの自動化にはPCが2台必要
※v10.4から、開発用にローカルDAが追加されたので、1台のPCでDAの開発ができるようになった。
[Local Desktop Automationの機能と設定方法について – BizRobo! ナレッジベース](https://knowledge.bizrobo.com/hc/ja/articles/360033350252-Local-Desktop-Automation%E3%81%AE%E6%A9%9F%E8%83%BD%E3%81%A8%E8%A8%AD%E5%AE%9A%E6%96%B9%E6%B3%95%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)

例えばUiPathはUiPath StudioがインストールされたPC単体で開発と実行が可能だが、BizRoboは開発用と実行用の2台が必要。ただし、WebサイトからファイルをダウンロードするなどBizRobo内で完結する操作であれば、DAは必要ない。

## ブラウザの機能が十分とは言いづらい
例えば最近流行りの画像の遅延読み込みに対応していない。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/424975/a39d65c9-f632-a9c6-c4df-0fb6af36aaa7.png)


# ブランチと実行順序
別記事へ記載
[【BizRobo】ブランチの特徴 - Qiita](https://qiita.com/vicugna-pacos/items/e03ae714cde8255ac631)

# 条件分岐
値判定などの判定ステップで、指定した条件を満たさなかったときに「後続の処理をスキップ」すると、後続のステップすべてが無視される。
![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/424975/f69435e3-fb74-cb35-ebd3-67b824e4166d.png)


一般的なif&elseを実装したい場合、トライと値判定(などの判定ステップ)を組み合わせると良いと思う。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/424975/3edc5651-3931-126c-f523-3f5bdaa12b84.png)

# 繰り返し処理

## For Each
大体のケースでは、For Eachから始まる各種ステップを使用する。
![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/424975/95e19d48-c0fc-f278-2a61-990004dbcf10.png)
気を付ける点としては2点ある。
・ループ範囲はFor Eachステップ以降すべてとなる。ループが終わった後の処理は、ループ手前でブランチを分けて実装する。
・変数およびブラウザの状態はループを抜けるとリセットされる(変数はグローバルにした場合は例外)。連続データを検索し、見つけたらループを抜ける…という処理をしたい場合は頭をひねる必要がある。

# Webサイトの自動化
前述したとおり、BizRobo内部のブラウザ上で動作する。

## ブラウザの種類
2種類のブラウザが用意されている。「デフォルト」と「クラシック」で、基本は「デフォルト」を使用する。社内システムなど、古いブラウザにしか対応していないようなWebサイトの場合、「デフォルト」ではうまく動かない場合があるので、そのときは「クラシック」を使用する。1つのロボットにつき、選択できるブラウザは1種類である。

## TLS1.2を使用する
ヤフーなど一般的なWebサイトを利用する場合、URLが「https」で始まっている場合が多い。「SSL/TLS」という、通信の暗号化などにかかわるプロトコルだが、BizRoboの初期設定ではこのプロトコルのバージョンが低い。この状態でWebサイトを開こうとしても、エラーになってしまう。
![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/424975/f56311ca-76ec-146f-b55f-1b8fbec30062.png)

その場合、ロボットの設定で使用するTLSのバージョンの変更が必要。
参考：[サイトの SSL/TLS のバージョンが変わってしまい、サイトを Load Page（ページ読込）できなくなった場合のエラーと対処 – BizRobo! ナレッジベース](https://knowledge.bizrobo.com/hc/ja/articles/360028162131-%E3%82%B5%E3%82%A4%E3%83%88%E3%81%AE-SSL-TLS-%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%8C%E5%A4%89%E3%82%8F%E3%81%A3%E3%81%A6%E3%81%97%E3%81%BE%E3%81%84-%E3%82%B5%E3%82%A4%E3%83%88%E3%82%92-Load-Page-%E3%83%9A%E3%83%BC%E3%82%B8%E8%AA%AD%E8%BE%BC-%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%8F%E3%81%AA%E3%81%A3%E3%81%9F%E5%A0%B4%E5%90%88%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%A8%E5%AF%BE%E5%87%A6)

## 認証情報の設定
ユーザー認証が必要なWebサイトの場合、ロボットの設定で認証情報を指定する。
ロボットを開いた状態で設定のアイコンをクリックし、デフォルトオプションから「クレデンシャル」を設定する。
![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/424975/0b324eeb-9fdd-20ab-1dfe-0134eb999d05.png)
この辺の設定は「クリック」ステップ等で個別に設定することもできる。ただステップ1つずつこの設定をするのは大変なので、ロボットの既定値として設定しておくとよい。

## タグファインダーに注意する
クリックなどのステップを作成した際、タグを見つけるためのタグファインダーは一度確認しておくとよい。
![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/424975/7d80d7ce-1c48-d80f-5f9c-ffb962a00df2.png)
「タグパス」はタグの位置を示しているが、設定値によってはWebサイトのレイアウトが少し変わるだけで、目的のタグを見つけられなくなってしまう。
参考：[DSのファインダーのタグ パス – BizRobo! ナレッジベース](https://knowledge.bizrobo.com/hc/ja/articles/360030645312-DS%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%B3%E3%83%80%E3%83%BC%E3%81%AE%E3%82%BF%E3%82%B0-%E3%83%91%E3%82%B9)

上記サンプルではタグパスが`.*.div.div.div.div.div.div.div.*.div.div.a`となっているので、「次へ」リンクまでのタグの構成が少しでも変わると「次へ」リンクを見つけられなくなってしまう。それを回避するために、`.*.a`へ変更したほうが、Webサイトのレイアウトが多少変化しても「次へ」リンクを見つけやすくなる。

## 名前付きタグを活用する
Webページ全体から「次へ」リンクを探すのは嫌なので、リンクを探す範囲を限定したい…という場合、名前付きタグを活用するとよい。
ある範囲に名前付きタグを設定すると、それ以降のステップでその名前付きタグをタグファインダーに使用できる。
![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/424975/ef320ba3-cdde-34e1-1351-578035efee12.png)
「ファインダー」タブの「検索範囲」を「名前付きタグで」へ変更し、その下の「このタグ内」で名前付きタグの名前を選択する。
名前付きタグは既定では自動的に命名され、1から順番に数字がつけられていく。

名前付きタグを扱う際には注意点がある。
それは、名前付きタグの指定はDesign Studio右側のエリアからでないと参照できない点である。ステップの設定ウィンドウを開いて名前付きタグを選ぼうとしても、選択肢に出てこない。

# Excel読み書きの仕組み
Apache POI で実装しているらしく、POIが対応していない機能にはBizRoboも対応していない。