《WinActorユーザー必読!!》エラーを減らすシナリオ開発方法とエラー発生時の対処法を公開します!
シナリオ開発中はもちろん、完成したと思って運用を開始してからも【エラー】はつきものです。エラーが出たときの対応(何をどうしたらよいか)というのはWinActor初心者さんの切実な悩みだと思いますし、弊社が実施しているオンライン相談会でもよく聞かれます。
慣れてきたら「この画面を見るにこれが原因かな?」といった感じで冷静に対処できるのですが、私も初めのころはエラーが起こるたびにパニックでした💦。
今回はエラーが起きないようにするにはどういった点に注意してシナリオ作成をすればよいか、またエラーが起きたときどのように対応し解消へ導くかというポイントをご紹介したいと思います!
こんにちは!ワークスアイディ キャンスタ編集部 RPAエンジニアのすずです。
1.エラーを減らすシナリオ開発
シナリオ開発中はとにかくエラーをなるべく発生させないように対策を取りながら作成します。下記では私が気を付けていて、お客様先でもお伝えするようにしているポイントをご紹介します。
①WinActorの動作環境を整えておく
シナリオ開発に入る前にまず確認しておきたいのは、PCの解像度やディスプレイ(PC・ブラウザ等)の拡大縮小率についてです。
基本は100%がおすすめですが、PCのスペックによっては100%だと文字が小さくて読みづらかったり、ノードの設定がうまくできないことがあるのでそういった場合は推奨値にしておきます。
大切なのは、シナリオ作成時とシナリオ実行時で変えないということです。
特に画像マッチングを使っているようなシナリオでは解像度やサイズが変わっただけで正常に動かなくなる可能性が高いので、注意が必要です。
②異常の発見や修正のしやすさ
シナリオ開発する上で「エラーが起きたときにすぐ発見できすぐに修正できるシナリオにする」ということも大切です。
では具体的にみていきましょう。
◆フローチャートをぱっと見て分かりやすくする
見た目が複雑だとエラー箇所や修正箇所を探すのも、原因を突き止めるのも大変です。ですので、工程のまとまりごとにグループ化したり、サブルーチンを使ったり、ノードやグループに名前を付けるなど、ぱっと見てどこでどんな操作をしているかわかるように作っておきましょう!
◆直値ではなく変数や外部ファイルを利用する
例えばファイルのパスなど内容が変わるもの(いまは固定であっても将来的に変わる可能性のあるもの)は特にですが、他にはウェブサイトのURLやログインID・PWなどをノードに直値で設定するのではなく変数の初期値に設定しておくことで、修正が必要になったときに作業がとても容易になります。
シナリオファイルが増えてきて変数一覧での管理が煩雑になってくるようならExcelなどの外部ファイルで管理しておくようにします。ファイルパスやシステムへのログインPWが変更になったらExcelを修正するようにしておき、シナリオではExcelから値を参照するようにすれば変数上での管理が不要になります。
◆統一ルールを決めて運用
これは業務全般に言えることですが、ファイルの保存場所や命名規則について予めルールを決めておき、皆がそのルールに従って作業をすることで作業効率が上がります。
例えば、シナリオファイルのファイル名を【通し番号_担当部署名_業務名】とするルールを決めたとします。そのルールに沿って【01_経理チーム_入出金照会】のようにシナリオファイル名を付けて決まった場所に保存しておくことで、後からでも作成者でない他の人でも探しやすくなります。
さらに、ファイル名に「完成版」「作成中」といったファイルの版が分かる内容と日付(いつの完成版か)を付けておくと最新版がどれかわからなくなることもありません。
◆運用者が理解できるつくりにする
WinActorの(もしくは業務の)運用担当者が理解できるようにシナリオをつくるということもとても大切です。複数人で運用する場合はもちろんですが、今は一人で担当されていてもいつか別の方に引き継いだり担当者を増やしていくことは十分考えられます。
属人化しないようにするというのもRPA化の目的の一つでもありますので、作成者以外の人が見ても理解でき修正できるようにつくります。
例えば、繰り返しや分岐の条件式設定を複雑に組んだり、用途が違うのに同じ変数を何回も使いまわして上書きするといった使い方をすると他の人が見た時その設定のどの部分を直せばよいか判断に時間がかかってしまうかもしれません。
③動作検証をこまめに行いながら作成する
シナリオは作りながらこまめに検証をしていくことで、「かなり先まで作ったあとで冒頭からうまくいかないことに気づいて大部分を作成し直し」といった事態を防ぐことができます。
部分実行ではうまくいくのに全体を通して実行すると止まってしまうケースもよくありますので動作検証は十分におこないながら進めましょう。
パターンを想定して動作検証をすることで、本格運用前にエラーの起きやすい箇所や要因を確認でき対策を講じることができます。例えば、サンプルとしての受注データのExcelを使っているのであれば別のデータを使っても成功するか、営業日など複雑な日付の生成をしているときは月跨ぎや年跨ぎでも想定通りにできるか、といったことも試してみましょう。
2.エラーが起きたときの処理を組み込む
いくらエラーを潰しながら作っていても、実行中に予期せぬエラーが起きることもあります。突然PCの調子が悪くなるかもしれないし、いつも使っているWebページがメンテナンスをしていて、開けないことがあるかもしれませんよね。
そういうときエラーの発生箇所や要因をすぐに突き止め素早く修正できるようにするために、仕組みを予めシナリオ内に組み込んでおくと少ない影響・時間で作業を進めることができますのでぜひやっておいてください。
WinActorの場合、エラーが発生するとエラーを知らせるウィンドウが表示され、そこで動作が止まってしまいます。再び動かすためには手動で「OK」を押してエラー要因を取り除いてから再実行するしかありません。
人がずっと見守りながらシナリオを実行させているときはそれでも問題ありませんが、実際運用が始まるとほとんどの場合は担当者が目を離している環境で実行されますので、担当者はエラーが起きたことすら知ることができません。
そこで①エラー発生を知らせる、②エラー要因を突き止めるための情報を取得する、ことでエラー修正をスムーズに進められるように対策をしておきます。
①エラー発生を知らせる
エラーが起きたことを担当者が知らないことには、修正作業をおこなうことができませんよね。ということで通知の方法をご紹介します。
◆音を鳴らす
・使用ノード:「音」(▸ノード -> ユーザ)
デフォルトのブザーもしくは設定した音をPCから鳴らします。設定できるのはサウンド機能のあるPCのみで、音を設定できるのはWAVEファイルのみです。ただしエラーが起きたらすぐに知りたいときには使えそうですが、音が鳴った時担当者が近くにいなければ意味がなくなってしまいますし、そもそもWinActorの実行環境で音を鳴らすことができる必要があり限られてきますので、実務での有効性はあまり高くないように思います。
◆メールを送る
・使用ノード例:「Outlookメール送信」(▸ライブラリ -> 20_メール関連 -> 01_Outlook操作)
担当者宛にメールを送る方法もあります。音を鳴らすよりは即時性は下がるかもしれませんが確実にエラーの発生を知ることができますし、WinActorが自席と離れている場所にあったとしてもこれなら問題ありません。
宛先を複数人に設定したり、件名や本文も自由度高く設定できるので実務でも使われているお客様は多くいらっしゃいます。またエラーのときだけでなく正常終了したときもメールを送信してシナリオを終了させる、というシナリオもよく見かけます。
②エラー要因を突き止めるための情報を取得する
エラーの発生を発見したら、エラー箇所と要因を突き止めて修正しなければなりません。即時で対応できない場合もあるので、要因を突き止めるための情報を取得し保存しておきます。
◆画面キャプチャを撮り保存する
・使用ノード例:「現在日時のファイル名で画面キャプチャを保存するサンプルシナリオ」(▸公式HP -> ナレッジ -> サンプルシナリオ)
エラーが起きたときのPC画面がどのような状態かをキャプチャとして残しておく方法です。サンプルシナリオに画面キャプチャを撮り保存する内容があるのでこういったものを使えば作成の手間も省けます。
◆実行ログを取得し保存する
・使用ノード例:「ログ出力(ファイル指定)」(▸ライブラリ -> 01_WinActor制御 -> 08_実行ログ)
実行ログはログ出力画面でも確認できますが、WinActorを一度終了するとログも消えてしまうので保存しておけば安心です。実行ログを残しておくことで、エラーの起きた箇所もその前におこなった内容も確認することができます。例えば、エラー箇所の前に分岐があったらTrueとFalseのどちらに進んだかということも確認することでエラー要因の特定に役立ちます。
③実際にシナリオへ組み込んでみよう
では、実際にシナリオにどのように組み込んでいくかみていきましょう。
例として、「メール送信」と「ログ出力」を組み込むパターンを想定します。エラーが出たら別のメインフローと別の処理に進ませるのに使うのが「例外処理」(▸ノード -> フロー)ノードです。例外処理ノードは【正常系】に配置しているノードでエラーが発生すると【異常系】へ処理が移ります。
「ログ出力(ファイル指定)」は、配置した場所以降の実行ログを出力するライブラリなので開始直後に配置しています。
異常系の内容は業務内容や運用方法によってアレンジできますが、今回は「エラー発生をメールで通知して、実行ログを出力」しています。
件名には「【エラー】会計システム入力シナリオでエラーが発生」と設定、本文はエラーを起こしたノード名・ノードID・エラーメッセージを書き込むことにします。
実行時、出力されるログとメールの文面はこのようになりました。
他にも画面キャプチャを撮りファイルをメールに添付して送るなど運用方法によってアレンジしていただければと思います。
3.エラーが起きたら
開発中、もしくは実行中にエラーが発生した際に、どういったポイントに注目して解消していくかについてです。
それぞれやり方はあると思いますが、「どこから手を付けてよいかわからない」という方向けにポイントをご紹介したいと思います。なお、エラーが起きたときすぐにシナリオを停止させずに、一旦一時停止させたまま内容を確認するようにしてください。
①事象を確認する
まずはシナリオが止まっていることで起きている事象を確認します。操作対象のアプリケーションでは何が起こっているか(もしくは何が起こっていないか)ということです。どこまでは正常にできていて何ができていないのかを確認します。
例えば、システムを起動してログインまではできているが、そのあとの文字入力ができていないという状態を確認します。その状態を確認しておけば、エラー箇所や要因を突き止めるのに役に立ちます。
また、何度実行しても同じ箇所でエラーになってしまうのか、時々しか起こらないエラーなのか、といったことも確認しておきたいところです。
②原因を調査する
次に、シナリオ内でエラーを起こした箇所を特定し原因を探っていきます。エラーメッセージや実行ログを確認したり、変数の現在値を確認します。
エラー原因は、必ずしもエラーを起こしているノードにあるとは限らないのでそのノードの前を遡って見ていくことも必要です。例えば、エラーは文字列設定ノードで起こしているとしても、そのノードの設定が誤っているのではなくそのノードより前の部分にある、入力画面へ遷移するエミュレーションがミスしているという場合もあるからです。分岐が絡んでいる場合は、正しい分岐処理ができているか、変数値も正しく取得できているかなどもチェックポイントです。
またエラーメッセージを確認して「ウィンドウ識別が~」となっていたら「ウィンドウ識別ルール」を見直せばよいのだと分かります。
③対策を組み込む
原因が分かったら、あるいは絞り込むことができたら解消するための対策を考えて施します。この時点ではじめてシナリオを停止させて編集できるようにします。
ですが、例えば画面クリックに失敗しているという場合でも、どのようなノードを使っているかによって対策は変わってきます。直前の待機時間が足りないのか、単純にノードの設定ミスなのか、ウィンドウがアクティブになっていないせいなのか、など様々です。
そのあたりは部分実行ならうまくいくか、待機時間を少し長めに設定したらうまくいくか、など試しながら特定していただくとよいのではないかと思います。
4.さいごに
WinActorのシナリオ開発とエラー対策は切っても切れない関係です。1回完成したとしても、日々実行・運用していく中でエラーが出るようになって修正する、という作業は必ず起こってきます。
エラー修正を毎日するのは現実的ではありませんし、効率化から遠ざかってしまいますので、様々な状況を想定してエラーが起きづらいシナリオ、更にエラーが起きたら原因を突き止めやすく・修正しやすいシナリオを作る、そしてエラーが起きたら都度最適な対策を講じていく、という風に進めて頂ければと思います。
WinActorのバージョンアップで追加された新機能がエラー対策に使えるものもありますので、また改めてお伝えしていこうと思います!
最後までお読みいただきありがとうございました!
ワークスアイディ キャンスタ編集部 RPAエンジニアのすずでした。
また次回お楽しみに☆