UiPathあなたに最適なFrameworkはどれ？

# はじめに

みなさん、こんにちわ！

今回は、UiPathのワークフローを開発する上で活用するフレームワークについて記事を書きます。

こちらからも、少しアップデートした記事をご覧いただけます。

https://www.fsi.co.jp/blog/5821/


フレームワークは会社で取り決めた開発標準のものを使うケースが多いと思いますが、
:point_up:使用するユーザーのレベルに適したもの
:point_up:運用に適したもの
:point_up:データの線形に適したもの
で、選択肢が多く存在します。

例えば、
:point_up:まだ経験の浅いユーザーには複雑で、高度な取り決めの多いフレームワークの使用は適さない
:point_up:Unattendedの全自動化を目指す場合、止まりにくい高度なフレームワークを使う
:point_up:キュー、メールデータ、表データなど、扱うデータでフレームワーク自体も異なるケースがある
などです。

UiPathマーケットプレースには数多いフレームワークが公開されているので、これらの観点で調査・検証して見ました。
本記事では、マーケットプレースのフレームワークを使って見てわかったこと、そしてフレームワークの機能のまとめを紹介したいと思います。

# 注釈
記載のフレームワークの中で、フレームワーク作成当時のバージョンが古く、UiPath Studio Community Edition 2020.4.1以降のバージョンで開くと自動マイグレーションが必要となり、その後、下記のエラーが発生する場合があります。
![読み込みエラー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/72cff979-dae7-57b3-1f2b-bd1b627ef7d5.png)
自動マイグレーションが走ると、UiPath.UiAutomationNext.Activitiesが入り、UiPath.UiAutomation.Activities18.3.6897.22543との組み合わせが悪い様です。
パッケージ管理からUiPath.UiAutomationNext.Activitiesを依存関係からアンインストールし、更に自動マイグレーションで入らなかったUiPath.Credential.Activitiesをインストールしてください。

# 紹介するフレームワークの種類
フレームワークの数が多いために、今回はマーケットプレースに公開されているUiPath社提供のものに絞ります。

![コレクション.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/f3006a14-b909-903d-a171-c8adc09d3180.png)

紹介は、簡単なフレームワークの順番で説明して行きます。

## （１）Attended Framework（日本語版あり）

