WinActorの導入満足度をあげる方法〜ロボットの設計・開発・運用のコツ

RPAツールの1つ、WinActorの導入満足度をあげる方法をまとめました。
**WinActorを導入して成功するかどうかは、既存の業務プロセスの簡略化やロボット最適な業務の再設計にかかっています。** [^1]
ただWinActorを導入すれば良いというわけではありません。

[^1]: 成功とは、WinActorを導入して大幅な工数削減ができ、かつ継続的に利用され続けることを指します。

#設計
## WinActorは既存の自動化ツールや基幹システムの連携に利用する
自動化対象のすべてのタスクをWinActorで代替させるべきではありません。
WinActorは、人がデスクトップで行うほぼすべてのタスクに対してシナリオを作成できますが、シナリオの処理速度はお世辞にも速いとは言えません。
そもそも**WinActorは本質的には人の作業をそのまま代行するだけ**なので、人手の作業に比べて処理速度が速くなることは期待されていません。
シナリオの複雑度によっては、人とロボットの処理速度が同程度になる場合もあります。
一方、業務効率化のために既に導入されているExcel VBAやACCESSなどのプログラミング言語ベースで実装されたツール(人の作業の模倣ではない)の場合、人手の作業に比べて格段に処理速度が速くなります。
そのうえ、WinActorと比較して環境要因による誤作動のリスクは格段に低いです。
したがって、**業務の自動化にあたっては基本的には既存の自動化ツールがあればそのまま活用するべき**です。
もし既存の自動化ツールがない状況でWinActorを導入する場合でも、なるべくExcel VBAなどの処理速度が比較的速い業務効率化ツールを準備する方が良いです。[^2]
[^2]: どうしてもExcel VBAなどの業務効率化ツールの実装で敷居が高いと思われる場合は、WinActorを使いましょう。
WinActorは既存の自動化ツールや基幹システム間の連携など、システム開発から取り残されている箇所に局所的に導入し、WinActorに自動化対象のタスクをすべて任せないのが賢明です。
![winactor説明.001.jpeg](https://qiita-image-store.s3.amazonaws.com/0/337794/66c92fed-bdaf-81b7-7ae1-1e4cad58ee04.jpeg)


## 人とロボットのタスクを分離する
社内外の業務を問わず、WinActorの導入によって対象の業務プロセスを完全に自動化することはほぼ不可能です。
WinActorで作成したシナリオは環境要因によって想定外のミスを起こすことがあるため、必ずプロセスのどこかに人のチェックが必要になります。
そこで、WinActorのタスクと人のタスクをどう配置するかが重要となります。
**WinActor導入の本質は人のルーチン作業工数を削減し、より創造的な業務に充てられるようにすること**です。
WinActorを導入しても、人の目によるチェックが頻発して、結果として人の作業工数が変わらないのであれば、WinActorを導入した意味がありません。
**WinActorの導入によって人の工数を大幅に削減するためには、WinActorのタスクと人のタスクを完全に分離する**必要があります。
WinActorは早く動作することはできませんが、単純作業を長時間にわたって行うことができます(ロボットレイバーとも呼ばれる所以です)。
ロボットと人のタスクを並列化、もしくは直列化(ある程度まとまったタスク単位で)すると、人の工数削減に繋がります。
![winactor説明.002.jpeg](https://qiita-image-store.s3.amazonaws.com/0/337794/f9f46064-8714-f7ed-23b5-27cad46d3808.jpeg)

#開発
WinActorのシナリオは、次の2つの方法で作成します。
## 人の操作をロボットに完全に模倣させる
人が普段デスクトップで行なっている作業をそのままロボットに代行させる方法です。
基幹システムや既存の自動化ツールとWinActorを連携させたり、絶対参照によるクリックや画像マッチングを使った画面操作がこれに該当します。
人の作業をシナリオベース(フローチャート)に変換させれば良いだけなので、実装の難易度は極めて低いです。
![winactor説明.003.jpeg](https://qiita-image-store.s3.amazonaws.com/0/337794/62d67a93-a398-d1fb-32e0-15614f9b65ee.jpeg)
**しかし、以下のような状況においては誤作動を引き起こすリスクがあるので注意が必要です。**

- 想定外のポップアップ  
→シナリオで想定していないポップアップ(例えばメモリ不足とか)が出た場合に、クリックの押下に失敗します。
- UIの変更  
→処理対象のwebサービスのUIに変更があった場合に、クリックの押下や画像マッチングに失敗します。
- 解像度の変更  
→外部ディスプレイと接続して解像度が変更されると、クリック位置がズレて失敗します。
- 処理速度が異常に速いor遅い  
→想定よりも処理速度が速かったり、遅かったりした場合、ローディングを待たずに実行されたり、タイムアウトしたりするため失敗します。


## 人の操作をロボット最適な工程に変換する
人が普段デスクトップで行なっている作業を、ロボットがやりやすい(ミスなく再現性が高い)操作に変換する方法です。
普段はマウスを使って行なっているアプリケーションのプロダウンの選択やメニューバーから各種操作を選択するタスク、ExcelやOutlookなどのOffice製品の操作などがこれに該当します。
マウスのクリックや画像マッチングといった、人が画面上で行う操作を忠実に再現する方法は、誤作動が発生するリスクがあります。
しかし、上記の操作を種々のショートカットキーや、tabキー、矢印キー、enterキーなどを使った操作に変換すれば、想定外の誤作動が発生するリスクはほとんどなり、構築したシナリオ通りにロボットは動作します。
シナリオ開発にあたっては、人の操作の模倣は極力避けて、このようなロボット最適な操作に変換するべきです。  

#運用
## ロボット最適なスケジューリング
ロボットが最大限効率よく稼働できるスケジュールを組みます。
そのためには、各シナリオにおける処理時間、ロボットのタスク実行前に必要な先行タスク・後続タスクの洗い出しが必要です。
ロボットには労基などありませんので、労働時間外でも作業させるようなスケジューリングが望ましいと思います。
![winactor説明.004.jpeg](https://qiita-image-store.s3.amazonaws.com/0/337794/644996ae-9a25-283c-d59b-a3a3c65c1a3d.jpeg)


## 責任の明確化
どんなにシナリオを作り込んでも、エラー発生確率をゼロにはできません。
特に社外向けの業務プロセスの自動化でエラーが発生した場合は、重大なインシデントに繋がってしまう可能性があります。
WinActorを導入すれば夢のような工数削減を実現できる一方で、周囲がWinActor(RPAそのもの)に対して良く理解できていない場合、エラー原因の全てをWinActorの責任にされかねません。
いったん稼働を続けていたWinActorが停止してしまうと、自動化されていたルーチン作業を再び人が行うことになり、甚大な機会損失が発生します。
これを回避するためには、人のタスク、ロボットのタスクを明確に分離し、エラーが発生したステップを特定できるようにしておくべきです。[^3]
[^3]: 筆者の経験上、WinActor関連でのエラーと思われたものの大半は、ヒューマンエラーによるものでした。
仮にエラーが発生してもその原因を明確に切り分けできていれば、自動化プロセスや運用方針の改善といった建設的な議論に向かうはずです。