RPAって結局何なのか？どうやって選べば良いのか？

# はじめに
あくまでも個人的に調べた範囲の理解です。(2018/4/頭 時点)
なお、個人的趣味レベルで整理した情報ですので、悪しからず。
間違い/ご意見あればおねしゃーす！

ちなみに、一番書きたいことはwikipedia先生が語っていたので、どっちかってーと補足的な記事になります。
前置きはいいから、「選び方、早よ！」って人は [こちら](https://qiita.com/nh321/items/93bfdc9c242e18dd835d#%E3%83%84%E3%83%BC%E3%83%AB%E3%82%92%E9%81%B8%E3%81%B6%E9%9A%9B%E3%81%AE%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88) へ

# RPA is 何？

自動化ツール。

> ロボティック・プロセス・オートメーション（Robotic Process Automation, RPA）とは、認知技術（ルールエンジン・機械学習・人工知能等）を活用した、主にホワイトカラー業務の効率化・自動化の取組みである。人間の補完として業務を遂行できることから、仮想知的労働者（Digital Labor）とも言われている。

from [Wikipedia先生](https://ja.wikipedia.org/wiki/%E3%83%AD%E3%83%9C%E3%83%86%E3%82%A3%E3%83%83%E3%82%AF%E3%83%BB%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%83%BB%E3%82%AA%E3%83%BC%E3%83%88%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3)

## どこに効くのか？

「システム屋以外の人が使う」時に効く。

> RPAが目指すのは伝統的なIT部門スタッフ向けのプログラミングベースの自動化ではなく、**ITナレッジの少ない業務部門スタッフ向け**の直観的な操作で構築可能な自動化である。

from [Wikipedia先生](https://ja.wikipedia.org/wiki/%E3%83%AD%E3%83%9C%E3%83%86%E3%82%A3%E3%83%83%E3%82%AF%E3%83%BB%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%83%BB%E3%82%AA%E3%83%BC%E3%83%88%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3)

## なぜ今RPAなのか？

昨今話題の「人工知能」と掛け合わせると「なんでもやってくれるんじゃね！？」と期待されているから。
→コストにしかなり得てなかった作業を、大幅削減できるのでは！？と期待されている。（まだ「期待されている」段階）

>機械学習・人工知能等のRPAを構成する要素技術の発達により、今後より一層ホワイトカラー業務の効率化・自動化が進むと予想される。
定型作業については人間の介在無しにRPAにより業務が完結できるようになり、さらに、人間の判断が必要とされる非定型作業の自動化も実現されると考えられる。

from [Wikipedia先生](https://ja.wikipedia.org/wiki/%E3%83%AD%E3%83%9C%E3%83%86%E3%82%A3%E3%83%83%E3%82%AF%E3%83%BB%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%83%BB%E3%82%AA%E3%83%BC%E3%83%88%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3)

### スクリプトによる自動化からの転換時期
単なる自動化自体は、2000年くらいから？（Excel VBAのリリースが1997年）
AIの発展とともに、RPAが注目されてきた。

- 2000～：スクリプトでの自動化
- 2010ごろ：RPA製品の乱立開始（winActor誕生が2010年）
    - 2017年ごろから徐々に来ている（AIへの期待から）
    - 昨今は、管理機能/統括機能のリリースが多く、ツールとしての差別化ポイントになってきている。

![image2018-2-15_9-51-52.png](https://qiita-image-store.s3.amazonaws.com/0/214587/351b676e-7ef0-9046-e726-f350ae67b121.png)

### 「RPAでの自動化」と「スクリプトでの自動化」の違い
基本的には、「AIによる自動化」が期待されて、「RPA」が盛り上がってきている。単なる自動化であれば、「スクリプトでの自動化（Jenkins等）」も十分に選択肢になりえる。

|トピック|RPA|スクリプト|補足|
|:---|:---|:---|:---|
|実装者に求められる技術知識レベル	|低くても良い（ただし、問題が起きたりした場合の対処はスクリプトと同等の知識が求められる。）※ユーザー自身がメンテできるため運用面のメリットは強い|ある程度求められる|RPAは「ツール操作」は身につくが、「技術知識」は身につかない。（「ノンプログラミング」であることがメリット。ただしシステム屋から見た時は、デメリットでもある。）スクリプトは難解な実装にぶち当たる場面もあるが、「技術知識」が身につくイメージ。|
|AIによる自動化	|期待されているが、実例を見かけない。ツールとしては、機械学習が可能とうたっているものもある。|画像/音声等の機械学習は得意。ただし、プロセスの機械学習については情報がない。|「機械学習」により、ルールベースでは対応できな部分にも対応が可能になってきた。（理論的に可能というレベルで、実現段階にはまだ無い？）|
|処理速度|ヒトと同レベル|高速||
|正確さ|基本的には、ヒトよりは正確。ただし、画像/位置情報認識の精度によってはミスが発生しうる。|正確|どちらもバグを内在する可能性は同じだと思う|

バグによる不正確さはRPAもスクリプトも内包している。
RPAの精度に関してはツールによって異なると思われる。

# RPAに対する誤解

- 「作業が高速化される」　→　あまりない。
    - 比較的正確に動作するので、手戻りが無いという点で、速さが出ることはある。
    - Excelマクロみたいに「高速」に色々やってくれる訳では無い。
- 「分かりやすい！」　→　いくら分かりやすいと言っても、触らなきゃ分からない
    - 当たり前ですが、「触らなくても分かる」ほどでは無いです。
    - GUIなので、比較的「分かりやすい」のは事実ですが、過度な期待は禁物。
- 「ノンプログラミング！」　→　プログラミングの知識はいらないが、素養はいる。
    - プログラミングをGUIで実現しているだけなので、プログラミングやったことない人にはやや取っつきにくい。（変数を用意できたりするヨ）
    - とはいえ、プログラミングそのものよりは、圧倒的に取っつきやすい。
- 「なんでもできる！」　→ プログラミンのほうが圧倒的に自由度が高い
    - つい、pythonとかを呼び出したくなります。
    - RPAの良さはノンプログラミングで実現でき、システム屋じゃない人にも比較的メンテしやすいことなので、グッと堪える必要がある。

# ツールを選ぶ際のポイント

先に言っておきますが、最後は「使いやすいと感じたかどうか」だと思います。

## 比較する際の基準
差が出やすい部分を集めました。ただ、価格とのバランスもあるし、使いやすさも人によって感じ方は違うと思うので、事前評価するよりもまずはいくつか試してみるのが良いかと思います。
（比較結果あるにはあるのですが、個人的に納得できるレベルで比較できていないので、載せていません。）

|比較項目|説明|
|:---|:---|
|Citrix環境（仮想環境）操作|リモートデスクトップを操作できるか？という話。リモートデスクトップの中身を要素解析するのは技術的に難しいため、画像判定になりがち。画像判定になると、誤りが多くなる。|
|Excel操作|Excel操作の自動化がしたい場面も多くあると思われるため、比較対象とする。関数まで利用可能か？など、どこまで操作できるのかがポイントになる。|
|サポート/コミュニティ|英語のみか、日本語対応されているか？など|
|デバッグ機能|処理作成時に実行ログはでるのか？ログ出力はできるのか？ブレークポイントはおけるのか？など。コマンド実行で「echo xxx > log.txt」すればできなくはないが、これでは不便。|
|トリガー監視|「ファイルが発生したら」「この画面が表示されたら」などのトリガーを基準に動くことができるか？これができないと「何秒待つ」などの不確かな基準になってしまい、再現性が低くなってしまう。|
|ブラウザ対応範囲|対応しているブラウザが結構少ない。|
|リモート実行|非ログイン状態から実行可能かどうか|
|使いやすさ（UI面）|多機能の場合、結果的にUIが複雑になりがち。また画面上が英語のみのツールもあり、とっつきにくさが多少でる可能性がある。|
|価格帯|基準がまちまちなので、一律での評価は正直難しい。実際に適用したい業務範囲を特定した上で、試算するのが望ましい。処理のコンポ化処理をコンポーネント化して使いまわすことを前提にした作りになっているかについては、評価時のポイントになりえる。（基本、外部出力すればできなくはない。ただし、非常に面倒。）|
|同時起動|複数BOTを同時起動できるかどうか。それぞれに制約はあると思うがそこについては未確認。|
|対象特定方法(要素/画像)|画像判定はミスが多い。要素は対象を厳密に特定可能。要素の場合は、ワイルドカードなどで「ゆれ」を吸収できるかがポイント。|
|操作記録|だいたいのツールが可能だが、細かい記録まで可能かどうかがポイント。UI操作だけの場合、『「E」を打つ』『「N」を打つ』『「D」を打つ』と記録されてしまうなど、その後の修正が前提になってしまう。|
|管理機能|何をどこまで管理できるのかについては要確認。ここはツール毎に定義するものが異なるように感じる。|
|記述方法|「処理フロー」もしくは「処理リスト」。処理分岐が多い場合は、処理フロータイプの方が見やすいため、そちらを優位とする。|

## UIイメージ
大きく2種類に分かれます。
フロー系とリスト系です。

### フロー系
UiPath： 自端末のキャプチャ
![image2017-12-20_12-48-47.png](https://qiita-image-store.s3.amazonaws.com/0/214587/3309417f-25fa-5d98-4839-931ef794976a.png)

winActor： https://www.sharp-sbs.co.jp/winactor/ にあります。


BizRobo： https://seleck.cc/1022 にあります。

BluePrism： https://www.businessprocessincubator.com/content/on-the-radar-blue-prism/ にあります。

### リスト系
RPA Express： 自端末のキャプチャ
![68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3231343538372f65613932633434632d353563302d323466332d646463312d3164336165633465333632302e706e67.png](https://qiita-image-store.s3.amazonaws.com/0/214587/b5c12a04-5a01-9e9c-4593-2a7ee10c9276.png)

Automation Anyware： http://www.hitachi-solutions.co.jp/wsi/sp/rpa/function.html にあります。

# 最後に
RPAってのは手段なので、そこを見誤らないようにしたいですね。
そもそも無駄な業務なら、業務を無くせばいい。
Excel中心の業務ならいっそマクロ化した方が良い場面もたくさんあると思う。
馬鹿正直にRPA化する前に、やることはいっぱいあるので、手段先行しないように気をつけましょう。

こちらもどうぞ
[「RPAって何ができるの？」に対する超具体的な回答（UiPath）](https://qiita.com/nh321/items/329fd84682b9f49b2761)
[RPAExpressってどうなの？に対する回答（UiPathとの比較）](https://qiita.com/nh321/items/0055f6199ec8f33215ae)
[RPAを検討する人に知ってもらいたい「JenkinsでのWindows自動化」](https://qiita.com/nh321/items/629fbee4ae2a38a1480d)

---