はじめに
この投稿は、RPAツール「UiPath」での 設定ファイルの書き方 について記事です。
今回は、細かいTipsを紹介したいと思います。
UiPathのコミュニティ「UiPath Friends」が企画する「UiPathブログ発信チャレンジ2021サマー」の 21日目の投稿でもあります。
企画の内容は こちら 。カレンダーのURLは こちら です。
設定ファイルを書きながら設計をする
設計をする際に「何を設定ファイルに持たせようかな」とイメージして設定ファイル書くと、素早く実装に入れます。
「良い設計」がされているフローは、設定ファイルを見ただけで、処理内容を理解できます。 流れ・ポイントが明確になっていて、ある意味「設計書的な役割」を果たすから
です。
どう書くのが良いのか?はチームによって違いますが、例えば以下のようにして書くと良いかも知れません。
- 設定項目を「処理の単位」でをまとめる
- 空白行を入れて「処理の切れ目」を表現する
- 「入出力の情報」はまとめて、InOutが分かるようにする
- 項目に対して「極力シンプルな説明」が書かれている
設定ファイルの値チェックは「必要最低限」で良い
設定ファイルの項目は「実装中」も「仕様変更」の際も容易に増減します。そして「値のチェック」を実装するのは結構面倒です。 RPAはローコードのスピード開発なので、手間は極力省きたい。
そもそも設定値を間違えていたら「実行エラー」で止まれば良く、思い切って「値の事前検証チェックは無し」でも大丈夫だと思います。だって、チェック実装してる時間がもったいないから。
ただし「この項目だけは保証しておきたい」という項目は、初期処理の中でチェックするほうが安心だと思います。(例えば「入力ファイルのフォルダ有無」など)
また、エクセルの特性を生かして「入力規則」でエラー値を防ぐという方法もあります。
設定ファイルはプロジェクト内に置くべきか?
Reframework等のテンプレートプロジェクトはその便宜上、設定ファイルをプロジェクトに含んでしています。(じゃないと仕組みを説明しにくいから)
デメリットとして「設定ファイルもxamlファイルと同じ扱いになり、気軽に変更できない」というものがあります。先に書いたように「設定ファイルには、後で変更する可能性を書く」もので、変更したいときにはプロジェクトを再生成=パブリッシュしないといけないのは少し残念です。
なので、以下のような方法で「設定ファイルをプロジェクトに含まない」とする選択肢もあります。
1)設定ファイルのパスを固定にする
例)デスクトップ、共有フォルダの固定パス
2)Orchestratorのアセットにパスを記述し、フローの内部で取得する
例)[Name]ConfigPathOfProcessA [value]z:\robot\ConfigOfProcessA.congfig
3)実行マシンのレジストリにパスを記述し、フローの内部で取得する
例)[Name]ConfigPathOfProcessA [value]z:\robot\ConfigOfProcessA.congfig
設定ファイルの内容をログ出力する
処理結果を後で見た時に「その処理が、どういう設定内容で実行されたか」を記録として残しておくと、エラーの把握、原因調査時に有益です。具体的には「設定ファイルの内容をログ出力しておく」と便利です。
個人的には以下のような方法で、設定ファイルを読み込んだ際に内容を出力しています。
<メッセージに設定している値>
"ReadAndOverrideConfig - 設定内容:" & Environment.NewLine & String.Join(Environment.NewLine, From kv In out_dicConfig Select " - " & kv.Key & ":" & if(kv.Key.Contains("パスワード"), new String("*"c, kv.Value.Length), kv.Value))
※ 項目名に「パスワード」を含む場合はアスタリスクで伏せ字にしています
設定ファイルパスとシート名も格納しておく
設定ファイルの読み込み時に、コードの中で「設定ファイルの場所・シート名」を設定ディクショナリに入れておくと、追加で設定シートを読み込みたくなった場合に便利です。
デバッグのログ出力と合わせると「どの設定ファイルを読んで実行されたのか」も分かり便利です。
終わりに
いかがでしたでしょうか。
運用も含め「設定ファイルをどう扱うか」は、要件によって考える必要がありますが、その際に参考になれば幸いです。
この記事が参考になったら、 LGTMをお願いします。閲覧ありがとうございました。