【UiPath】ライブラリを利用して効率化しよう！

## はじめに

UiPath Studioでライブラリ作成を試してみたので手順を紹介します

### この記事でできること


- UiPath Studioでライブラリを作成して利用できる
- **Orchestrator**環境でのライブラリ使用ができる
- ローカル環境でのライブラリ作成ができる


### この記事の対象者

- UiPath Studio開発者


### 動作環境

- Windows10
- UiPath Studio v2023.10
- UiPath Orchestrator管理下の組織


## ライブラリとは

**業務システムへのログイン**や**特定の人へのメール送信**など、RPAを開発する際によく実装する処理があると思います。

毎回1から実装していては工数もかかって大変な上、もし業務側の仕様が変わった際の**保守が大変**です。
UiPathには、それらの共通機能をまとめて**アクティビティ化**し、再利用・管理ができる**ライブラリ**が用意されています。

**ライブラリはOrchestratorにパブリッシュすることでチーム全体で共通化可能です。**

業務アプリへのログイン処理をライブラリにすると
以下のように複数の処理を1つのアクティビティにできます。
```mermaid
flowchart TD
subgraph "業務アプリにログインする処理"
  A[業務アプリを開く] -->
  B[ログイン部分にフォーカスする]-->
  C[ログイン情報を入力する]-->
  D[ログインボタンを押す]
end
E[ライブラリ<br>業務アプリにログインする]
```


## ライブラリのパブリッシュ場所

目的に応じて2通りのやり方があります。

- **Orchestrator環境**にパブリッシュして開発チーム全体で使う
- **ローカル環境**にパブリッシュして個人レベルで使う

ライブラリを使いたい場合は基本的にチーム運用が多いと思いますのでOrchestrator環境をメインに説明します。

自分のみの開発であればローカル、または**スニペット**という機能もあるので使い分けるといいと思います。


## ライブラリを作成する
Orchestratorにライブラリをパブリッシュすることを想定して手順を説明します。
入力された文字列に`Hello!`を追加してログ出力するライブラリを作成してみます。

### 新規プロジェクトとしてライブラリを作成する

UiPath Studioのスタート画面から`ライブラリ`を選択してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/04c5921b-e6e8-43d5-ae25-70fff457f7ce.png)


#### ライブラリの情報を決める

`新しい空のライブラリ`が立ち上がるので以下を入力していきます。
- `名前` ライブラリの名前です。ライブラリ使用時に表示されます
- `説明` ライブラリの説明として使われます
- `場所` ライブラリの元となるxamlファイルが保存される場所です
- `対応OS`
- `言語`

入力できたら`作成`しましょう。
 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/854172c7-23c7-1048-08b4-6c4bf3f1faaa.png)

### ライブラリの中身を作成

ライブラリプロジェクトが立ち上がりました。ここにライブラリにしたいアクティビティを作り込んでいきます。

`NewActivity.xaml`が作成されます。まずは名前を変更しましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/95e8f589-a406-5591-633c-2b282213dbb8.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/5f9f24a4-3c43-9725-cc3e-d5057a4d8814.png)


ライブラリの中身を作り込んでいきます。


アクティビティとして使用するので基本的には入力引数が必要になります。
引数パネルで文字列の入力引数を作成しておきましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/88cb9816-3b13-548e-6e2c-8cc1d1fb1d26.png)

`メッセージをログ`を追加してみましょう。


```vb
"Hello!"+In_String
```


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/9bd6b275-8cdf-c094-7c78-d18dfa97ceb5.png)

### アクティビティのレイアウトを設定する

ライブラリは使用する際、他のアクティビティのように扱います。
表示などを`アクティビティのレイアウト`で変更しましょう。
`ハロー追加ログ.xaml`を右クリック→`アクティビティのレイアウト`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/10109aff-5811-8ce5-08d3-241e48057627.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/b8d5b6e1-f427-d7d2-3676-ea0eadb4e5e5.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/0ac1b9f6-bd50-e733-a331-4ca0561844b6.png)

`プロパティ`が立ち上がるので以下を入力していきます。
- ①`表示名` ライブラリの名前です
- ②`ツールチップ` アクティビティにマウスホバーしたとき表示されます
- ③`ヘルプリンク` ヘルプを開いた時にアクセスされるURLです。自作の場合はあまり使わないと思います
- ④`SVGアイコン` アクティビティのアイコンをSVG画像で変更できます。設定するとプロジェクトフォルダ内に格納されます
- ⑤`新しいカテゴリ` 引数をグループ化できます
- `色` 色が変わります。規定の色で基本OKです


