初心者のためのロボット設計②

:::note info
これは[「初心者のためのロボット設計①」](https://qiita.com/imoni_soul/items/3bb80bf3a0d95604b7d5/)の続きです。
最初にこのページにきてしまったあなたは、先に①を読んでから戻ってきてくださいね。
:::

前回はロボットが利用する情報に関して確認するところまでご紹介しました。
では、それ以降に考えることを説明します。

## 4.フローをロボットのステップ単位で考える<br>（ロボットのフローを作成する）
ここまで来て、やっとロボットのステップを考えます。[「1．業務分解してフローを作る」](https://qiita.com/imoni_soul/items/3bb80bf3a0d95604b7d5/#1業務分解してフローを作る)である程度業務を細分化できていますが、ロボットはもっと細かく指示する必要があります。

DesignStudio（DS）で作成するステップすべてを考える必要はありませんが、おおまかに考えておくと実際作るときにすんなり作れます。慣れてくると、ここの作業を飛ばして即DSで作れるようになります。ロボットのステップをあまり覚えていない場合もDSを見ながら作るといいかもしれません。<br>
一気にフローを作るのが難しい場合、分解した作業単位でステップを考えていきましょう。例えば下図のような感じです。（文字が小さいので拡大して見てください）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617070/b501f568-8a4b-d348-adbe-2dc61d80db4f.png)

ステップ単位が想像できない場合、既にロボット開発を行っている人に、途中まで作成したフローを見てもらうといいですよ。

初心者でよくあるのが、ファイルを開くステップを入れずに値を抽出しようとする、アプリケーションを起動するためのアイコンをダブルクリックするステップを入れずにID・パスワードを入れる、アプリケーションを終了させるのを忘れる、という所です。<br>
当たり前すぎて人に作業を説明する際、そこまでは伝えないからかもしれません。でもロボットはそこまで教えてあげないと動けないんです。

そう考えると、人ってすごいと思いませんか？

## 5.作成したステップをどのロボットで行うか整理する
BizRobo!には２種類のロボットがあります。ベーシックエンジンロボット（![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617070/f803cfa7-847c-5b28-bc5f-f2505c7e590f.png)：BER）とロボット（![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617070/6104c3ca-e162-1da2-c36e-b1e072421887.png)：R）です。

BERは静的Webサイトの操作やメール送信、Excelなどのファイルから値を抽出したり入力したりするのに便利です。一方Rは動的Webサイトやインストールされたアプリケーションの操作などに使います。ロボット化する業務すべてを１種類のロボットで開発できる場合もありますが、両方が混在することもあります。混在させる必要があるかは、少なくとも以下の点を確認すると判断できます。

- <b>操作するWebサイトが動的サイトである</b>
試しに操作したいWebサイトをBERで操作してみてください。画面がきちんと表示されなかったり、ボタンがクリックできない、クリックしても画面が変わらない、といった場合はRを使う必要があります。<br><br>
- <b>操作するアプリケーションがインストールタイプである</b>
今回の事例では、勤怠管理システムがこれに該当します。
:::note info
BERでもRでもどちらでも作れる場合も結構あります。

その場合どうやって分けるかですが、<b>BERはロボットの骨組みを作るもの</b>、と考えてみてください。家で言えば柱です。Rは窓だったりシステムキッチンだったり家の部品となるものです。大枠の流れはBERに振り分けてみてください。


ただ、実際にロボット作成に入ったときに、この想定が崩れる場合があります。ようはBERで作れる作業だと思っていたができなかった、という事です。その時はRでの作成に変更すればいいだけです。

:::


フロー図でBER（青）とR（緑）で分けてみました。まずは一旦、この方針で行ってみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617070/6893183c-c46b-68d1-c9e9-2fde7455dc4d.png)

## 6.ロボットを作る
ここまで来たら、フローをもとにロボットを作ってみましょう。
- <b>変数を作る</b>
ロボットを作るときのお約束ですね。
必要な変数は[「3.ロボット化する作業の中で利用する情報を整理する」](https://qiita.com/imoni_soul/items/3bb80bf3a0d95604b7d5/#3ロボット化する作業の中で利用する情報を整理する)で整理した内容が使えます。それをもとにタイプファイルを作りましょう。
タイプファイルは用途に応じて分けておいた方が分かりやすいです。今回であればID・パスワードはログインで使うものなので、これでひとつのタイプファイル、Excelから抽出してシステムに入力するための氏名・出勤時刻・退勤時刻は、これでひとつのタイプファイルとしておきます。<br><br>
- <b>ロボットの骨組みから作る</b>
先に骨組みを組み立てた方が分かりやすくなります。柱が立ってないのに窓枠ははめられないのと一緒です。
ということは、BERから作りましょうという事です。ある程度ロボットが作り慣れたら、最初の作業から順番に作っていっても構いませんが、初心者のうちは骨組みをしっかりと作ってから細部に手を付けましょう。
Rの部分はとりあえずロボットファイルだけ作成してBERのフローの中に入れておいてください。骨組みが出来上がってからRのステップを作成していけば大丈夫です。<br><br>

- <b>ステップ名は分かりやすく変更</b>
「Load File」とか「左クリック」といったステップ名では何をやるためのステップなのかが分かりません。他の人が見て分かりやすいロボット、という意味もありますが、ステップがたくさんあるロボットになると、自分でも「このステップなんだっけ？？」となります。混乱のもとは出来る限り解消しておきましょう。<br><br>

- <b>動作確認は骨組みができた後とRロボットができた後の複数回実施</b>
全部出来上がってから動作確認する人もいるかと思いますが、それはベテランになってからです。初心者のうちは適宜動作確認して「ここまでは意図した通りに動いている」と確証を持ったうえで次に行きましょう。最初の動作確認は骨組みが出来上がった時です。確認する内容は<br>
　<b>①ループ処理できちんと値が取れているか/入力できているか
　②Rに渡すデータがきちんと変数に入っているか
　③条件分岐が意図した通りに動くか</b> <br>
といったところです。
骨組みがうまくいったらRを作成し、BERから連続して実行し意図した通りに動いているかを確認します。
全て作り終わったらデバッグで全体を実行してみましょう。要所要所だけ確認してOKでも全体を実行した時にエラーが出ることもありますので、デバッグは必ず行ってくっださいね。

# 最後に
最初の何体かはこの方法で作ってみてください。慣れてくればこれほど細かく考えなくとも作れるようになります。ただ、フロー図はメンテナンスの時や開発者と別の人がロボットを改修しなければならないときなどに必要になります。ロボット作成後でも構いませんので、記録として残しておくことをお勧めします。

これを参考に、ロボット設計の沼から早く抜け出してロボットをバンバン開発してくださいね。