#はじめに
「RPAについて、何となくでいいから雰囲気掴みたいんじゃーヾ(。`Д´。)ノ」みたいな人向けの記事です。
(まぁ言ってしまえば、自分が試した結果を簡単に説明するためのメモです。)
「こんな風に処理を組むよ!」とか、「こんな機能があるよ!」みたいな超具体的なツール紹介です。(「ビジネスのここに効きます!」みたいな記事ではございませんぞ。)
世の中いろいろなRPAツールがありますが、本記事は「UiPath」の紹介になります。
(UiPathのサイトがかなり詳しく書いてあるし、ガイドもチュートリアルも豊富なので、細かい話はそっちを見た方が良いですぞ。)
日本フォーラムもあるので、そちらもご参照下さい。
前提
対象バージョン:2017.1.6522 CommunityEdition
#UiPathについてざっくり
端的な感想は「すげぇマクロ」って感じ。
「なにか新しい機能が強み」というよりは、「簡単にマクロ化できるのが強み」って感じました。
※新しい機能もあります。「ロボットの管理機能(Orchestrator)」とか、「リモートデスクトップでも操作できるよ!」とか。
##UiPathの操作概要
こんな感じで作りますってのを紹介します。
名前を入力して、「Hello! + 名前」的に返してくれる処理を作ってみます。
参考記事:UiPathでRPAを実践してみる(1) ~FlowchartからHello World~
(参考サイトをGifアニメにしただけ、みたいなところはあります。)
ということで、非エンジニアにも説明できそうなレベルで簡単です。
##UiPathができること(アクティビティ)
主要なアクティビティを抜粋して記載します。
以下を組み立てて処理を作る感じになります。
(だいたいを理解することを目的とするので、ちょっと違うこと1も記載しています。また、紹介していないものもあります。)
公式ガイドもあります2:UiPath Activities ガイド
アクティビティ | アクティビティ | アクティビティ | 簡易説明 |
---|---|---|---|
UI Automation | Element/Text/Image/OCR | Mouse/Keyboard | カーソル配置/指定箇所クリック/キー入力 など |
Control | ラジオボタン・セレクトボックスの操作/UI要素情報の取得/アクティブ化/視覚的強調 など | ||
Find | UI要素の検索・取得(絶対指定/ワイルドカード指定/相対位置指定)/ユーザによる指定/UI要素が表示・非表示されるまで待機 など | ||
Attribute | UI属性の取得/属性値が指定値になるまで待機/スクリーンショット など | ||
Event | UI要素が表示・非表示された時を検知するトリガー | ||
ScreenScraping | 指定した文字列を含むUI要素の取得/指定されたUI要素から文字列を取得/指定したWEBページから文字列などを取得 | ||
File | 画像の保存/変数への格納 | ||
Browser | (いろいろ) | タブ閉じる/戻る/進む/ブラウザ起動時のページに遷移/JavaScriptを実行/指定URLに遷移/ブラウザを開く/画面更新など | |
Window | (いろいろ) | 閉じる/隠す/最大化/最小化/サイズ・位置の変更・復元/アクティブ化 | |
User Events | Element/Image Trigger | Click/Keypress | 指定したUI要素をクリック/キー押下したことを検知するトリガー |
System Trigger | (いろいろ) | 指定したキー操作/マウス操作を検知するトリガー | |
System | File | (操作系) | ファイル自体のコピー・削除・移動/ファイルの読み込み・書き込み など |
(トリガー系) | ファイルの変更を検知するトリガー | ||
Clipboard | (いろいろ) | クリップボードから取得/クリップボードに格納 | |
Application | (プロセス操作) | プロセスリストの取得/プロセスのKill | |
(アプリケーション操作) | 起動/停止 | ||
Environment | (いろいろ) | ビープ音を鳴らす/環境変数の取得 など | |
PowerShell | (いろいろ) | Powershellコマンドを実行する | |
Dialog | (いろいろ) | ユーザ入力を期待するダイアログ(テキスト入力/ファイル指定/フォルダ指定)/メッセージボックス など | |
Programming | String | (いろいろ) | 文字列・配列をJSONオブジェクトに変換/正規表現での一致・不一致判定/文字列置換 |
Datatable | (いろいろ) | UiPath内のテーブルを生成・操作する(カラム・行の追加・削除/テーブルのクリア・マージ・出力/レコードを対象にしたループ処理) | |
Debug | (いろいろ) | アクティビティのコメントアウト化/指定したメッセージ・変数のログ出力/コメントの挿入 など | |
Execute | (いろいろ) | 指定した COM オブジェクトのメソッドを呼び出す | |
Workflow | ControlFlow | Assign | 変数への指定値の格納 |
(FlowChart内での制御) | ループ処理 | 配列等の要素がなくなるまで(For Each)/条件を満たしている間(Do While)/条件が満たされるまで(RetryScope) | |
条件分岐 | IF/Switchが使える | ||
break処理 | For Eachを抜け出す(他のループについては明記なし。) | ||
Sequence | FlowChartの亜種:分岐はできず、順に実行するフロー | ||
FlowChart | (いろいろ) | 分岐等が可能な一般的な処理フロー。複数FlowChartを用意してそれらの分岐制御等が可能 | |
Error Handling | Try Catch | エラー発生時の挙動を制御できる | |
State Machine | (いろいろ) | FlowChartの亜種:UMLで言うところの状態遷移図 | |
Checkpoint | (いろいろ) | 指定した条件がTrue/Flaseの時にエラーを生成する。 | |
Invoke | (いろいろ) | 指定したワークフローを同期的に呼出し、必要に応じて対話的に処理できるようにする。 | |
Orchestrator | (いろいろ) | (いろいろ) | 別途説明 |
Cognitive | Translate系 | (いろいろ) | 指定したテキストを翻訳する |
Analysis系 | (いろいろ) | 指定したテキストを解析する。(言語、長さ、肯定的または否定的感情の度合い)(利用には、Google/IBM/Microsoftいずれかへのサービス登録が必要。3(API連携をする感じ。)) |
#おまけ
##インストール方法
以下サイトを参考にインストール。
(ここで改めて記事にするほどでもないので割愛します。)
参考サイト:
UiPathでRPAを実践してみる(1) ~FlowchartからHello World~
【UiPath/ユーアイパス】無料版のダウンロードからインストール方法まで
##学習方法
UiPathAcademyというUiPath操作についての学習サイトがあります。
かなり丁寧に作られているので、真面目に取り組めば力になるはずです。
###コース:基本トレーニング
時間
- 14時間程度(14レッスン。1レッスン1時間前後[構成は以下]。)
- 20~30分の動画
- 1~3つの実践型トレーニング
- 小テスト
- いきなり小テスト!とかはできない。(ちゃんとやっておかないと、ファイナルテストで泣きます。)
無料の講習を3日間受けてきます!とでも言って、研修行っている体で、自宅で受けましょう。
小テスト
- NG時にフィードバックされるのはグロスの得点のみ
- どの回答が間違っているかは分からないです。
- ソンビアタックせずにちゃんと学習しましょう。
- どの回答が間違っているかは分からないです。
- 合格すると、回答が合ってたか、間違ってたかを教えてくれます。
- 正解は教えてくれません。
ファイナルテスト
14のレッスンの最後にファイナルテストがあります。
- 45問。
- 3回失敗すると、24時間強制待機+もう一度最初から
- 未検証:いずれかの動画を再視聴すれば良い?
- 小テストは何度失敗しても良さそう(5回くらい失敗したけど大丈夫だった気がする)
- ファイナルテストに合格すると「orchestration用トレーニング」ができる
- 合格しない限りできない
ベストプラクティス
14レッスン目で、「ベストプラクティス」が公開されます。
これを取得するために、進めるのもありだと思います。
(ファイナルテストの手前なので、時間さえあればきっと誰でもたどり着けます。)
##OCRの精度
基本的にPC文字を対象にしている4っぽいので、手書き文字は不得手っぽい。
手書き文字のスクレイピングを期待するなら、手書き文字OCRエンジンを別で用意したほうが良さそう5。
日本語適用方法
- インプットデータを取得6。
- それを以下に格納。(消されているのはユーザ名です。)
- 「GetOCR」を選択
- 右下の「Outline」>GetOCRの配下>GoogleOCRを選択
- 右上の「Propaties」>Options>Languageを選択
- "jpn"と入力(※画像中だと"eng"になっている・・・)
参考にしたQA
Installing additional language pack for google OCR
OCR Engines in Studio - Setup and Languages
##APIを投げる
デフォルトではできないので、リクエストを投げるアクティビティをインストールする必要があります。
シンプルなGetでのAPI連携を試したがこんな感じに取得できた
(以下は、GET投げて、その結果をログに出力する処理です。)
##Orchestrator
UiPathが特徴として推しているのが、「Orchestrator」という機能。
説明は「UiPath入門(5)〜UiPath Orchestratorとは」が詳しかったので、そちらをご参照下さい。
##操作者の監視
操作者の操作を監視して、特定操作をトリガーにして動くことができます。
Trigger系のアクティビティはMonitorアクティビティと一緒に用いる必要があります。
実際の設定は以下のような感じです(これは、windowsのexplorerボタンを押下した時に"Clicked!"というメッセージボックスを表示させる処理。)
##バージョン管理
json形式で出力/読み込みできるので、それをgitとかで管理すれば良いかと。
標準の出力形式もほとんどxmlみたいなモノなので、GUIツール特有の「バージョン管理に悩む・・・」って問題は無さそうです。
※「簡単なパラメータの変更なら、jsonそのまま直しちゃえよ」って公式も言っているので、メンテも楽です。(UiPathStudioは少し重いのでありがたいですね)
#さいごに
百聞は一見にしかずなので、試してみて下さい。
UiPathに関しては条件さえ満たしていれば、無償で利用可能です。(2017年12月現在)
ちなみにですが、RPAはライセンス費がそこそこ良い値段のものが多いです。
大規模に適用させて、ユーザ自身でメンテしていくならありな気がしますが、
「適用可能範囲が狭い」とか、「メンテは滅多にしない!」とかなら、別の選択肢を考えた方が良さそうです。
この先、ライセンス形態もいろいろ増えていくと思いますので、いろいろ比較して見るのが良いと思います。
RPAはあくまで手段ですので、安易に流行りに乗って「こんなはずでは!」とならないようにご注意下さい。
#追記
2017/12/28 こんな記事書きましたヨ→「RPAExpressとUiPathの比較」
※合わせてこちらもご覧ください:RPAを検討する人に知ってもらいたい「JenkinsでのWindows自動化」
-
「OCR」アクティビティには、「File」は無いとか。 ↩
-
だいぶ日本語です。一部翻訳されてないです(そんなに問題にはならない)。 ↩
-
「tesstrain.sh で Tesseract-OCR の言語データをカスタマイズする」に成り立ち/カスタマイズ方法があります。 ↩
-
最新版だとエラーになりました。このコミットのデータが上手くいきました。 ↩