引数それぞれにもプロパティを設定できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/7b41157c-847f-f767-088e-70705a219928.png)
- ⑥`表示名` 引数の表示名です。デフォルトでは引数がそのまま入っています
- ⑦`ツールチップ` 表示名にマウスホバーしたとき表示されます
- ⑧`入力の種類` ユーザーの入力をどう受け付けるかです。テキスト作成ツールが入っています
- ⑨`プレースホルダー` 入力欄にあらかじめ表示しておく値です
- ⑩`必須` ユーザーに入力を必須にするかどうかです
- ⑪`詳細設定にのみ表示` プロパティパネルにのみ表示するかどうかです

いきなり出てきても意味が分からないと思うので既定で用意されているアクティビティを例に説明します。
メッセージボックスを例に**レイアウトの設定とどこが対応しているかを番号で指します**。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/2da46a99-c07f-9a88-bf41-1d74dd8654f9.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/fb78e75c-3db3-ab06-87b5-adf49695f52f.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/4bfcf1ab-d401-96a2-c826-9da2ff62bf8f.png)

:::note warn
なお、最後どういう見た目になるのかはパブリッシュしないと分からないみたいなので確認はプレリリースを活用しましょう。
:::

### オプション変更
ライブラリのプロジェクト設定から各設定を変更できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/7ebf0c3b-757c-706d-a3d1-7ca56ef07be6.png)

#### パッケージのアイコン


パッケージのアイコンはライブラリをプロジェクトに導入する時に表示されるアイコンです。※画像の`Ui`の部分
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/37591a0d-bda1-7f18-a964-2f9ddd157681.png)

指定しない場合はデフォルトになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/b1aaae67-9abe-3476-6a21-50006620cff9.png)

:::note warn
指定しておくと視認性が良いですが、ローカルファイルの場合(プロジェクト内含む)の画像を指定しても表示されない場合があります。
その場合は、WEB上の画像URLを指定すれば反映されます。
:::

https://docs.uipath.com/ja/studio/standalone/2023.10/user-guide/about-automation-projects#adjusting-project-settings

> Orchestrator または埋め込みアイコンがサポートされていないフィードにパブリッシュするライブラリのアイコンとしてローカル ファイルを使用すると、アイコンは [パッケージを管理] に表示されません。この場合は、URL を使用してアイコンを指定します。


## Orchestratorにライブラリをパブリッシュする


`UiPath Orchestrator`を導入している組織の場合、Orchestratorにパブリッシュすることで開発者間でライブラリを共有できます。

保存してパブリッシュしてみましょう。Studioのデザインタブから`パブリッシュ`を選択しましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/83dc4465-01cd-7050-c7c8-5d04b2174bb2.png)

### ライブラリの情報を記載する

`ライブラリをパブリッシュ`画面が立ち上がります。`ライブラリ情報`を記載しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/93d5dd2a-cda4-0316-2ed6-51d9d09838fd.png)


パッケージのアイコンはここでも指定できます

### パブリッシュする


`パブリッシュのオプション`の`パブリッシュ先`を`Orchestrator テナント ライブラリ フィード`を選択してください。
`未使用の依存関係を削除`にチェックを入れておきましょう。ライブラリに関係ないパッケージが削除されるので軽くなります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/9bede49d-4a38-af35-a7dc-7c42ad4c1833.png)

#### エラーが出た場合

組織ごとの設定にもよりますが、次のようなエラーが出るかもしれません。

`エラー:OrchestratorへのProcessプロジェクトのパブリッシュに失敗しました。パッケージ共有フィードにはパブリッシュできません`


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/498db47f-049d-a159-c294-7bb8c5ecc40b.png)

その場合、Orchestratorで設定を変更する必要があります。

`テナント`→`設定`→`デプロイ`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/ffb704c1-3fe6-8fc0-b823-b6dddc5f4d4a.png)

`ライブラリ`の`フィード`を`テナントフィードのみ`に変更する→保存

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/16ad518d-0f0f-c06b-7d99-26e2fefb6179.png)

#### パブリッシュ成功

パブリッシュに成功した場合、メッセージが表示されます。以降はエラーが表示されなくなるはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/bb0cb2e9-b073-6c3c-6282-4a78df18d643.png)


### パブリッシュ確認

パブリッシュされたかを**Orchestrator**で確認しましょう。

### ライブラリの削除方法

**Orchestrator**にパブリッシュしたライブラリは**Orchestrator**上で削除可能です。

