こんにちはシステムズエンジニアリングセンターの駒宮です。
8月末にUiPathハッカソンが開催されました。UiPathハッカソンでは6部門で募集があり、賞金総額は$91,000 USDです。私も有志でチームを作りCustomActivities部門にエントリーしました。
作成したのは、和暦を西暦に変換するアクティビティです。
下図のように和暦と西暦を変換することができます。
![](/blog/entry/6714/main/0/teaserItems1/01/binaryNodeName/localCalendarConversion.gif)
一見地味なこの拡張アクティビティのすごいところは、年号を自分で設定できるところにあります。日本は来年5月から新しい年号になりますが、このアクティビティを使えば、設定ファイルに一行書き加えるだけで新しい年号を追加できるのです!
詳しくはこちらをご覧ください → DEVPOST: LocalCalendarConversion
今回は、このように自作のアクティビティを作成する方法について解説します。まずは導入ということで、UiPath公式サイトのCreating a Custom Activityに沿って簡単な計算を返すアクティビティを作ってみましょう。
Microsoft Visual Studioより無償版のインストーラーをダウンロードします。
![](/blog/entry/6714/main/01/teaserItems1/00/binaryNodeName/vs_download_01.gif)
インストーラーを起動すると、ワークロードの選択画面が表示されます。.Net デスクトップ開発を選択します。
![](/blog/entry/6714/main/02/teaserItems1/01/binaryNodeName/vs_workload.gif)
続いてNuGet Package Explorerです。こちらのGithubからNuget Packageの最新zipファイルをダウンロードして解凍します。
![](/blog/entry/6714/main/03/teaserItems1/00/binaryNodeName/nugetPackage.gif)
次はいよいよ実装です。
Visual Studioを起動し、まず始めに新規プロジェクトを作成します。
1.ファイル>新規作成>プロジェクトを選択
![](/blog/entry/6714/main/05/teaserItems1/00/binaryNodeName/vs_project_01.gif)
2.Visual C#>クラスライブラリ(.Net Framework)を選択
名前に「MathSquqreOfSum」と入力して、OKをクリック
![](/blog/entry/6714/main/05/teaserItems1/01/binaryNodeName/vs_project_02.gif)
次にプロジェクトに参照を追加します。
1.プロジェクト>参照の追加を選択
![](/blog/entry/6714/main/06/teaserItems1/00/binaryNodeName/vs_project_03.gif)
2.「System.Activities」「System.ComponentModel.Composition」を追加しOKをクリック
![](/blog/entry/6714/main/06/teaserItems1/01/binaryNodeName/vs_project_04.gif)
続いてコーディングです。サンプルコードをそのまま使いましょう!
1.以下のコードをコピーペースト
using System; |
using System.Collections.Generic; |
using System.Linq; |
using System.Text; |
using System.Threading.Tasks; |
using System.Activities; |
using System.ComponentModel; |
namespace ClassMathCustomActivity |
{ |
public class SimpleFormula : CodeActivity |
{ |
[Category("Input")] |
[RequiredArgument] |
public InArgument FirstNumber { get; set; } |
[Category("Input")] |
public InArgument SecondNumber { get; set; } |
[Category("Output")] |
public OutArgument ResultNumber { get; set; } |
protected override void Execute(CodeActivityContext context) |
{ |
var firstNumber = FirstNumber.Get(context); |
var secondNumber = SecondNumber.Get(context); |
var result = System.Math.Pow(firstNumber + secondNumber, 2); |
ResultNumber.Set(context, result); |
} |
} |
} |
2.ビルド>ソリューションのビルドを選択
![](/blog/entry/6714/main/07/teaserItems1/02/binaryNodeName/vs_project_05.gif)
3.ウィンドウの出力でDLLファイルがビルドされたことを確認
![](/blog/entry/6714/main/07/teaserItems1/03/binaryNodeName/vs_project_06.gif)
…\bin\Debugに出来ます。
先ほど作成したDLLファイルをNuget Package Explorer でPackageに変換します。
あと少しです!
1.先ほど解凍したフォルダからNuGetPackageExplorer.exeを実行します。
![](/blog/entry/6714/main/08/teaserItems1/00/binaryNodeName/mk_nupkg_01.gif)
2.「Create a new Package」を選択
![](/blog/entry/6714/main/08/teaserItems1/01/binaryNodeName/mk_nupkg_02.gif)
3.右の枠で右クリックし、「Add Lib Folder」を選択
![](/blog/entry/6714/main/08/teaserItems1/02/binaryNodeName/mk_nupkg_03.gif)
4.libを右クリックし、「Add Existing File」を選択
![](/blog/entry/6714/main/08/teaserItems1/03/binaryNodeName/mk_nupkg_04.gif)
5.先ほどビルドしたDLLファイルを選択
![](/blog/entry/6714/main/08/teaserItems1/04/binaryNodeName/mk_nupkg_05.gif)
6.Edit>EditMetadataを選択
![](/blog/entry/6714/main/08/teaserItems1/05/binaryNodeName/mk_nupkg_06.gif)
7.MetadataのIDに「ActivitiesCustomMathFunction」と入力し、左上のチェック(決定ボタン)をクリック
※IDに「Activities」は必須とのことです。
![](/blog/entry/6714/main/08/teaserItems1/06/binaryNodeName/mk_nupkg_07.gif)
8.File>Saveで適当な場所に保存します。
今回はデスクトップに「ActivitiesCustomMathFunction」というフォルダーを新規作成、そこに保存しました。
![](/blog/entry/6714/main/08/teaserItems1/07/binaryNodeName/mk_nupkg_08.gif)
いよいよUiPathStudioに拡張アクティビティを追加します!
けっこう長い道のりですよね…
1.Manage Packagesをクリック
![](/blog/entry/6714/main/09/teaserItems1/00/binaryNodeName/studio_01.gif)
2.左のパネルで右クリックし「Configure Sources」を選択
![](/blog/entry/6714/main/09/teaserItems1/01/binaryNodeName/studio_02.gif)
3.「+」をクリックでPackage sourceを追加したら、「…」をクリックします。
![](/blog/entry/6714/main/09/teaserItems1/02/binaryNodeName/studio_03.gif)
4.フォルダー参照ダイアログが表示されるので、先ほどPackageを保存したActivitiesCustomMathFunctionフォルダを選択します。
![](/blog/entry/6714/main/09/teaserItems1/03/binaryNodeName/studio_04.gif)
5.Nameは任意です。「CustomMathFunction」とでもしましょう。OKをクリック!
![](/blog/entry/6714/main/09/teaserItems1/04/binaryNodeName/studio_05.gif)
6.Availableに追加された「CustomMathFunction」を選択し、「Install」をクリック!
![](/blog/entry/6714/main/09/teaserItems1/05/binaryNodeName/studio_06.gif)
7.Activityパネルに「ClassMathCustomActivity > SimpleFormula」が見事追加されました!
おつかれさまです!!
![](/blog/entry/6714/main/09/teaserItems1/06/binaryNodeName/studio_07.gif)
いかがでしたでしょうか?最後までついてこれましたか?私は初めてやったときは辿り着くのに1日かかりました…
拡張アクティビティ作成には他にも様々なノウハウがあります。こちらについても今後、お伝えできればと思います。例えば…
- Visual Studio でアクティビティのテスト環境を構築する
- nupkgのバージョン管理をする
- アクティビティの見た目を変える
- REST APIを利用する
最後まで読んでいただきありがとうございました。