運用中のプロセス名の変更にまつわる話

## 皆もすなるQiitaといふものを、儂もしてみむとてするなり。

と言う訳で、こん＊＊は！はなっち！です。

四月。それは多くの会社の年度初め。
四月。それは異動のシーズン。そして、部門の統廃合。。。

ロボットを作る際、他部門との重複を避けるために、プロセス名に部署名を頭に冠したりしますね。無論、部署コードみたいのがあったら、それを冠したりして…
それは、あとでどの部署のロボットなのかが認識できるようにしているためで、これは**有り**だなと考えていました。四月を迎えるまではね

- - - 
## 【序章】
四月になって、その部署の名前が「Ａ部Ｘ課」から、『Ｂ部Ｘ課』になったので、どうしたらいいのか？という相談を受けました。無論、
1. "Ａ部Ｘ課_〇〇業務"のロボ資産を用意してください。
1. その中にある"project.json"中の"Name"を書き換えてください。
1. そののち、UiPath Studioでロボを開いて、Orchestratorに対してPUBLISHしてください。

と言う指導になる訳です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/3a803130-6c46-da0e-1a61-4dd4fb9edef7.png)
↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/06669868-fc60-bda0-4215-7a9a5c21fa03.png)

**ところが、このロボットは部署の方が作成したものではなく、ベンダーさんに作ってもらって、一度相談したんだけど、契約が出来なくて困っているとの事。**
部署名が存在しないロボットをそのまま使い続けるか、それはそれで違和感あるよね？では今回の事例のようにロボットを作った事が無い人に対応させるの？それは仕方ないよね？...と言うような議論が繰り広げられる訳で...

- - - 
## 【本題】
"PUBLISH"する行為は、プロセスで必要な情報をまるごと.nupkgというファイルにまとめて、更に.nupkgとしての体裁情報を付加するものです。(詳しくは、[**NuGet の概要**](https://docs.microsoft.com/ja-jp/nuget/what-is-nuget)を参考ください)

だったら、このプロセス名の情報は、その.nupkg中に含まれているはず！と言う推察のもの、いじってみました。

**①変更対象とするプロセス名を入手する。**
　ロボット資産そのものを入手できればいいのですが、Orchestrator上で運用しているVersionと合致しているものであるとは限りません。ですので、Orchestrator上からDownloadするのが手っ取り早いでしょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/dec581c0-27aa-f5f9-6fe6-698a93f4adae.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/88c2072b-29e4-28e9-32db-da682d2d12c1.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/0f584350-70cb-7712-e55d-398a87a1c257.png)

**②NuGet Package Explorer を準備する**
「NuGet Package Explorer」は、MS社が開発者ツールとして公開しているプログラムです。([NuGet Package Explorer - Microsoft Store アプリ](https://apps.microsoft.com/store/detail/nuget-package-explorer/9WZDNCRDMDM3?hl=ja-jp&gl=JP))
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/fccf3613-0967-1f03-2ac8-94d391d631d7.png)

**③NuGet Package Explorer で、.nupkgを開く**
開くと、"ID"タグのところにある文字列が、プロセス名である事がわかります（例図では、"HELLO_MESSAGE"です）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/d1b3e4ff-d728-6183-b88d-a71931161c0c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/5c4aca9c-0bee-a032-d83d-1220e540724a.png)
**④開いた.nupkgの"ID"タグの値,"Title"タグの値を変更する**
Edit -> Edit Metadataにて、"ID"タグの値、"Title"タグの値を変更します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/f5b4927f-105b-e8ad-52f8-1fab66e549d2.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/2bcd59fc-847e-e0a1-90eb-631a52234693.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/c0d885f0-9aa0-af0b-e333-21b96b0cfd39.png)

**⑤開いた.nupkg中にある、UiPathで必要な"Project.json"中の"name"を変更する。**
NuGet Package Explorer上でエディタを起動し、そこで変更し、保存します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/4549022e-665d-3c39-21df-7f7b04e2df55.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/39d00b6f-2142-10f4-0b65-b5bb7b4421e2.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/09d92902-e645-f650-6b52-30db2b67fe5b.png)

**⑥開いた.nupkgの修正内容を反映する。**
変更を加えただけで閉じてしまっては意味がありませんね。File -> "Save As..."（名前を付けて保存）します。その際、保存ファイル名が、新しいプロセス名になっている事を確認しましょう！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/c0d8ad9d-b14c-c20c-84a4-f8a48a39e476.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/a492c56f-ca9b-da2e-3e11-79cb11db53dc.png)

**⑦PUBLISHの代わりに、アップロード**
アップロードする際に、既にパッケージが有っては元も子もないですね。検索機能を使って、アップロードするプロセス名がない事を確認しましょう！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/81697c67-1505-34a3-8c69-11acb3058d61.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/bd1482bb-ae3b-053c-2ad7-3b02d351522e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/6a3cd2e3-da31-dbdd-5422-9a519b2a9351.png)
**⑧プロセスと、実行パソコンとの関連付けをします。**

- - - 
**【終章】**
あとは、Assistantでの操作になります。
新規ロボットと同じように、インストールをし、CONFIG.xlsxなどがあったら、試験系の設定に変更し、実行です。

- 関連付け前
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/836e67aa-2b40-b846-c500-9e2cfee222e9.png)
- 関連付け直後
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/462205e1-73c3-71b9-91f4-0d8d65954638.png)
- 実行確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/669015/bf8c144b-f48a-d460-36db-cb5d8ead14c0.png)
ダミーロボットだったかもしれませんが、無事に正常終了しました。


- - - 
## 【まとめ】
- ダミーで作ったプロセスを対象に実験してみました。成功したのは、たまたまかもしれません。部署異動などに伴うプロセス名の変更は、やはりロボット資産から行った方が安心ですね。
- とは言え、ロボ資産がなくなってしまった！などのアクシデントに備えて、知識としてこういう事で成功した事例があったって事を覚えていただけるといいですね。
- そもそも部署名をプロセス名に冠するのはダメぢゃん！って方は、是非命名ルールなどを教えていただければ幸甚です。

- - - 
## おわりに
いかがでした？

ここに至るまで、.nupkgファイルをZIP解凍して、その内包ファイルを開いてみてました。.nupkgファイルをZIP解凍すると、日本語ファイル名はURL Encodeされてしまって、ファイル名の解読しづらかったものです。project.jsonからの情報収集には、ZIP解凍はもってこいなんですが...

今回も読んでいただきありがとうございました！
是非UiPathでのロボ開発の一助になればと思っています。

ありがとうございました！