簡単な枠組みと最低限の機能が入ったフレームワークです。
エラーハンドリングも入っていません。
フレームワークの中身が少なく自由度が高い分、例えば、既存のワークフローを本フレームワークに移植したい場合も比較的簡単に行えます。
基本的に下図のシーケンス「プロセス」に自動化する処理を入れる感じなので簡単ですね。
ビジネスユーザーがAttendedロボットを開発する際にフレームワークとして採用するのに適していると言えるでしょう。
UiPath社のUiPathメソドロジーのEUC版開発標準テンプレートにもAttended Frameworkが例として記載されていますね。
私も実運用で導入した経験があります。
マーケットプレースからダウンロードすると最近、日本語版も入っています。
[Attended Frameworkのダウンロードページ]
(https://marketplace.uipath.com/ja/listings/attended-framework)

**＜Attended Frameworkの構造＞**



![まとめ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/b5653d98-5417-cfed-5ade-8e57bb0f935e.png)

## （２）Local MiniFramework（英語のみ）

表形式のデータを起点としたシーケンス構造のシンプルなフレームワークです。
こちらは、Attended Frameworkの機能に加えて、エラーハンドリングが可能となっており、
シーケンスですが機能的には表形式のデータを起点としたReFrameworkの動きに似ています。
Attended Frameworkにエラーハンドリングを実装する際の参考になると思います。
シーケンスに慣れているユーザーにとっては、ReFrameworkより、かなり扱いが簡単です。

フレームワークはマーケットプレースからダウンロードします。
[Local MiniFrameworkのダウンロードページ]
(https://marketplace.uipath.com/ja/listings/local-miniframework)

尚、日本語版はありません。
下記の日本語になっているワークフローはマーケットプレースの[Workflow Translator](https://marketplace.uipath.com/ja/listings/workflow-translator)を使用して日本語版に変換したものです。グローバルのワークフローを日本でも活用できる様、私がマーケットプレイスに公開させて頂いたものです。

**＜Local MiniFrameworkのMain.xaml＞**
![basicFramework3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/94cd2417-0226-3246-2062-9cc9d0a45cf6.jpeg)

## （３）Queue MiniFramework（英語のみ）

このフレームワークはLocal MiniFrameworkが表形式のデータを起点とするのに対し、Orchestratorキューのデータを起点に動作します。
シーケンス構造のシンプルなフレームワークで、エラーハンドリングも可能となってます。
シーケンスですが機能的にはキューのデータを起点としたReFrameworkの動きに似ています。
シーケンスに慣れているユーザーにとっては、ReFrameworkより、かなり扱いが簡単です。
ただし、Orchestratorからの停止要求の受付る機能が入っていない様です。

フレームワークはマーケットプレースからダウンロードします。
[Queue MiniFrameworkのダウンロードページ]
(https://marketplace.uipath.com/ja/listings/queue-miniframework)

こちらも日本語版はありません。
下記の日本語になっているワークフローはマーケットプレースの[Workflow Translator](https://marketplace.uipath.com/ja/listings/workflow-translator)を使用して日本語版に変換したものです。

**＜Local Queue MiniFrameworkのMain.xaml＞**
![basicFramework3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/afb528a8-25eb-8f20-275c-17a8ec9d493c.jpeg)

## （４）日本語版ReFramework

大規模展開のベストプラクティスに準じたプロセスを自動化するのに向いているUiPath社が推奨しているフレームワークです。
ReFrameworkはUiPathアカデミーで誰でも無料で学習できるメリットがあり、認定資格でも使われます。
ここで紹介している「日本語版ReFramework」は標準のReFrameworkを日本語版にしたものですので、Orchestratorキューのデータを起点に動作します。
ステートマシンを使用した構造で遷移も複雑ですが、運用保守を見据えた機能が組み込まれているため、信頼性・保守性に優れており、プロフェッショナル向けのフレームワークと言えるでしょう。
私も実運用で導入した経験があります。

フレームワークはマーケットプレースからダウンロードします。
[日本語版ReFrameworkのダウンロードページ]
(https://marketplace.uipath.com/ja/listings/japanese-reframework)

**＜日本語版ReFrameworkのMain.xaml＞**
![Main.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/5ed5236b-88b3-538a-278f-222cdfc8f3a4.jpeg)

## （５）ReFramework for Tabular Data（日本語版あり）

このフレームワークは標準のReFrameworkがOrchestratorキューのデータを起点とするのに対し、表形式のデータを起点に動作します。
初期化処理では、下図の様に、ExcelまたはCSVのデータを読み込みます。

ReFrameworkは前述した通り、プロフェッショナル向けですが、この様にReFrameworkをデータの線形でパターン化していると、フレームワークを都度、カスタマイズする必要もなく、自動化したい業務の処理を入れる部分も、おおよそ決まっているため、難易度は格段に下がります。

マーケットプレースからダウンロードすると最近、日本語版も入っています。
[ReFramework for Tabular Dataのダウンロードページ](https://marketplace.uipath.com/ja/listings/reframework-for-tabular-data)

**＜ReFramework for Tabular Dataの初期化処理＞**
![初期化.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/7cdb6008-b860-f882-14e6-772cefe83d33.jpeg)

## （６）ReFramework for MailMessage Data（英語のみ）
このフレームワークは標準のReFrameworkがOrchestratorキューのデータを起点とするのに対し、メールのデータを起点に動作します。
デフォルトがExchangeServerとなっているので、メール環境が異なる場合は、カスタマイズが必要です。
・メールの設定データが格納されているConfig.xlsx
・初期化ブロックでメールデータを読み込むGetEmails.xaml
・プロセスブロックで処理したメールを移動するMoveProcessedEmail.xaml
・終了ブロックで処理したメールを全て開封済みにするMarkAsReadAllEmails..xaml
は少なくともカスタマイズが必要です。

フレームワークはマーケットプレースからダウンロードします。
[ReFramework for MailMessage Dataのダウンロードページ](https://marketplace.uipath.com/ja/listings/reframework-for-mailmessage-data)

こちらも日本語版はありません。
下記の日本語になっているワークフローはマーケットプレースの[Workflow Translator](https://marketplace.uipath.com/ja/listings/workflow-translator)を使用して日本語版に変換したものです。

**＜ReFramework for MailMessage DataのExchange関連アクティビティの使用部分＞**
![Mail箇所.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/83b95f17-f9f5-7097-4586-152c78f3bea8.png)

## （７）Enhanced ReFramework（英語のみ）
ReFrameworkを連結したイメージのフレームワークでメリットとしては、プロセスを跨ぐエラーハンドリングが可能と言ったところでしょうか。
TopレベルのReFrameworkから、初期化時に呼び出されるReFramework(**FirstRun**)、データ取得時に呼び出されるReFramework(**GetData**)、トランザクション処理時に呼び出されるReFramework(**Task1,Task2、・・・**)の構成となっており、全て同じワークフローの構造を持っています。
ただし、この個々のReFrameworkは、標準のReFrameworkと同じものではなく、例えば既存のReFrameworkで作成したプロセスをそのまま組み込むことは出来ません。
試使用しましたが、アーキテクチャーはReFrameworkと比較して、格段に複雑なため、ReFrameworkが上級者向けだとすると、Enhanced ReFrameworkは超上級者向けと言えるでしょう。そのため、少し一般向けではないかも知れません。
マーケットプレースでのダウンロード数は多いですが、実運用で使用されているかは不明です。

フレームワークはマーケットプレースからダウンロードします。
[Enhanced ReFrameworkのダウンロードページ]
(https://marketplace.uipath.com/ja/listings/enhanced-reframework-57011)

こちらも日本語版はありません。
下記の日本語になっているワークフローはマーケットプレースの[Workflow Translator](https://marketplace.uipath.com/ja/listings/workflow-translator)を使用して日本語版に変換したものです。

**＜ReFrameworkの連結イメージ図＞**
![main.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/9c2c6286-a1c0-ae08-f75f-471f07e92034.png)
**＜ファイル構成＞**
![enhancedFW2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/6123388b-8bc4-d5de-7399-2e01ce802b38.png)
# まとめ
ご紹介したフレームワークの機能を表にまとめて見ました。
UiPath社が公開しているフレームワークを検証した結果、運用保守を見据えて、下記の機能項目がベースになっている様です。

![比較表.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639319/4b4b03e8-9b3e-2b70-4541-b3c7498dbebf.png)

冒頭で記載したユーザーのレベルに適したもの、運用に適したもの、データの線形に適したもので、あなたに最適なフレームワークのヒントはありましたか。
現在お使いのフレームワークとの機能差でも、何かの参考にして頂ければと思います。