UiPath Activity Creatorを使ってみる(その１：導入)

#概要
　このドキュメントはUiPath Activity Creatorの使い方に関するものです。もともと昨年リリースされたバージョンを使ってカスタムアクティビティを作成した経験がありましたが、この３月にちょうどハッカソン参加者向けのWebinarがあったこともあり、最新版ベースの内容でまとめております。なお特に断りのない限り2020年3月時点のバージョンに基づき記載しております。（注：３月から４月にかけて頻繁にバージョンアップが行われています。対象バージョンは2.1.xおよび2.2.xになります。）

#UiPath Activity Creatorとは？
　UiPath Activity CreatorはUiPathのカスタムアクティビティを簡単に作成するためのVisual Studio Extensionです。以前はUiPath Activity Setという名前でしたが、機能強化とともにUiPath Activity Creatorとなりました。2020年3月現在のバージョンでは、Visual Studio 2019用となっております。（2017以下では動作しません。）
　以下のUiPath Connect!のマーケットプレイス上のページに最新情報等があります。
https://connect.uipath.com/ja/marketplace/components/activity-set-creator

#UiPath Activity Creatorの主な機能とこれが必要となる人
　UiPathのカスタムアクティビティの作成方法には主に２つの方法があります。
　ひとつはUiPath Studioの機能として用意されているライブラリ機能を使う方法です。この機能はUiPathのワークフローをそのままカスタムアクティビティにできますので、単純な要件のものであれば、こちらで事足るケースも多いと思われます。
　もう一つはVisual Studio等の開発ツールを用いて、作成する方法です。こちらはライブラリ機能と比べると、UiPath (Studio)の制限にとらわれることなく、自由に機能を実装できます。しかしながらその実装には、C#といった言語知識や、UiPathがベースとしているWindows Workflow Foundationの知識等が必要になってきます。そのため、一般的には相応の高度な知識が必要とされます。
　UiPath Activity Creatorは後者の実装方法に対するハードルを下げるためのVisual Studio Extensionになります。具体的には以下のようなことが準備されています。
- アクティビティの各種設定（単体 or Scopeやプロパティ等）が可能なWizard
- 非同期動作が可能かつ利便性を高めた独自クラス
- 多言語化（国際化）可能な設計
- Designer周りの設定・ファイル
- nupkg周りの設定・ファイル

　非同期処理や高度なデザインといった機能が必要な場合は、Visual Studioでの開発が必要になりますが、UiPath Activity Creatorの利用により生産性向上や技術的ハードルを下げることにつながるかと思います。逆にこのような機能が必要ないケースは、あえてこれを使う必要はなく、Studioのライブラリ機能で十分かもしれません。


#UiPath Activity Creatorの導入

1. Visual Studioのメニューから拡張機能→拡張機能の管理を開きます。
2. Visual Studio Marketplaceが選択されている状態で、検索窓にUiPathと入力します。
3. 下図のようにUiPath Activity Creatorがヒットしますのでこれを導入します。
![uac1-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/477147/cd08126a-0eb5-122b-d6ea-d5bdc0adb889.png)

これで導入は完了です。

#プロジェクトの作成

導入が完了したら、さっそくプロジェクトを作成してみましょう。
Visual Studio 2019のスタート画面から「新しいプロジェクトの作成」を選択します。
![uac1-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/477147/125bd2b8-090b-c511-d601-4115d1996e1f.png)

次に適用するテンプレートを選択します。右上の検索窓から UiPath と入力すると、UiPath Standard Activity Projectがヒットしますので、これを選択します。
![uac1-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/477147/63d413df-dc96-03e8-923c-6b0b49bb8c2e.png)

プロジェクト名を入力して、完了です。
![uac1-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/477147/f8bb802e-a74f-a5ef-f7e5-c092d986b4ff.png)

最終的にプロジェクト内に、下図のようなプロジェクトの骨格と、共有ライブラリが配置されます。
![uac1-5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/477147/1cfe6726-5dd1-46c3-a38b-0d2e6a89e927.png)


#Wizardの利用

　前章で導入したテンプレートだけでも、機能面としてはかなり強力なのですが、さらに利用に際してのハードル低下や生産性向上を実現するためのWizardが用意されています。
　ソリューションエクスプローラーで、作成したプロジェクト名配下のファイル（Sharedのフォルダではないファイル）にフォーカスが当たっている状態で、拡張機能→UiPath→Add Activityを選択します。

![uac1-6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/477147/7d52427f-2a47-9103-64a0-8f04d062b8f0.png)

下図の通り、CreateかImportを選択する画面が出てきます。
![uac1-7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/477147/7881114e-b380-5185-0be0-7f0645737945.png)

最初なのでCreateを選択します。
下図のアクティビティの設定画面が出てきます。追加する場合は＋マークをクリックします。

![uac1-8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/477147/0c9bbd3e-78f9-cd7f-46a8-66dfeabf1049.png)

入力可能になりますので、必要事項を入力していきます。
なおTypeの部分はSimpleとScopeが選択できます。
![uac1-9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/477147/8a19a6d0-df05-b3b9-dd0d-5c044c36bb02.png)

Propertyの編集ボタンをクリックすると以下の画面が出てきますので、そのアクティビティのプロパティの定義を入力していきます。
![uac1-A.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/477147/3106ceea-3f6e-9820-f4f9-59fbfb2d9e32.png)

入力が終わったら右下のFinishをクリックします。
![uac1-B.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/477147/32b9e1fa-30ca-dc50-0a29-e76e0262936d.png)

以下のように自動的にコードが生成されます。
![uas1-C.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/477147/92390dc9-5ec4-df6c-5f0e-a55de6dd9093.png)

ロジックは自分で記述する必要がありますので、これをベースに記述していきます。

次回以降は高度な機能の実装について記述したいと思います。

（その１終わり）

その１　[その２](https://qiita.com/SuetakeYoichi/items/e4383318bfc09de0db51)　[その３](https://qiita.com/SuetakeYoichi/items/29278e6b9c5621fd2358)　[その４](https://qiita.com/SuetakeYoichi/items/117126227867d580d590)　[その５](https://qiita.com/SuetakeYoichi/items/12369209ab6fc5807ddc)　[その６](https://qiita.com/SuetakeYoichi/items/1c3f8ce5feec4c1bb36f)