UiPathのソースをGitHub等に公開する前に気を付けること～情報漏洩しないために

# はじめに
UiPathではGitHubなどと連携してのソース管理が可能で、個人やチームでのソース管理が簡単に行えます。しかし、自分で作ったソースを他人の目にさらす前に、最低限ここはチェックすべし！というところを押さえてから公開しましょう。ソース管理システムは一度コミットしてしまうと、修正は効くものの履歴が残るため、過ちはずっと履歴に記録されたままとなってしまいます( ;∀;)
そうならないように、気を付けましょう。

# UiPathソースの特徴と注意点
UiPathのプロジェクトはパソコンの `C:\Users\<ユーザー名>\Documents\UiPath`の下に作成されます。この場所を開いてみると、プロジェクトごとにフォルダーが掘られているのがわかります。

UiPath Studioで見ると、左側のプロジェクトパネルにツリー上で表示される構造とほぼ同じファイル構造がフォルダーの中に広がっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/490819/f3d67cf5-0abe-bf60-f532-16a5cd688e7b.png)

一般的な注意点として<font color="red">**UiPathではシーケンス内で使われていない情報もプロジェクトソースファイルの中に保持してしまうようです。**</font>これは、うっかり情報を完全消去しないように後で取り出せるための工夫かもしれないですが、他人に公開する場合はこの手の情報が残ったまま公開してしまうと、見られてはいけないものをうっかり他人にさらすことにもなりかねません( 一一)

これらの中で主に注意すべき種類のファイルは以下の3種類あります。

### 1. シーケンスファイル等 (.xaml)
シーケンスやフローチャートの情報を保存するXAML形式のファイルは2つの点を注意する必要があります。まず、**使われていない.xamlファイルがそのまま保持されている**可能性があります。XAMLファイルの中を一つずつチェックして、完全に使われていないものは削除してください。

また、使われているXAMLファイルの中でも**メインのシーケンスにつながっておらず使われていないアクティビティ等が残っている**場合があります。これらも探し出して削除しておきましょう。

### 2. スクリーンショット (.screenshots配下のファイル)
こちらも画像ファイルを一つずつ開いてチェックしましょう。画面レコーディングで参考スクリーンショットを撮った時に、**失敗して撮り直しても昔の画像がこの場所に保管されている**場合があります。スクリーンショットにはパソコン上の様々な情報が映っている可能性があるので、個人を特定する情報や顧客情報など、意図しないものが入っている可能性があります。

### 3. 依存関係 (.local配下のファイル)
以下のファイルがあります。

```:.local\.
AllDependencies.json
nuget.cache
nuget.cache.backup
PackageCache.json
ProjectSettings.json
Scraping.nuget.props
db
┗ references.db
```
この中で、**ユーザー名が入っているローカルパスが含まれている**ファイルは`AllDependencies.json`と`PackageCache.json`の2つです。

`AllDependencies.json`はファイルの後ろの方の以下の部分です。

```JSON:AllDependencies.json
...
  "packageFolders": {
    "C:\\Users\\*****\\.nuget\\packages\\": {}
  },
  "project": {
    "restore": {
      "projectUniqueName": "Scraping",
      "projectName": "Scraping",
      "projectPath": "C:\\Users\\*****\\Documents\\Scraping\\.local",
      "packagesPath": "C:\\Users\\*****\\.nuget\\packages\\",
      "outputPath": "C:\\Users\\*****\\Documents\\Scraping\\.local"
    },
...
```
`PackageCache.json`は、パッケージの数だけ繰り返します。

```JSON:PackageCache.json
...
    {
      "Package": {
        "Id": "UiPath.Mail.Activities",
        "Version": "1.8.3-beta.865074"
      },
      "Assemblies": [
        "C:\\Users\\*****\\.nuget\\packages\\bouncycastle/1.8.5\\lib/BouncyCastle.Crypto.dll",
        "C:\\Users\\*****\\.nuget\\packages\\interop.domino.dll/1.0.0\\lib/Interop.Domino.dll",
        "C:\\Users\\*****\\.nuget\\packages\\microsoft.exchange.webservices/2.2.0\\lib/40/Microsoft.Exchange.WebServices.Auth.dll",
        "C:\\Users\\*****\\.nuget\\packages\\microsoft.exchange.webservices/2.2.0\\lib/40/Microsoft.Exchange.WebServices.dll",
        "C:\\Users\\*****\\.nuget\\packages\\system.valuetuple/4.5.0\\lib/net461/System.ValueTuple.dll",
        "C:\\Users\\*****\\.nuget\\packages\\uipath.mail.activities/1.8.3-beta.865074\\lib/net461/MailKit.dll",
        "C:\\Users\\*****\\.nuget\\packages\\uipath.mail.activities/1.8.3-beta.865074\\lib/net461/MimeKit.dll",
        "C:\\Users\\*****\\.nuget\\packages\\uipath.mail.activities/1.8.3-beta.865074\\lib/net461/UiPath.Mail.Activities.Design.dll",
        "C:\\Users\\*****\\.nuget\\packages\\uipath.mail.activities/1.8.3-beta.865074\\lib/net461/UiPath.Mail.Activities.dll",
        "C:\\Users\\*****\\.nuget\\packages\\uipath.mail.activities/1.8.3-beta.865074\\lib/net461/UiPath.Mail.dll"
      ],
      "Path": "C:\\Users\\*****\\.nuget\\packages\\uipath.mail.activities\\1.8.3-beta.865074"
    },
...
```
これらのパスを変更しないまま、他のマシンにプロジェクトソース一式をコピーしてUiPath Studioでプロジェクトを読み込もうとすると、「依存関係を復元中」「依存関係を追加中」というウィンドウが開いたまましばらく時間が経つが、最終的には正常に読み込めます。これらのファイルに書いてあったローカルパスは、読み込んだ先のパソコンのものに書き換わります。

ですので、**GitHubに公開前にメモ帳等でこれらのファイルを開いて、ユーザー名を無難な文字列に置換しておくこと**をお勧めします。

# パブリッシュされたファイルは問題ない
一方、シーケンスをパブリッシュしてNugetパッケージにした場合、パッケージの中に含まれるものはロボットの実行に必要な最小限のファイルに限定されるので、ここに余計な情報が含まれることはなさそうです。

# おわりに
知らず知らずのうちにプロジェクトファイルの中に自分の情報や意図しない情報が含まれたままソースが公開されてしまうと後で後悔します。公開前にはプロジェクトファイルの中身を入念にチェックしましょう(^_-)-☆

|￣￣|￣￣|￣￣|￣|≡≡∧,,∧　ﾝﾊﾞｯ!
|￣|￣￣|￣￣|￣￣|≡∠(*'ω')／　
|￣￣|￣￣|￣￣|￣|≡≡(　　(
|￣|￣￣|￣￣|￣￣|≡..＜￣￣＼