RPA開発時のポイントのあれこれ

#はじめに

こちらは[RPA (Robotic Process Automation) Advent Calendar 2021](https://qiita.com/advent-calendar/2021/rpa)参加記事です。

今回の記事では、普段RPAでの開発時に気をつけていることなどをAutomation360を使用して、
初心者でも始めやすい基本的なことをざっくりとまとめた記事です。


#対象者
* 非IT部門からRPAでの開発を始めてみた方
* Automation360での開発少しずつ慣れてきたけど、もう少しレベルを上げて開発したい方


#作成前にやっていることなど

実際のBot開発前には、もっと様々な事を考慮していますが例としていくつかあげさせていただきます。

###自動化対象の動作確認

普段作業しているものについて、例えばテキストボックスを入力してボタンをクリックして画面が切り替わるみたいな動作であったら、
普段入力してない文字を入れてボタンを押すとどうなるのかを試したりします。(全角英数字、記号、大量の文字数など)
入力する文字によってエラーメッセージの文言が違ったり、全角でも動作したりするなど色々な結果パターンを記録します。
システムがブラウザだった場合などは画面によってタブ名はどうなっているのか
Chromeのデベロッパーツールを使って、操作対象の部分のXPathなどを確認したりもします。

また、Automation360で操作できるのかも確認します。
例えば、レコーダーアクションで実際にボタンがクリックできるのかなど確認をします。



上記の確認を行うことで、__どういったことを考慮して開発しなければならないのか把握することができます。__

###自動化対象の作業の落とし込み

手動操作での手順を一つ一つ行い、どのような動きであるのか詳細に確認します。
それをBot作成時に__どのようなアクションで実現可能か整理します。__

(例)

|手動操作|Bot作成時の操作|
|:-|:-|
|テキストボックスにユーザー名を入力する|__レコーダーアクションの「テキストの設定」__を使用してユーザー名を入力する|
|ログイン画面を閉じる|__ブラウザの閉じるアクション__を使用してログイン画面を閉じる|


###作成前の時間
作成前にしっかりと整理しないと、いざ開発して実行するとエラーになったり、開発のやり直しが発生することがあります。
考慮すべき事項を徹底的に洗い出し、ロジックに落とし込めると処理が落ちないBot作成につながると思います。



#作成時にやっていることなど


Automation360を使用して気を付けている部分について、よくあることであろうこと部分でいくつか例を出させていただきました。
画像については、サンプルで作成したものですので実際よりは簡素なものになっています。


###変数定義
どの型なのかわかるように変数を定義する際は頭に型がわかるようにしています。
例えば文字列だったら頭文字にsなどつけるなどです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323990/80b54b8b-199f-2ec0-c3d7-0487d8439faf.png)

このあたりはチーム内などで命名規則があったりすると思いますので、そちらに従ってしっかりと作成しましょう。
また基本的ですが、変数名も何を目的とした変数なのかわかりやすいようにしましょう。

###コメント&ステップの使用

コメントアクションででどんな操作をしているのか、後で見返した時にわからなくなったりしないようにするために必ず書いています。
また親Botから子Botを呼び出すなどの処理、タスクBot実行アクション前に、入力/出力の値などを以下のように書いておくと個人的には分かりやすいと感じました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323990/0b150cb0-095a-87d3-58c5-c8e42f478c68.png)

見やすさは各々だと思いますので、そのあたりは好みなのかなとも思います。

ステップアクションで処理のまとまり時に入れることで可読性を上げています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323990/76d48d68-5464-f3db-8200-44149406bfbb.png)

###ログを残す
処理の流れをログとして記載します。
時間やBot名、処理内容などを記載しています。結果が正常か異常かも書いたりするとより分かりやすいかと思います。
ファイルに記録アクションなどを使用して、キャッチ時にログを出力させたりします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323990/0e11e4c0-919d-5cfa-fce3-d3e05c8c4aaf.png)



###開いたら閉じる
操作対象のものについて、開いて処理を終えて必要がなくなり次第、誤動作を防ぐために必ず閉じてます。
閉じる際は、ブラウザだったらブラウザの閉じるアクションを使用したり、
アプリケーションだったら、キーストロークのシミュレーションアクションで閉じるショートカット(Ctrl + w)を対象のアプリケーションで閉じるなどしています。
ExcelやCSV/TXTなどもそれぞれ開く、閉じるアクションがあるのでそれを使って閉じましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323990/7d2fae12-8b1f-9d18-3b9e-b5b9d6c3acda.png)


###画面の最大化、アクティブ化
操作対象のの画面の最大化、アクティブ化を行うことで誤動作を防いでいます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323990/f727ad38-b88e-a780-72bf-06d25b51dc60.png)


###レコーダー操作時の設定
レコーダーはPathなどの動的なオブジェクトのプロパティを外し、安定性を高めます。
また、コントロールを待機を設定してあげることで、極力遅延アクションを使用せず安定して作成できるかと思います。

こちらは、下記の記事が大変分かりやすいので是非読んでください。


https://qiita.com/IQ_Bocchi/items/a23674dec400874412ee

###セクション名定義
Excelなどのパッケージを使用する際に、セッション名を入力すると思いますが、
セクション名をはどんな操作を実行しているのか分かりやすいように定義しています。


例で、下の方にSession1と書かれてますが、後で見返しても何をしているかわかりにくくなってしまうので、
定義してあげるといいと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323990/9e270d7f-bead-f514-dece-18b346699478.png)

###作成が完了したら

色々なパターンを想定して実行してみます。
大量のデータを投入して時間計測したり、Botの実行中にわざと手で操作してあげてエラーを引き起こしてあげて、
どんな結果になるか確認してみたりして、想定外の動きでも対応できるように調整をかけています。

#おわりに

細かい部分を上げるとまだまだ沢山あるのですが、__まず初心者の方が大事なのは安定して動き保守しやすいBotを作ることだと思います。エラーで落ちまくるようなBot作成をしてはいけません。誰も幸せになりません。__

そのためにも、

* 自動化対象のシステムなどの周辺の理解
* 実際に自動化する業務の一つ一つの手順をRPAでどう実現するか落とし込む
* 色々なアクションを適切に使用して、安定して保守しやすいBotを作る

を考えることが大事かなと思います。
RPAツールの理解も必要ですが、それ以上に自動化対象のセキュリティを含めた周辺知識、ロジックの整理ができることが成功の一歩だと思います。



RPAでの自動化は始めたころ大変で難しいですが、、
まずは自分の身の回りの小さな業務で上記のことを意識しながら開発してみるといいと思います。

開発時のポイントなど、皆さんが大切にしていることがあれば是非教えてください。

最後までお読みいただきありがとうございました！