コラム コラム:RPAエンジニアがとるトラブルシューティングの手法

RPAはパソコン上の様々なアプリケーションをまたいで業務を自動化するアプリケーションです。稼働環境の特徴を正しくとらえ、自動処理の定義を一度作ってしまえば、安定稼働と大幅な業務効率化が可能というメリットがあります。しかしながら、アプリケーション間を"橋渡ししているだけ"である以上、アプリケーションや稼働環境側の状態変化に影響を受けて、突然処理が機能しなくなる、ということもよく起こります。
この記事では、タスクが機能しなくなった際にAutoMateのエンジニアが取るタスクの確認・復旧手段を4ステップにわけて紹介します。

ある日突然、AutoMateのタスクが「正しく動かなくなりました」。

1. 異常を確認した際の状況をおさえる
さながら刑事ドラマなんかでおなじみの"現場検証"です。まずは正しく動いていないことが確認されたときのAutoMate端末の状態を正しく把握します。どの情報がトラブル解消に役立つかは処理の内容にもよりますが、例えば画面やファイルを使用した動きが失敗した時は
・AutoMateから出ているエラーダイアログの有無。ある場合はメッセージの内容
・デスクトップ上に残っているウィンドウや操作アプリケーションの状態
・処理の中で使用が定義されている各ファイル/システムの状態
おおよそこれらの情報を正確に"状況証拠"として把握できれば、タスクが行うべき本来の動きとの差や"なにがおかしいのか"をざっくり把握することが出来ます。

2. 管理コンソール/タスクアドミニストレーターからエラー時のタスク状況をおさえる
実行履歴を確認し、タスクに何が起こったのか確認します。
管理コンソールの"レポート"/タスクアドミニストレーターの"ログ"タブを選択し、実行イベント/タスクイベントの"結果"列を確認します。この列に"失敗"の文字が含まれているレコードから発生時刻やマシン名、正確なタスク名、イベントメッセージ、失敗したステップの番号などが確認できます。この確認で異常発生時の状態が何となくわかれば、タスクを確認・修正する際にまず見るべき場所が判明します。
ここで確認を行ったときに、ステップが失敗した記録が見つからない場合があります。それはつまり、"タスクは正しく動いている(ただし、環境の都合で希望した動きにならなかった)"ということになります。こうなると、なおのこと次のステップが重要になります。

3. タスクビルダーからタスクをテスト実行し、挙動を確認する
タスクが停止していた時の状況を把握し、AutoMateのログからタスクエラー/異常挙動の状態であることが判別できれば、次は実際にタスクを動かしてタスクの状態をリアルタイムで確認するフェーズに入ります。端末の状態や操作するファイルなどを"タスク実行が行われるべき正しい状態"に整え、タスクファイルをタスクビルダーで開きます。
もしタスクがエラーになるステップが特定できている場合は、そのステップに"ブレイクポイント"を仕掛けておくことをおすすめします。ブレイクポイントはタスクビルダー実行の一時停止を可能にする機能で、実行がブレイクポイントのステップに差し掛かると、ユーザーが"続ける"ボタンを押さない限り後続の処理を実行しません。このことから、エラーが起こるステップに差し掛かる段階でウィンドウや変数などの環境状態がどうなっているのか確認する際によく使用されます。
また、タスクビルダー下部の出力ウィンドウではステップごとのログや変数の状態も確認することが出来ます。タスクの実行状況を注意深く見ながら、どこで想定していない挙動になっているか、どこが想定外の動きのきっかけになっているか、タスクビルダーから確認できる情報を注視しながら特定しましょう。
稀に、"タスクビルダーの実行ではエラーにならないが、タスクアドミニストレーターからの実行ではエラーになる"というようなケースもあります。この場合は、[ダイアログ - メッセージ]アクションをタスクに適宜挿入しタスクアドミニストレーターから実行した場合でもタスクが一時停止するようにして確認することが出来ます。アクションの設定として"OK""キャンセル"ボタンを押せるようにしておき、"キャンセル"ボタンを押すとタスクが停止するよう定義しておくと、タスクの継続検証と途中終了がしやすくなります。

4. 再定義を試みる
タスクの動きがおかしくなっている原因をつかめたら、正しい動きになるよう修正したり、対応策を考えたりします。元々あるステップの再定義で直せる場合もあれば、それまでとは異なる代替策で実装をしなければならない場合もあります。臨機応変に、AutoMateが持っている様々なステップを組み合わせた"異なる実装手段"を複数考えておくことをおすすめします。
例えば、"アプリケーションの特定のフィールドに値を書き込む"という動きひとつをとっても、対話機能アクションでフィールド選択から書込みまで行うのか、マウス操作でフィールドを選択しキーストロークを送るのか、はたまたショートカットキーを駆使して徹頭徹尾キーストローク操作で完結させるのか、、、様々な実装方法があります。
実現させたい動きと確認できた事象を照らし合わせ、確実に挙動する動きで修正や代替策の組み立てを行いましょう。

おわりに
家の中で火が出たとしたらどのように行動するでしょうか?自力の消火を試みる場合も119番通報する場合も、まずは「燃えた場所の特定」と「火の勢いの確認」をすると思います。AutoMateのタスクエラー対応も良く似ています。エラーが起こったのならば、まずは「どのタスクがおかしいのか」「タスクのどこが、どのように正しくないのか」といった状況を可能な限り細かく把握することが大事です。これらの情報を掴むことが出来れば、自力で修正を試みることも担当者に確認依頼を出すことも容易になります。それまで問題なく動いていたタスクが突然止まった/想定外の動きをした場合でも、慌てることなく状況を確認しましょう。そうすることで、次に取るべき正しい手順と速やかな状況解決が見えてきます。