現在私はRPAの仕事をメインでやっていますが、その中で自分が感じた事や未経験者と仕事をして気づいた事も交えながら、RPAの仕組みや概要、必要な知識や勉強方法について書いていこうと思います。
【目次】
RPAとは
RPAとは「Robotic Process Automation」の略であり、日本語に置き換えると「ロボットがパソコンの操作を覚えて、自動でやってくれるもの」です。似たようなものでVB(Visual Basic)やExcelのマクロというものがありましたが、よく何が違うのか聞かれる事が多いので、ここの違いについてからまずは説明していこうと思います。
VBやExcelマクロは主にMicrosoft Officeドキュメント内の処理をプログラミング言語を扱い開発する事によって、自動化する事ができるものに特化しているものです。
RPAはプログラミング言語レベルの知識を習得しなくても、プログラミング言語を扱ってできる範囲の処理に加え、今まで人が行っていた画像認識や条件分岐(このメッセージが出力されたら、このボタンを押す等)をより簡易的な開発方法で利用できる技術や概念の事です。(プログラミング的思考の能力は必要となります)
RPAで対応できる操作対象領域はRPAのツールにもよりますが、インターネットで検索しているときに使用しているツール(ブラウザ)やWIndows上の画面操作、将棋アプリ等の操作のほぼ全ての操作を人と同じように動かす事ができるものとなっています。
年々精度も上がってきており、今後は人工知能(AI)との連携も本格的に予定されているため、かなり複雑な処理以外はRPAとAIを組み合わせる事により自動化できてしまう未来がくると思われます。(処理が複雑な場合は開発にも時間が掛かるので、RPA化しない方がよいものもあります)
RPAとAIとの違いについてですが、RPAは作成したルール通りに動作するもので、AIは人の頭脳のように知識や経験から判断を行う事ができる自動化技術の違いがあります。決まった作業をRPAで実装し、複雑な判断が必要な個所をAIに任せて処理をさせる事で人と同じように処理を行う事が可能となります。
ここまで紹介している情報だとかなり万能であるツールのように見えてしまいますが、現状まだ不得意な部分もあるので、RPAを取り入れる部分とその他のシステムで開発していく部分の区分けをしっかりできる事がとても重要となってきます。
RPAの仕組み(構成)
RPAはどんな技術を組み合わせてできているのだろうか?が気になったので調べてみたのですが、下記のような技術を組み合わせて作られているようです。無料で利用する事ができるオープンソースでRPAを作れる本やサイトも探せば見つかるので、自身でRPA自体を作れるようになりたいという方は少し開発してみると良いかも知れません。
1.マウスやキーボート操作のエミュレーション(模倣操作)
パソコンのOSごとにマウスやキーボートから操作可能とする仕組みであるAPI(アプリケーションプログラミンングインターフェース)というのものを持っています。こちらのAPIのプログラムを呼び出して人が操作した事と同じことを実現可能としています。この機能だけの開発だと操作対象(ボタン等)が少しずれただけで正常に動作できなくなります。
2.画面要素分析(プログラム)認識、UI Automation
操作対象であるUI要素(ウインドウやボタン等人とパソコンを繋ぐユーザインターフェース)をプログラム解析で識別して、特定する機能です。正確性がありスピードも速いですが、少しでもプログラムの内容が変更になった際に、識別できなくなってしまうため要素の指定をする際には、ワイルドカードを利用する等工夫が必要となります。
UI AutomationはWindows/.NET Frameworkのライブラリで、Windows画面を構成する要素の親子関係やプロパティ情報を取り出す事ができるものです。こちらの機能を使った画面要素を解析する事を画面スクレイピングと呼びます。
3.画像認識
これは画面の情報を画像としてとらえて、指定した画像と一致する場所を画面上から探して、位置や内容を特定するものです。画像認識はAI技術の発達により、精度が上がってきていますが、100%の精度を出す事はできないため注意が必要です。分析するために「2.画面要素分析」よりも処理速度も遅くなります。
4.特定アプリの利用
既に標準機能として備わっているアプリの機能を呼び出し、処理させるものです。元々存在しているものであるため、正確性や処理速度も速いRPA内部の処理に多く組み込まれていると思われます。
RPAの弱点、苦手分野
現時点でのRPAの弱点としては、RPAが利用しているアプリやOSのバージョンアップがある際に、画像やプログラムを認識する事ができなくなり、異常終了や誤操作をしてしまう事がある事です。(操作対象のプログラムコードや特定方法が変わる時があるためです)
ポップアップが一つ多く出るようなっただけでも人間はその場で、調べて対応すればよいですが、RPAはその変更部分を開発に取り込まないと処理を進ませる事ができなくなってしまいます。
そのためRPAは止まるものという考えで基本的に、復旧を行うまで止まっても問題がない業務に対して、取り入れていくのが推奨とされています。あまりにも頻繁に処理対象アプリの内容が変わるものには、都度保守対応が必要となるため向いていません。
今後、仮想化やRPAが更にバージョンアップされたりRPAが誤操作しないようにアプリ側でRPAの処理に関わる部分は頻繁に更新されないようにする等対応していく事で、上記問題の発生頻度を抑えていく事が可能になっていくかも知れません。
RPAの構成に関して、エンジニアの方は下記クレスコさんの記事が私の記事より分かり易くお勧めです。
Qiitaの方でもより詳しい内容が説明されている記事が存在します。
RPAの学習方法
RPAの学習方法について、記載していきます。
RPAはVBAやマクロと違い、画面上でマウスを動かし比較的簡単に開発を行っていくツールが多いですが、ITの基本的な知識を持っていないと、中々上手く作れなかったり、作った後に不具合が発生してしまったりしてしまいます。
私自身の経験とIT未経験の人に対して指導してきて、必要だと感じた知識は下記となります。
【開発に必須な知識】
●フローチャートを考えられる、作成できること
フローチャートとは処理の流れを箱や矢印を使って図で表す事です。自動化を行う対象の処理をどのような順番やパターンで処理していくか考えるために必要な知識となります。
●変数や引数について、理解していること
簡単に説明すると変数は自由に好きな値をセットできる箱。(数学でいうとXとか)引数は他のプログラムに渡す変数の事です。開発をしていく上でどの型(文字専用や数字専用)を扱うべきか、初期化する必要があるか等考えるために必要な知識となります。
●テーブル(データベース)について、理解していること
複数項目や複数行のデータを処理したりするために必要な知識となります。エクセルのテーブル機能を理解できているレベルでまずは問題ないかと思います。データベース(複数テーブルが集合しているデータ)に接続してデータの参照や更新を行う事もできるので、そのようなRPAを開発するする際はデータベースの基礎知識も必要となります。
●テストケースの洗い出し方や実施方法について、理解していること
RPAのテストはどこまでのレベルで実施すればよいか、決めるのは中々難しいですが、開発者のテストに関する知識が高ければ高いほど動作確認時点でケースを多く消化する事ができ、全体の作業時間削減に大きく左右されます。
上記の知識があれば、あとは開発対象のRPAのガイドを見ながら分からないことがあればインターネットで調べる事で、開発を進める事ができると思います。しかし、思い通りに上手く動作しない場合は、調べる力や情報の理解力(IT基礎知識)、パソコンやネットワークの仕組みを理解していればいるほど対応力に差は出てきます。こういった分からない事が起きた場合にどうすれば良いかは別の記事で詳細纏めているので、下記を参照頂ければと思います。
UiPathというRPAがフローチャートを作成して、開発を行っていくものですが、無料でオンライン教育を受講する事ができるアカデミーが結構優秀で必要な知識の勉強を行いつつ、アカデミーの中で簡易的なロボを作る事ができるので、イメージをつけるのに良いと思います。(2019年11月末に4時間で概要を理解できるコースが新しく追加されており、かなり分かりやすく経験者の方にもお勧めです)
【UiPath アカデミー】
SEの方で上記の知識を既にお持ちの方は、開発対象のRPAツールで実現できる事、実現できない事を明確にするために、とりあえず1つ作ってみるのをお勧めします。
RPAツールの種類
RPAツールはいまや世の中に多くの企業が作り出し、たくさん種類が存在しています。サーバー型やデスクトップ型、全ての機能が有料のものから、条件次第では無料で使えるものや全て無料のものまで幅広く存在してあります。企業での導入を考えられている方は、RPAの情報を多く発信している「RPA BANK」というサイトのツール紹介の中からまず選定してみるのをお勧めします。世界で高いシェアを持つ3大RPA「Automation Anywhere、UiPath、blueprism」や日本で一番有名な「WinActor」について、分かりやすく説明されています。 RPAの開発種類はテンプレート型と開発型の2つに分かれています。テンプレート型は用意されている部品を使って簡易的に開発できるものです。もう一つは開発型です。こちらはVBに近い感覚で開発を行うものです。後者の方はプログラミング知識がないと開発が難しいため、扱う予定の人も考慮して選定する事が重要です。
RPAの今後
RPAは2019年頃に幻滅期(過度な期待から期待が下がる)時期に突入していると言われています。しかし2020年以降は幻滅期からRPAで出来る事を世の中が理解し利用していく時期に入っていくと思います。WindowsのOSを提供しているマイクロソフトが2020年4月からRPAツール「Power Automate」の提供が始まる事からRPAはより世間一般的なものとして浸透されていくでしょう。RPAは手段であり、目的ではないため、適した業務に適用する事で大きな効果を出す事ができます。なんでもかんでもRPAにしようとするのは様々なリスクが出てくるため要注意です。RPAを導入する前に業務手順やフローを見直す事によって、効率化できないか検討して対応された後の最適化された業務にRPA導入をするのが推奨です。
まとめ
RPAとAIの利用は今後システムエンジニアの人だけではなく、オフィスワーカーや学生の人達も利用していくように広がっていくのではないかと思います。特定のサイトから特定の情報を数100回繰り返して取得するレベルのものであれば、容易に作る事ができるため、「何回かやり直す事ができるもので繰り返す系の単純作業はRPAを使ってやろう」と現在のエクセルの関数のように各自で作成して使う時代がやってくるかもしれません。
RPAによる操作を禁止しているサイトもありますので、外部サイトやシステムにRPA導入を検討する場合は、各利用規約を必ず確認するようにしてください。
RPAとは?や進め方を政府が纏めている情報があり、全体像を掴むのに役に立つ立ちます。下記にリンクを貼っておきます。
【政府CIOポータル 「RPA 導入実践ガイドブック」】
https://cio.go.jp/sites/default/files/uploads/documents/RPA-dounyu-jissen-guide_20210330.pdf
【総務省「自治体におけるRPA導入ガイドブック」】
自治体におけるRPA導入ガイドブック (soumu.go.jp)