ちまたで話題のRPA(Robotic Process Automation)をpythonで自作することで、業務効率化はもちろん、必要に応じて内製でカスタマイズできるシステム作成を目指します。
今回はpythonで使用できそうなライブラリなど調べてみたいと思います。
-- 実行環境 --
Windows 10 64ビット版(1903)、python 3.7.4
このサイトで目指す到達点
RPA(Robotic Process Automation)というのはパソコン内で行っていた各種定型業務(操作)を自動化/業務効率化することで、生産性向上を図るシステムです。下記に一つYouTubeの動画をサンプルをご紹介します。
動画の内容は「そもそもWebシステムにインポートできるように改修しろよ」とか意見があるのは重々承知です。ですが「上記のようなシステム/機能が多数ある 場合 」や「業者が違うシステム間連携」など改修に費用と時間をかけるならリプレースを検討するような状況の中では、こういったRPAが生きてくるのではと考えています。
ターゲット
私は社内SEとして、大量のPCをキッティングする機会が度々来ます。PC入れ替えのタイミングでは100台以上キッティングが必要になりますが、この台数をこなすと必ずミスやチェック漏れが発生します。今回のシリーズではこのPCキッティングに絞って検討したいと思います。
要検討事項
RPAの仕組みを検討する上で、下記に重点を置いて検討したいと思います。
- 高精度
- 汎用性
- シンプル
- 保守性
高精度
何か処理をするだけではなく、その結果をチェックする機構も一緒に組み込むことで精度の高い処理が行えることを目指します。
汎用性
処理内容が様々なシステム/アプリに関連することから、どのような作りのシステムでも動作するようにすることを目指します。
シンプル
汎用的であっても、ブラウザはこっちのコマンド・あのアプリはこっちのコマンドといったように複雑な作りになってしまうと次の保守性も含めて使いづらいものになってしまうので、可能な限りコマンドを絞って実現できることを目指します。
保守性
Windows 10では大型アップデートで大幅な画面の改修があったりするので、使用する都度設定の修正が必要になる可能性が高いです。そういったことに対応できるよう、エラーが出た際のログなどの実装と、フローの改修を容易にする仕組みを検討します。
使えそうなライブラリ
pythonをベースに、RPA/自動化として使用できそうなものを調べてみました。他に使いやすいものがあればコメントで教えて頂けると嬉しいです。
pyautogui
GUI自動化で検索するとよく見かけるライブラリです。サンプルを見る限り確かに簡単にマウス操作など行えるように見受けられます。チェックにも画像認識があるようなので期待大です。
OpenCV
画像処理系ライブラリです。画像のマッチング等が出来るので、処理するターゲットをモニタ上から検索→クリック といった使い方が出来そうです。上記PyAutoGUIのマッチングもOpenCVを使っているようです。
pywin32
python から Windows API を使用できるライブラリです。難易度は他と比べると段違いに高そうではありますが、これが使えればマウス/キーボード操作の自動化以上のことが出来るはずなので非常に期待大です。
Selenium
これは本来UIテスト用のライブラリで、ブラウザの表示内容を取得/操作することが可能です。ブラウザの制約はありそうですがブラウザ上の処理はほぼ出来るようです。Webシステム専用ということで目指す汎用性から逸脱するので取り急ぎ使用する想定はありませんが、うまく処理できないWebシステムがあれば検討の範囲でしょうか。
BeautifulSoup
これもブラウザ系、スクレイピング特化でしょうか。目的とは異なるように思いましたが、使える機能もありそうなのでリストに挙げておきます。
ReportLab、PyPDF2、pdfminer
PDF関連の操作用ライブラリです。目的からすると使用する機会はなさそうですがリストに挙げておきます。
OpenPyXL
Excelの処理自動化用でしょうか。優先順位は低めですがリストに挙げておきます。
まとめ
今回はRPAのベースとなる自動化で使えそうなライブラリをリストアップしてみました。次回から実際に使用してみて実際に使えそうなライブラリの選定を始めたいと思います。
コメント