完成した直後は安定しない…
RPAでいろんな作業の自動化に取り組んでいるのですが、ロボットを完成させた直後って本当に安定して動かないものなんですね。ここまで安定して運用するのにパワーがかかるとは全然思いもせず。なんだか自動化を前提に巻き取った作業がただただ自分が担当することになって作業負荷が上がっているだけのような。もう少し、事前に起こりうるエラーを把握できていればそれを前提にロボットを作成するのですが、今のところ起きたエラーを順番につぶしていくやり方。経験を積んでコツをつかんでいくしかないのでしょうか。
ロボット作りのコツ
ここ1か月くらいのロボット作成において考えたコツを整理しました。整理って色々考えながら行うので、いい方法が見つかるかもしれないという期待も込めて。
エラーは発生するもの
エラーが発生しないように作成していましたが、無理です。エラーを出さないようにすることはあきらめました。ロボットは完成直後は一定のエラーは発生するものだ、エラーが起きた時のリカバリが面倒にならないようにする、という思考に切り替えました。
ログを出す
ログを出していないと、エラーが発生したことはわかるのですがどの手順で発生したのかを把握するのにものすごい時間がかかることが多いです。ロボット内の手順をいくつかのステップに分けて、エラーが発生したのはこのステップを通過してからの手順だな、とわかるようにしました
エラーがおきたときのロボットの状態を把握する
エラーが発生した手順がわかっても、なぜその手順でエラーとなったのかがわからないことが多いです。そこでエラーが起きた時にロボットが動いていたPCの画面の状態はどうなっていたのかを画面キャプチャを取って確認できるようにしました。画面キャプチャを取るようにしたことで、何が原因でエラーになったのかを把握できるようになりました。
ロボットの手順数は極力少なくする
たとえばメールの添付ファイルを保存、ファイルの内容をシステムへ登録する、という作業を自動化した場合、以下の2つのロボットに分けます。
- メールの添付ファイルを保存するロボット
- ファイルの内容をシステムへ登録するロボット
1つのロボットの場合、ファイルの内容をシステムへ登録する作業がエラーになったときのリカバリは添付ファイルを保存する作業からやらないといけないです。しかし、2つに分けてしまっているとファイルの内容をシステムへ登録する作業だけを再実行するだけでリカバリは完了です。
まとめ
エラーが出ることを前提にロボットを作るのは、いろいろやらないといけないことや考えないといけないことがあり多少面倒ですが、あとからエラーの対応にかかる時間を考えたらやっておいたほうがいいなと考えます。エラーを前提にやることはほかにもありそうなので、新しくやり方を発見したらアップします。
あるある?
モニタで人間がロボットが実行しているのを見ていない場合エラーになるんだけど、エラーになったからモニタで人間がロボットが実行しているのを見ている場合エラーにならないことがよくあります。