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

# はじめに
私は現在、初めてRPAを作ろうとしている方と、作り方や考え方を一緒に学ぶという事をしています。簡単に言えば研修の講師です。ロボットを作り慣れてしまった身としては簡単だと思っていることでも、受講者は躓きますし（当然ですよね）理解できないこともあります。（当然ですよね）

自分も最初は躓いたりしたはずなのに、どんなことが難しかったのか、通り過ぎると分からなくなってしまうんです。人の記憶力って、いろんな意味ですごいですね。（嫌な事はすぐ忘れるの大事）

そんなわけで、受講してくださる皆さんから学ぶことがたくさんあるのですが、その中でも<b>ロボットを設計する</b>というフェーズが結構しんどいんだな、と気づかせて頂きました。

そこで、ロボット開発初心者の方に設計のヒントになりそうなことをご紹介します。ただ設計方法はひとつではありません。自分に合った方法が他にあれば、そっちを採用してください。ロボット開発の答えはひとつではないので。というか、意図した通りに動くロボットができれば、それが正解です。

::: note
上記で<b>意図した通りに動くロボットができれば正解</b>と記載しましたが、これはあくまで開発初心者の話です。開発ベテランになってくれば正解の観点はそれだけではありません。運用面などいろんな側面を含めた正解を目指してください。
:::

# この業務をロボット化したい！という時に考える事
具体例があると分かりやすいと思いますので、今回は以下の業務をロボット化することを考えてみます。

【業務内容】
各支店から本社に前日の勤務日報がExcelで送られてくる。それを労務管理システムに入力する。入力した結果今月の残業時間が40時間を超えた人がいたら、その人の上長にメールで連絡する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617070/53b4f278-36ec-def5-d7ca-eb31171e5b6c.png)

<b>ハイ！このロボット作って</b>と言われて、すぐ手が動く人は初心者ではありません（笑）
初心者は固まってしまうんですね。そりゃそうだ、何していいか分からないですから。

では、何から手を付ければいいかご説明します。ここからが本番！！

設計から開発までを次の項目に沿って説明します。4以降は<b>[初心者のためのロボット設計②](https://qiita.com/imoni_soul/items/31c35c81f27ed7877b99)</b>で説明しますので、そっちも見てね。

<strong>

1. [業務分解してフローを作る](#1業務分解してフローを作る)
1. [ロボット化する範囲を決める](#2ロボット化する範囲を決める)
1. [ロボット化する作業の中で利用する情報を整理する](#3ロボット化する作業の中で利用する情報情報を整理する)
1. [フローをロボットのステップ単位で考える（ロボットのフローを作成する）](https://qiita.com/imoni_soul/items/31c35c81f27ed7877b99/#4フローをロボットのステップ単位で考える（ロボットのフローを作成する）)
1. [成したステップをどのロボットで行うか整理する](https://qiita.com/imoni_soul/items/31c35c81f27ed7877b99/#5作成したステップをどのロボットで行うか整理する)
1. [ロボットを作る](https://qiita.com/imoni_soul/items/31c35c81f27ed7877b99/#6ロボットを作る)

</strong>

## 1.業務分解してフローを作る
まずはロボット化しようとしている業務を作業単位で分解してみましょう。分解する時は<b>新人さんにこの業務を説明するつもり</b>でやってみてください。特に日頃自分でやっている業務だと条件反射でこなしてしまうので、分解するのが意外と難しいみたいです。

業務分解出来たら、この流れで何も説明なく業務がこなせるか他の人に見てもらうのもいいかもしれません。

<b>ロボットを作るには、新人に説明する以上に細かく指示する必要があります。</b>この業務分解の作業はロボットフローを作るための大事な一歩です。ベテランになってくると、この工程を意識せずに頭の中で完結できるようになります。

以下は業務分解の例です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617070/56995583-8500-dbfe-5ce9-29eb3425129a.png)

## 2.ロボット化する範囲を決める
業務分解してフローが出来たら、ロボット化する範囲を考えます。なんでもロボット化できるわけではありませんし、現段階の知識では難しい場合もあります。まずは以下の観点で、分解した各作業がロボットに置き換えらるか考えてみましょう。

- <b>PCで行える作業か</b>
    そもそもPCで行えない作業はロボット化できないので、他の方法を考えましょう<br><br>

- <b>判断基準が曖昧になっていないか/難しすぎないか</b>
    曖昧とは、いわゆる「鉛筆を舐める」ような判断です。それはロボットには無理です。また判断が難しすぎると感じた場合は、今のスキルではロボット化が難しい作業です。開発に慣れてきたら作れるようになりますので、それまで寝かしておきましょう<br><br>
   
- <b>ロボットの流れが全く浮かばない</b>
    あのステップで行けそうだな、というのがぼんやりでも浮かぶものはだいたいロボット化できます。逆に全く方法が浮かばない場合は、そもそもロボット化できない作業だったり、今のスキルでは開発できないものです。こちらもしばらく寝かしておきましょう<br><br>

- <b>ロボット以外でやった方が効率的</b>
    例えば、ロボットで転記するよりバッチファイルで一括でインポートした方が早いという場合があります。そのような作業はロボットではなく、効率的にできる方法で行った方がいいです。

少なくとも上記4つの観点から、ロボット化できる作業なのか判断してみましょう。ロボット化の範囲が決まったら、先に作成した業務分解のフローの中でロボット化する作業としない作業を区別できるように整理しておきましょう。今回の例では、フロー全てロボット化すると判断したとして、次の手順に進みます。

## 3.ロボット化する作業の中で利用する情報を整理する
ロボットはデータ入力の作業が必ずと言っていいほど入ります。ロボットに入力してほしいデータがそろっているのか、ロボットが使えるデータなのかなど、以下の観点から確認してみてください。

- <b>ロボットが使う情報は何か</b>
どういう観点で考えればいいの？と思った場合、ロボットが生成できない情報で、入力作業に必要なものは何か、と考えてみてください。この事例で言うと各支店の日報のExcelファイルはロボットが作れないので準備してあげる必要があります。またシステムにログインする時のID・パスワードも必要ですね。少なくとも下図の青字で示した２種類の情報は必須です。<br>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3617070/5f09ec16-b4e3-344d-a0f8-bb3924a4a529.png)
<br>

- <b>ロボットが使う情報はそろっているか</b>
そろっている、というのは今すぐロボットが使える状態である、と考えてください。例えば、ログインID・パスワードについて、ロボットが使っていいものがまだないよって場合はアカウントを作成する必要がありますね。<br><br>
- <b>ロボットが使う情報はロボットが利用できる状態か</b>
ロボットが利用できる状態というのは、データとして渡せる状態になっているか、という事です。上記の「ロボットが使う情報はそろっているか」と被るところもありますが、たとえば、日報が紙の状態しかない場合、データ化する必要がありますね。<br><br>

上記３点の観点で考えた場合、現状ではロボットで利用できない情報が見えてきます。もしそのような情報があれば、利用できるよう対策を考えましょう。

### 「初心者のためのロボット設計①」はここまで

結構やることあるなぁと思ったかもしれません。でも、ここまで細かく準備するのは初心者の間だけです。ある程度ロボットを作り慣れてくると、こんなに整理しなくてもできるようになりますよ。

そして「え～！！まだロボット作れないの？？」とお嘆きのあなた、まぁお待ちなさい。
<strong>[「初心者のためのロボット設計②」](https://qiita.com/imoni_soul/items/31c35c81f27ed7877b99)にお進みあれ！</strong>