RPA開発をこれから始めるために

#この記事では
この記事では自分のRPAでの開発に携わった経験から

- RPAとはどんなものか
- 何が出来るのか
- 必要だと感じた知識

ということ書いていきます。
あんまり難しく考えずに「ふーんRPAってこんな知識でいけるのか」程度に読んでもらえればと思います。

#自己紹介
ランスタッドのキャレオ事業本部で社内SEとして業務を行っています。
JavaやPHPなどの言語を使ったWeb開発をはじめ、PCキッティング＆セッティング、ヘルプデスク、社内ネットワークの設定やLinuxサーバーの構築。果てはLANケーブルの作成と様々なことを行う何でも屋です（笑）

#はじめに
自分はRPAに関しては経験が多いわけではなく、経験的には大よそ2ヵ月程度です。加えて学習はWinActorに付属しているマニュアル程度しか行っていません。
この記事では、その短期間の中でRPA開発に必要なこと（無いと困ったこと）を書いていきたいと思います。
#RPAとはどんなものか
##そもそもRPAって？
RPAとは「Robotic Process Automation /ロボティック・プロセス・オートメーション」の略語です。
技術的な詳細は検索すればいくらでも出てくるのですが、**一言で言ってしまえばマクロ**です。

自分の操作手順を記録させリプレイさせることも出来れば、一つ一つ動作を設定しその通りに動かすことも出来ます。
代表的なRPAは、日本では「[WinActor](https://winactor.com/)」、海外では「[UiPath](https://www.uipath.com/ja/)」になります。
###どんな場面で活用できるか
RPAが最も活躍するのは**ルーティンワーク**となっている作業です。
例えば人ひとりの時間を長時間拘束するような単調作業、1日に不定期でも何度も行う作業などに大きな効果を発揮します。
活用出来るかどうかは**「単調作業」「何度も行う」**という部分で判断するといいでしょう。
###活用できない場面は
活用できないのは前述の「単調作業」「何度も行う」に当てはまらない場合、そして単調作業ながらも「人の判断」が入るものには活用できません。
RPAは決まったルールの上でしか活用できないため、人の判断が入るものには対応ができないのです。
###簡単？難しい？
ロボット開発と聞くと難しく感じますが、作ることは難しくありませんし開発未経験の人でも問題なく作れるでしょう。
WinActorの場合、処理アイテムをドラッグ＆ドロップで設置してフローを作成する、最近多くなっている設計しながら開発を行う形です。（今回は開発画面の準備ができなかったので、次回に掲載します）

しかし人から依頼されて仕組みを構築する場合や、ロボットが実行可能な幅を広げるといった場合には欲しいと思える知識があります。それに関しては後述していきたいと思います。
#何が出来るのか？
###どんなアプリを動かせるのか
僕が使ったのはWinActorなので、それを基準に説明します。

- Excel、WordなどのMicrosoft製品
- ブラウザ（IE、Edge、Chrome（何故かFirefoxはなし…））

WinActorでは上に書いたアプリの専用ライブラリが豊富用意されており、これが使用可能な代表アプリになります。
ただしWinActorが標準的に用意しているライブラリというだけで、イベントの操作記録や画像認識機能を利用すれば、殆どのアプリを使うことが出来ます。
他にもVBScriptでライブラリ開発を行えば、自分が使いたいアプリの専用ライブラリを作ることも可能です。
###スケジュール実行
WinActorはWindowsのタスクスケジューラを利用して自動実行させることが可能です。これで時間がかかる処理も深夜に対応可能です。ただしWinActorは**同時実行可能数が１**という難点を抱えています。この辺は今後改善して欲しいですね。
ちなみにUiPathは同時に複数実行が可能らしいです。ただしその管理モジュールが200万円以上するらしいですが…。こっちはもっと安くなって欲しいですね！
###その他には
上記の代表的機能以外にもRPA上から出来ることがあります。

 - Excelマクロの起動
 - バッチの起動
 - テキストファイル操作
 - フォルダ操作
 - 画像認識によるアクション

全てRPA上で解決するのではなく、他のアプリケーションと組み合わせることで実行させる処理に幅を持たせることができます。
#必要だと感じた知識
RPAの開発は前述した通り、そんなに難しくありません。
ただし以下のような知識があれば、更に早く、そしてRPAにやらせる作業に幅を持たせることが出来ます。
###HTML
RPAがブラウザ上で処理を行う際、Webページ上のHTMLソースを解析してアクセスしているようです。
ブラウザ上の処理を設定する際、画面の項目を選択するだけでもアクションの設定を完了させることが出来るのですが、同一名称の項目にアクションを行う際など、狙った通りの処理を行ってくれないケースが多々あります。
そういった場合に、HTMLタグの指定を行うことで正しいアクションを設定出来るので、基礎知識だけでもいいので覚えておくと開発効率が大きく上がります。

###VBScript
WinActorのライブラリはVBScriptで出来ています。（Windows上での動作なので当たり前と言えば当たり前ですが…）
WinActorでは自作ライブラリの追加が可能なので、VBScriptの知識があれば様々な機能拡張を行うことが出来ます。
用意してあるライブラリは痒いところに手が届かないケースがあるので、VBScriptが出来ると問題解消に役立ちます。

###業務の可視化
これは言語では無いのですが依頼を受けてRPAを開発する場合、業務の可視化は必須スキルだと思います。
**これはRPAは一連のシナリオを形にするという性質上、アジャイルのような手法は取れず、必然的にウォーターフォール的な手法になってしまうためです。**
そのため実装前にヒアリングを行い、正確に相手の意図を理解し、相手にこれから作るシナリオを見せ、相手と自分のズレを減らさなければ確実に失敗します。
「業務の可視化なんて基本だから簡単！」と思うかもしれませんと思うでしょうが、試しに自分の業務を可視化してみましょう。意外と難しいものですよ。
自分は業務上のアクションだけを書き出したフローチャートを作って、それで説明を行うことが多いです。

#最後に
この記事ではRPA開発を行う際にこれを知っていれば便利！という内容を書いてきました。もっとも自分の経験からの主観的内容なので、人によってはこれは違う！というのもあると思います。
自分もまだまだ経験不足なので、目を瞑っていただければ…

自分も今までは言語による開発がメインだったのですがRPA開発に携わってからは「自分が開発したプログラムとRPAを組み合わせると更に効率化するな…」などと考えていて、効率化の幅が広がったなとか思ってます。これらのアイデアが実現出来るように勉強を続けます。

RPAは今後は更にこれらの開発需要は増えていくと感じます。（現在でも十分多いですが）RPAに似たものとして今まではExcelマクロなどがありましたが、各種サービスがWebブラウザ形式に移行したことで、それだけでは追いつかなくなってきているためでしょう。今から学習を始めても全然遅くないと思います。

今回はとっかかりでしたが、次回は実践的な内容も含めてRPAで不自由したことの対処法でも記事にしたいと思います。