【UiPath】Workflow Inspectorを使ってみる

## はじめに


前々から高品質なワークフローを作らないといけない。。ってことは
最近のRPA情勢からも何となく察している方も多いかと存じます。
先日のUiPath Friendsでお話があったとおり、
UiPathより公式でコーディング規約と品質評価キットが公開されています。
これを有効に活用することで、ワークフローの品質を上げることができるので
積極的に活用していきたいですね。

https://www.uipath.com/ja/solutions/whitepapers/coding-standards



ということで
コーディング規約のチェック項目を自動でチェックして、レポート出力してくれる
Workflow Inspector(WI)について説明します。

とりあえずこれ読んだらWI使えるようになった！
WIってこんなことできるんだ！
ってところを理解・習得できたことを本記事のゴールにします。

## Workflow Inspectorとは何か？

先述しましたが、作成したxamlファイルをチェックし、
チェック項目に対して条件を満たしていない項目に関して
Excelのレポート形式で出力してくれるものです。
WI自体がUiPathで作成されたワークフローなので、親しみやすいのではないかと思います。


【参考】
https://connect.uipath.com/ja/marketplace/components/workflow-inspector

## Workflow Inspectorの立ち位置

大元としてのコーディング規約
その中でチェックを推奨するものがコードレビューチェックシート（品質評価キットに含まれる）
そのチェック内容で自動化にて確認出るものが **Workflow Inspector**です。

そのため、自動化でチェックできない箇所については目視などで
コードレビューチェックシート記載の内容をチェックします。

![WI.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469188/f4df0763-5d1f-aed4-b7fd-120a93c13a51.png)


## Workflow Inspectorの使い方

### 1. **Workflow Inspectorのダウンロード**
下記URLからDLします（必須：UiPath Go!のユーザ登録）
https://go.uipath.com/ja/component/workflow-inspector
![WI.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469188/2690d3d6-35ce-190f-c63b-2cea62a95a04.png)

### 2. **xamlファイルの実行**
「WorkflowInspector」フォルダがDLされるので、
フォルダ内の「Main.xaml」を開いてワークフローを実行します。  
**※引数の設定**
事前にMain.xamlの引数で指定可能です。
「in_ProjectPath」：チェックするプロジェクトフォルダのパス
「in_ReportPath」：レポート出力先
![variable.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469188/a9c5244d-1314-a570-4290-5f3d8f8512b2.png)


### 3. **対象ワークフローの選択**
※Main.xamlの「in_ProjectPath」引数にプロジェクトフォルダを指定している場合、
　この画面は表示されずに「in_ProjectPath」のパスに対してWIが実行されます。

WFを実行するとPC内のフォルダを選択する画面が表示されるので、
評価したい「ワークフローフォルダ」を指定して「OK」を選択します。
（ReFrameworkなどxamlファイルがたくさん存在するワークフローフォルダも一気にチェックしてくれます）
![file.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469188/9ac0b498-60d2-0f21-21df-59d5332b6a78.png)

### 4. **ワークフローの実行**
ワークフローを実行します。
実行端末のスペック、指定ワークフローのボリュームにもよりますが、UiPath AcademyのLevel3で作成したロボットでは
大体1分程度で実行が完了しました。

### 5. **レポートファイルの確認**
デフォルト設定の場合、「WorkflowInspector\Reports」直下にExcelファイルが出力されます。
このファイルを参考に修正箇所を確認し修正します。

**以上です。簡単です。**


## Workflow Inspector実行結果

上記の使い方に倣ってWIを実行するとデフォルトで「WorkflowInspector\Reports」直下に
レポートファイルが出力されます。
Main.xamlの引数にパスをして入れてた場合は指定したパスに作成されます。

![result.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469188/8746bfea-2387-10be-76ba-159787b74d84.png)


上記の様にチェック項目に引っかかった箇所が
Excelファイルに出力されます。


## Configファイルの差し替えについて

**※2020/3/6現在**
こちらのUiPath Forumでも書き込みがある通り
https://forum.uipath.com/t/uipath/180049
https://forum.uipath.com/t/workflow-inspector/180493

品質管理キットに同梱されているConfigファイルに差し替えると
パス指定が変更されており、エラーになるので
現状はUiPath Go!から落としてきたものをそのまま使ったほうが良さそうです。
後日対応予定らしいので気長に待ちましょう。  

~~WI自体は先述のコーディング規約を公開するより前にUiPath Go!にてリリースされており、~~
~~いわゆる旧VerのConfigファイルですが、品質評価キット内にあるWIのChecklistは、~~
~~公開されたコーディング規約に則したものなので、こちらに差し替えます。（任意）~~

~~【差し替えファイル】~~
~~「WorkflowInspector\Config\JP」のChecklist.xlsxファイル~~

## Workflow Inspectorその他

### チェックを行わないようにする
事象(B列)、説明(F列)を確認の上、チェックが不要なものに関しては
「Checklist.xlsx」ファイルのA列を「No」にします。（任意）

### チェックの追加
XPath知識と取得したNode属性がなにを表しているか理解することが必要です。

マニュアルにカスタムxamlを作ってみる内容があったのでそれに準拠しています。

1. Templateファイルのコピー  
「WorkflowInspector\Checks\Templates」フォルダの  
WorkflowCheckTemplate.xamlファイルをコピーしてリネームします
2. コピーしたxamlのAssign XPathExpressionの指定
ここで代入するXPathExpressionをXPath記法で記載します
一度xamlファイルをテキストエディタで開いて構造や引っ掛けるワードを確認しておくと〇

3. For Each内にチェックロジックの実装
→基本的にFor Each内のIf check failsのConditionを記述します
4. 「Checklist.xlsx」に「実行」「事象」「チェックファイル」「引数」「対応」「説明」「メッセージ」を作成したチェックに沿うように記載します
5. テストワークフローの作成(作成したロジックに引っかかるものと引っかからないものを作成)し、
意図したものがレポートとしてエクスポートされたらOKです


## 現状のお悩み
WIは便利で非常に良いものですが、いざ使ってみると以下に悩まされました。。

 - 変数引数の命名規則をしっかり決めなければならない  
→WIのConfigファイルで命名規則に沿った正規表現を引数で指定する必要がある  
 - WIからレポートは出力されるが、その結果を人力でコードレビューチェックリストに紐づけしなければならない  
→どの項目がOKでどの項目がNGであるか一目で確認できない
 - チェック項目全て確認する場合、目視チェックがかなり大変  
→WIでチェック自動化できない箇所は目視で確認するが、項目によっては時間と労力がかかる

## WIを使用してみた所感
 - UiPathが公開したコーディング規約を事前に読んでおく。
 - WIによる自動チェックの追加はXMLファイル構造の理解＋XPath知識が必要な為、少々敷居が高いと感じました。
 - チェックのONOFFは簡単なのでこれぐらいは環境に応じてやってもいいかも。
 - まずはWIで簡単にチェックできるところから始めてみましょう！

とはいえ、自身(もしくは他人)の作成したワークフローが手軽にチェックできることは
非常に便利でワークフローの品質UPに繋がるので積極的に使っていきたいですね。
また、コーディング規約を読むことで自身もしくはチームで作成するワークフローを
客観的に見直すことができる良い機会なので、コーディング規約を一通り読んでおくことをお勧めします。