【無料RPA】RPAExpressってどうなの？に対する回答（UiPathとの比較）

#はじめに
RPAExpressタグ一番乗り！！！
昨今話題のRPA記事です。
完全無料と言われているRPAExpressを試してみました。
並行してUiPathも触っているので、せっかくなので、超主観的に比較してみました。

#結論

RPAExpressは無料ながら一通りの機能を備えているので、これだけでも事足りるケースはあると思います。
社内の稟議が大変！ってとこには、まさに神の一手だと思います。これで実績作って、それから上申すれば一発でしょう！

なお、他の有償製品でも十分にペイできると分かれば、さっさと乗り換えるのをお勧めします。[^0]
UiPathとしか比較していませんが、適用可能な範囲が狭いように感じますので、適用限界が割と早めに来ます。
また、日本語記事が少なく、社内でノウハウを蓄積していかないといけないという、見えない運用コストが発生します。。。
ロボット職人を産みたいなら、RPAExpressのままでもいいでしょうが・・・
なんか、仕事減らすために、仕事作ってるみたいで、ナンセンスだなーって思います。

上位互換の「Workfusion SPA」もあるので、使い勝手が気に入ったなら、そのまま移行しちゃいましょう。（移行ツールとかあるのか知らんけど）

[^0]: そもそも無償がいつまで提供されるのかわかりませんし。マネタイズできない製品は死ぬだけなので、無料も考えものかと。良い製品には金を出しましょう。サポート消えて困るのは利用者側でござるよ。（上位互換のSPAが売れていれば、この子も生き続けるとは思いますが・・・）

**全体評価**

|比較項目|UiPath|RPAExpress|補足|
|:---|:---|:---|:---|
|機能充実度|👍|❌|後述|
|分かりやすさ|❌|👍|機能が絞られているのが逆に良い|
|サポート|👍|❌|UiPathの圧倒的日本語サポート|
|コスト|❌|👍|無料と比べたらねぇ|
|総論（コスパ）|👍|👍|一長一短|

**機能観点での評価**

|比較項目|UiPath|RPAExpress|
|:---|:---|:---|
|総論|非常に高機能。|無料ながらも一通りの機能は揃っており、コンパクトにまとまっているイメージ。|
|対象特定方法|独自の属性判定を行なっており、画面イメージ判定よりも高性能(ワイルドカードも使えるため、柔軟な特定も可能)|画面イメージ判定（2018/09/21追記：なにやらxPath指定という画面要素判定ができるようになったらしい？）|
|Citrix環境[^1]|得意|普通に苦手[^2]|
|サーバー機能/管理機能|ロボット管理機能が強力（実際にログオンして実行する[^3]など）(ログオン実行のため、GUI操作に強い？[^3]（クリックなど）)|管理機能あり！（無料なのに！）ただし、完全にバックグラウンド実行になるため、処理できないアクションが存在する。（クリックなど）|
|ブラウザ|多数のブラウザに対応可能（拡張機能が多彩）|独自のブラウザと、IEのみ。|
|処理のコンポ化|処理をコンポーネント化しやすい（コンポ化しやすい＆呼び出しやすい）|できない？[^4]|
|見やすさ[^5]|見やすい処理フローが書ける（3種類の書き方から選べる）|処理フローというよりは、処理リスト。|
|レコーディング|可能。更に、レコーディング途中でも操作の具体指示が可能。|可能。ただし、クリックとキー入力を記録するだけ。|
|トリガー監視[^6]|可能|できない|
|デバッグ機能[^7]|充実|標準ではない。ただし、自力で作れなくもない。[^8]|