`テナント`→`パッケージ`→`ライブラリ`でライブラリの右端を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/2ec9e855-33bf-517a-f8d0-6ceedc961e67.png)

`削除`を選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/6f537cc3-4b5a-afb6-c2b6-8ff1ce585adf.png)


## 作成したライブラリを使用する

作成したライブラリを使用してみましょう。

ローカルにパブリッシュした場合でも**Orchestrator**にパブリッシュした場合でも基本的に同様です。
※ローカル特有の手順は後述

### 新規プロジェクトを作成

Studioを念のため再起動し、ライブラリを使用するため、新規プロジェクトを作成してみましょう。

### ライブラリをインストール
作成したライブラリを使用するためにはパッケージのインストールが必要です。

デザインタブから`パッケージを管理`を開く。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/d4d2b770-d908-e1b4-6a08-d51969bb2e07.png)

`Orchestrator テナント`を選択してください。

作成したライブラリが表示されているので`インストール`をクリックして`保存`してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/8fbcaca9-0958-d29b-2bab-61f06f8db3cc.png)

:::note warn
**プレリリースした場合、ライブラリが表示されない**可能性があります。
その場合はフィルターを選択して`プレリリースを含む`にチェックを入れると表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/3bafb654-5409-78c7-465b-09155d041ba4.png)

:::

### ライブラリのインストール確認

Studio画面に戻ります。アクティビティパネルの`インストール済み`を見てみましょう。
`おためしライブラリ`の中に`ハロー追加ログ`が表示されているはずです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/292d2a91-df62-4758-a565-714c0ef0ed8c.png)

### ライブラリをアクティビティとして使用する

後は通常のアクティビティと同じように扱うことができます。メインシーケンス内に配置してデバッグしてみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/ea1b9cf7-45cd-a906-8a5b-c6c74e84931d.png)

**無事に`Hello!`が追加されてログとして出力されました！**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/762660d1-d3cc-0dea-edf3-5f8ddfca5aa2.png)

## 補足：ローカル環境にパブリッシュして使用する

ローカル環境にパブリッシュして個人で使用する場合、微妙に異なる箇所があります。

### パブリッシュ場所の決定

`パブリッシュのオプション`の`パブリッシュ先`選択時に`カスタム`を選択してください。

`カスタムURL`にローカルの保存場所を指定してください。
**なお、他のローカルライブラリもこの保存場所に保存することを想定してください。**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/818f7445-9405-e8e6-3665-8afedf9b2389.png)


`パブリッシュ`を選択してください。

`正常にパブリッシュされました`と表示されれば完了です。

### ローカルライブラリを使用する
基本的にはOrchestrator上にパブリッシュした場合と同じですが、パッケージインストール時に一手間必要です。

`パッケージを管理`→`設定`から先程ライブラリを保存したローカルパスを`ソース`に入力し、名前を付けて追加してください。
`ユーザー定義のパッケージソース`として新しく`個人作成`が表示されていれば成功です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/dc94e403-782c-f4d2-65a3-4985baecdc04.png)



その後はOrchestrator上にパブリッシュした場合と同じです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/80593525-0672-4536-8559-44cb2f8c746e.png)


### ローカルライブラリの削除方法

ローカルにパブリッシュされた後のライブラリの実体は`.nupkg`ファイルとして保存されています。
**ライブラリを削除する時はこちらを削除すればOKです。**


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/d7be503d-bc0e-9652-1677-1b99352b4d67.png)

**削除後も使用したプロジェクトには保存され続けているので使用可能です。**
**ただし、パッケージ管理画面を見ると実体がないため一度アンインストールすると復活しません。**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3755504/95c6fb9e-d6ec-db1a-b78a-95b220399926.png)


## 参考資料

https://docs.uipath.com/ja/studio/standalone/2023.10/user-guide/about-libraries

https://www.cresco.co.jp/blog/entry/16256.html

https://forum.uipath.com/t/automation-cloud-orchestrator-orchestrator/726878

## まとめ

UiPath Studioのライブラリの作成方法と使用方法を紹介しました。

ライブラリにすることで初心者でも上級者が作成した機能を簡単に実装してもらうことが可能です。
アクティビティとして囲ってしまうので可読性が良いロボットになると思います。

また、一度自分でライブラリを作成することで**UiPathのアクティビティがそれぞれどういう構造なのかをつかむことができます。** 理解を深めるために作ってみることを強くおすすめします！

ライブラリ自体の管理方法などは組織によって最適解は異なるので組織内でルールを決めて活用していきましょう！