[^1]: リモートデスクトップなどの仮想環境
[^2]: 画面イメージ判定のRPAが比較的多く、それらはどれもCitrix環境を苦手としている。
[^3]: 実際に検証はできていません。「[UiPath入門(5)〜UiPath Orchestratorとは](http://blog.jippahitokarage.com/entry/2017/08/06/140300)」からの推測です。
[^4]: こちらも未検証。。。ControllTowerを操作しているとできそうな気配を感じるんですが・・・やり方を見つけられず・・・
[^5]: 見やすさをバカにしちゃいけない。見にくい処理は、職人を生む・・・。職人の再生産は、できるだけ避けよう。。。
[^6]: ユーザ操作をトリガーにして、処理を走らせることができるかどうか。
[^7]: ログに出力したり、ブレークポイント設定したり。
[^8]: コマンド実行アクションがあるので「echo 文字列 > ログファイル.txt」みたいにするイメージ。ブレークポイントは無理だなー。（未実装なだけ？）

#詳細
##画面イメージ
UiPathと大きく変わるのは、処理リスト感がでるところかな・・・
なお、UiPathの画面イメージはこちらでござるよ。→[「RPAって何ができるの？」に対する超具体的な回答（UiPath）](https://qiita.com/nh321/items/329fd84682b9f49b2761)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/214587/ea92c44c-55c0-24f3-ddc1-1d3aec4e3620.png)

##アクティビティ比較
具体的に何ができるのかを比較。
UiPathは「アクティビティ」。RPAExpressでは「アクション」と呼ばれています。
こうやって比べると、結構RPAExpressでできることは少ないですね。

|アクティビティ|アクティビティ|アクティビティ|簡易説明|RPAExpressの場合|
|:---|:---|:---|:---|:---|
|UI Automation|Element/ Text/ Image/ OCR|Mouse/ Keyboard|カーソル配置/指定箇所クリック/キー入力　など|△：リモート実行では使えない|
|||Control|ラジオボタン・セレクトボックスの操作/UI要素情報の取得/アクティブ化/視覚的強調　など|×|
|||Find|UI要素の検索・取得（絶対指定/ワイルドカード指定/相対位置指定）/ユーザによる指定/UI要素が表示・非表示されるまで待機　など|×|
|||Attribute|UI属性の取得/属性値が指定値になるまで待機/スクリーンショット　など|△：wait for image（指定画像検出まで待機）
|||Event|UI要素が表示・非表示された時を検知するトリガー|×|
|||Screen Scraping|指定した文字列を含むUI要素の取得/指定されたUI要素から文字列を取得/指定したWEBページから文字列などを取得|△：OCR（「一応ある」くらいのレベル）|
|||File|画像の保存/変数への格納|×|
||Browser|（いろいろ）|タブ閉じる/戻る/進む/ブラウザ起動時のページに遷移/JavaScriptを実行/指定URLに遷移/ブラウザを開く/画面更新など|△：WEB（指定URLを開くくらい）|
||Window|（いろいろ）|閉じる/隠す/最大化/最小化/サイズ・位置の変更・復元/アクティブ化|○：Application|
|User Events|Element/ Image Trigger|Click/ Keypress|指定したUI要素をクリック/キー押下したことを検知するトリガー|×|
||System Trigger|（いろいろ）|指定したキー操作/マウス操作を検知するトリガー|×|
|System|File|（操作系）|ファイル自体のコピー・削除・移動/ファイルの読み込み・書き込み　など|△：Files and Folders（書き込みは不可）|
|||（トリガー系）|ファイルの変更を検知するトリガー|×|
||Clipboard|（いろいろ）|クリップボードから取得/クリップボードに格納|○|
||Application|（プロセス操作）|プロセスリストの取得/プロセスのKill|×|
|||（アプリケーション操作）|起動/停止|○：Launch Application|
||Environment|（いろいろ）|ビープ音を鳴らす/環境変数の取得　など|×|
||PowerShell|（いろいろ）|Powershellコマンドを実行する|△：Launch Applicationでpowershellを起動|
||Dialog|（いろいろ）|ユーザ入力を期待するダイアログ（テキスト入力/ファイル指定/フォルダ指定）/メッセージボックス　など|×|
|Programming|String|（いろいろ）|文字列・配列をJSONオブジェクトに変換/正規表現での一致・不一致判定/文字列置換|△：groovyでカバー？|
||Datatable|（いろいろ）|UiPath内のテーブルを生成・操作する（カラム・行の追加・削除/テーブルのクリア・マージ・出力/レコードを対象にしたループ処理）|×|
||Debug|（いろいろ）|アクティビティのコメントアウト化/指定したメッセージ・変数のログ出力/コメントの挿入　など|△：処理のコメントアウトは可能|
||Execute|（いろいろ）|指定した COM オブジェクトのメソッドを呼び出す|×|
|Workflow|Control Flow|Assign|変数への指定値の格納|○：Variables|
||（Flow Chart内での制御）|ループ処理|配列等の要素がなくなるまで(For Each)/条件を満たしている間(Do While)/条件が満たされるまで(RetryScope)|○：whilw|
|||条件分岐|IF/Switchが使える|○：If-Else|
|||break処理|For Eachを抜け出す（他のループについては明記なし。）|×|
|||Sequence|FlowChartの亜種：分岐はできず、順に実行するフロー|○：これしかない|
||Flow Chart|（いろいろ）|分岐等が可能な一般的な処理フロー。複数FlowChartを用意してそれらの分岐制御等が可能|×|
||Error Handling|Try Catch|エラー発生時の挙動を制御できる|△：Exception Handling|
||State Machine|（いろいろ）|FlowChartの亜種：UMLで言うところの状態遷移図|×|
||Checkpoint|（いろいろ）|指定した条件がTrue/Flaseの時にエラーを生成する。|×|
||Invoke|（いろいろ）|指定したワークフローを同期的に呼出し、必要に応じて対話的に処理できるようにする。|×|
|Orchestrator|（いろいろ）|（いろいろ）|サーバー機能/管理機能|△：Controll Tower|
|Cognitive|Translate系|（いろいろ）|指定したテキストを翻訳する|×|
||Analysis系|（いろいろ）|指定したテキストを解析する。（言語、長さ、肯定的または否定的感情の度合い）（利用には、Google/ IBM/ Microsoftいずれかへのサービス登録が必要。[^3]（API連携をする感じ。））|×|

##その他比較
使用感とかも含めて、上記で説明しきれなかった部分を記載しています。
いずれもUiPathの方が優秀です。

|比較ポイント|UiPath|RPA Express|
|:---|:---|:---|
|レコーディング|細かいオプションを指定しながら記録が可能（少し慣れが必要だが高機能）|ユーザ操作のみを記録（マウスクリック箇所/キー入力など（簡易な操作だが、その後の処理修正が多い））|
|対象特定方法|UI要素を属性で判断。完全に特定できるため、誤差も少ない。また属性の指定にはワイルドカードもしていできるため、変動要素にも対応可能。|UI要素を画像から判断。画像から判断のため、似たようなものが画面上に残ってしまっていると失敗しがち。ワイルドカードは指定できないため、変動要素には弱い。|
|Excel|専用アクティビティがある|専用アクションがある|
|コンポーネント化|得意。分割して他の処理から呼び出すとかもできる。|処理内部でグルーピングは可能。他の処理から呼び出せるかは不明（たぶんできない？）|
|キー入力|3種類くらいバリエーションがあり、アクティブじゃない時でも（最小化していても）入力可能。ホットキー等も入力可能。|1バリエーションのみ。アクティブである必要がある。ホットキー等も入力可能。|
|デバッグ|デバッグ用の実行モードがある。速度を遅くして実行することもできるし、ブレークポイントの指定も可能。ログ出力も可能。|デバッグ用の実行モードは無いが、通常モードの中でデバッグができるようにしてある。（一時停止アクションなど：ただし現時点では未実装）ログ出力機能が無いため、かなり不便。クリップボードに貼り付ける機能があるので、それを代用しましたが、要所要所テキストファイルに書き出すようにした方がよいかも。（要は自分でロギング）|
|アクティビティ/アクション|かなり多い。機能も多彩。一方で、似たようなアクティビティもあり、やや分かりづらい。|UiPathに比べると少ないため、出来ない部分もある。ただ、一通りは網羅しているため、低機能でよければ十分。（もう少し踏み込んだ比較は前述の通り）|
|処理の書き方|3種類あり、見やすさを意識した記載が可能。GUIでグラフィカルな「図」で作成可能。分岐を想定したワークフロー/順処理のみを想定したシークエンス/UMLの状態遷移図的にかけるStateMachine|左記で言うところの「シークエンス」に近い書き方しか出来ない。GUIではあるが、「図」ではなく、「処理順リスト」という表現が近い。|
|変数の型|多種多様。例：リスト型複数あり、リストに保有するオブジェクトの型も指定。|必要最低限って感じ。例：リストは1種類のみ。リストに保有するオブジェクトの型は選べない。|
|使える言語|.NET Framework。「Directory.GetFiles()」などが使えるヨ|groovy。「Date().format('yyyyMMdd')」などが使えるヨ。※groovyスクリプトへのエクスポートもサポートしているので、groovyに慣れている人は、コッチで処理を確認した方が早いかも。|
|シナリオ作成の容易さ（トータル）|レコーディング機能が活用できる分、容易。レコーディング使わないならそこまで変わらないかも。|レコーディング機能が微妙なので、その分不便。レコーディング使わないならそこまで変わらないかも。|

##RPAExpressで苦戦したとこ
解決策は見つけられたのですが、四苦八苦したところです。

- 些細なこと1：コピペ（Ctrl+C/X/V）の操作が、狙ったところに出来ない・・・。
    - 指定したアクションのオプション設定値を選択してコピーしても、アクションがコピーされる。設定値をコピーしたいんじゃ！
- 些細なこと2：ExcelOpenアクションで、csvは開けない！
    - [csv to excel](http://www.vector.co.jp/soft/winnt/util/se460132.html) というフリーソフトを利用しました。（コマンド実行でExcel化）
- 些細なこと3：デバッグしにくい
    - ログ出力もなければ、ブレークポイントもない。
    - メッセージボックスやダイアログボックス等のインタラクティブなアクションも無い。
- 些細なこと4：リモート実行はバックグラウンド実行オンリー
    - マウス操作などは画像判別をしているため、バックグラウンドでは実行不可。
    - なのに、レコーディングはマウス操作を前提に記録される。いまいち・・・（マウス操作/ブラウザ起動/ウィンドウ操作などは避けましょう）
    - なので、コマンド中心で組み立てるのが望ましい。（クリック系/キー操作系/ブラウザ操作はNG。コマンド実行/Excel操作/ファイル操作は大丈夫でした。）
- 些細なこと5：Excel操作
    - 全てバックグラウンドなので結構高速なのはいい感じ。
        - ただし、ファイルサーバを直接指定した保存にはとても時間がかかる。（160kb/分くらいでした）
        - ローカルで保存して、サーバへコピーするという2アクションにしたほうが早い。
    - 再計算してくれてない・・・
        - 人が開いて再計算ボタンおすだけじゃダメ・・・（そもそも入力されたことをエクセルが認識していない？）
        - 人が開いてF2+Enterなら認識→再計算されるが・・・そこまでしなきゃダメかー・・・

**追記2018/01/17**
バッチを作ってbotに実行させると、バッチが完了する前に強制終了されてしまう。
その場合、画面右側のオプション＞Advanced＞WaitUpToの値を「バッチ処理の稼働時間」に設定する。
すると、ちゃんと最後まで実行してくれる。

##その他
上で触れられてない部分をつらつら書きます。

**インストール**
UiPathもRPAExpressもインストーラーに「はい」「はい」って答えるだけなので、インストールは難しくないです。
ただ、RPAExpressの方が要求する環境が厳しいのでご注意ください。（メモリ:8GB以上、OS:64bit）
あと、自分の環境ではそんなにインストールに時間がかかった記憶がないですが、1時間以上かかった（大半が待ち時間）って記事も見かけたので、ご注意ください。

**インストーラーの入手**
UiPathはダウンロードリンクが公式サイトにあります。
RPAExpressは登録フォームから申し込みすると、ダウンロードできるリンクをメールで送って来てくれます。
自分は割とすぐ返って来たのですが、1〜2日かかる人もいるらしい。

あと、RPAExpressのインストーラーはサイズが重いので、ご注意ください。
ダウンロードに30分以上かかった気がする。
（並行して複数ダウンロードはできないです。途中でキャンセルしても、ダウンロード実行中と判断されます。
　間違ってキャンセルしてしまった時は、1時間くらいあけてから再ダウンロードしましょう。）

**上位互換:機械学習**
「RPAExpress」を提供しているWorkfusion的には、高機能版は「WorkFusion SPA」だと言いたいっぽい[^9]。
無償版に満足できなかったらこっちにしてね、ということだろうか。
「WorkFusion SPA」は、機械学習[^10]の機能もついているらしいので、うまく定型化できない定型化っぽい業務は、解析よろしくさせるのも手かもしれない。
「RPAExpress」は機械学習できないので、ご注意を。

[^9]: 「[RPA Express Sunbird](https://kb.workfusion.com/display/RPAe/RPA+Express+Sunbird)」より
[^10]: 「[FAQ](https://kb.workfusion.com/display/RPAe/FAQ#FAQ-Comparison:RPAExpressandWorkFusionSPA)」より

**その他RPA**
近辺では「[WinActor](http://winactor.com/)」と「[BizRobo](https://bizrobo.com/products/basic.html)」の話をよく聞くので、機会があればそちらも試そうと思います。
（逆に、UiPathやRPAExpressの話を近辺では全く聞かない・・・なぜだ・・・無料でトライアルできるのに・・・）

個人的にはRPA業界で強いと言われている「[BluePrism](https://www.blueprism.com/)」と「[Automation Anywhere](https://www.automationanywhere.com/)」がどんなもんなのか知りたい。

[^11]: 「[How to Download trial Version of Blue Prism](https://forum.uipath.com/t/how-to-download-trial-version-of-blue-prism/11713)」より。（なぜUiPathのフォーラムでこの質問が？）

#さいごに
RPAってのは手段なので、そこを見誤らないようにしたいですね。
そもそも無駄な業務なら、業務を無くせばいい。
Excelの関数見直すだけでも効果出たりもする。

馬鹿正直にRPA化する前に、やることはいっぱいあるので、手段先行しないように気をつけましょう。
※合わせてこちらもご覧ください：[RPAを検討する人に知ってもらいたい「JenkinsでのWindows自動化」](https://qiita.com/nh321/items/629fbee4ae2a38a1480d)


以上でござる。

#合わせて読みたい

- [RPAって結局何なのか？どうやって選べば良いのか？](https://qiita.com/nh321/items/93bfdc9c242e18dd835d)


---

**参考記事**
RPAExpressに関する記事

- [完全無料のRPAツール WorkFusion RPA Express を手早く学ぶ・使うためのリソース一覧](http://www.cycle-g.info/entry/2017/11/26/%E5%AE%8C%E5%85%A8%E7%84%A1%E6%96%99%E3%81%AERPA%E3%83%84%E3%83%BC%E3%83%AB_WorkFusion_RPA_Express_%E3%82%92%E6%89%8B%E6%97%A9%E3%81%8F%E5%AD%A6%E3%81%B6%E3%83%BB%E4%BD%BF%E3%81%86%E3%81%9F%E3%82%81%E3%81%AE)：ガイドとかはこちらにまとまっております。
- [Robotic Process Automationをはじめよう＞workfusion関連](http://blog.livedoor.jp/rpa_tokyo/archives/cat_62233.html)：いくつか実践記事が乗ってます。

公式

- [UserGuide](https://kb.workfusion.com/display/RPAe/RPA+Express)：This is ガイド.
- [forum](https://forum.workfusion.com/c/rpa-express)：ログインしないと見れないです（UiPathに比べるとあまり盛り上がってない気がする）。あ、ログインのためにユーザ登録するなら、いっそインストーラーの申し込みすればいいと思う。

UiPathに関する記事

- [「RPAって何ができるの？」に対する超具体的な回答（UiPath）](https://qiita.com/nh321/items/329fd84682b9f49b2761)：手前味噌ですが、UiPathについて具体的に掘り下げてます。

RPA比較サイト

- [注目のRPAツール（概要、機能、価格比較）](https://kashika.biz/sps_rpa_tools_2017/)：ここの比較は参考になります。ただし、概要レベルでの比較なので、使い勝手等の詳細に関しては、実際に試して比べてみるのが良さそうです。

---