1. UiPathでのDictionary型の基本

UiPathでは、設定ファイル(主にconfigファイル)を外部に用意するアプローチが一般的です。
この方法は、開発環境と本番環境で異なるパラメータを使用することを容易にし、プロセス内でのハードコードを減らし、パラメータが変更された場合にパッケージ自体のバージョンアップをせずにファイルの更新だけで済ませることができます。
Dictionary型変数の使用は、2つのデータテーブルのキーを比較して新しいデータテーブルを作成する場合など、多岐にわたります。

Dictionary型の変数について

`Dictionary<TKey, TValue>`型は、キーと値のペアを格納するコレクションです。
このコレクションは、各キーが一意であり、そのキーに対応する値を迅速に検索できるように設計されています。

UiPathでDictionary型を使用する手順は以下の通りです。

ステップ 1: Dictionary型変数の作成

変数パネルに移動:変数を追加したいシーケンスを選択した状態で「変数」タブをクリックします。

変数パネルに移動

変数の追加: 「名前」欄に、Dictionary変数の名前を入力します(例: myDictionary)。

変数の追加

型の選択: 「変数の型」欄にあるドロップダウンリストをクリックし、表示されるリストから「Browse For Types (ブラウズで選択)…」を選択します。

型の選択

Dictionary型の選択: 検索ボックスに「Dictionary」と入力し、検索結果から`System.Collections.Generic.Dictionary<TKey,TValue>`を選択します。
ここで、`TKey`と`TValue`はそれぞれキーと値の型を表します(例: String, Int32)。

Dictionary型の選択

キーと値の型の指定: `TKey`と`TValue`の型を指定します(例: キーをString、値をInt32とする場合)。

キーと値の型の指定

OKをクリック: 型の設定が完了したら、「OK」をクリックして閉じます。

インスタンスの生成

インスタンス化は、実際にDictionaryオブジェクトをメモリ上に生成し、それを使用可能な状態にするプロセスです。
代入(Assign)アクティビティを使用して、myDictionary変数に新しいDictionaryインスタンスを割り当てます。

具体的には、Assignアクティビティの左辺にmyDictionaryを、右辺に`New Dictionary(Of String, Int32)`を入力します。
これにより、myDictionaryは新しい空のDictionaryオブジェクトを参照するようになり、キーと値のペアを格納する準備が整います。

インスタンス化されていないDictionary型の変数にアクセスしようとすると、実行時エラーが発生するので注意してください。

辞書への要素の追加

辞書のインスタンスを用意した後、中身(ペア)を追加する一般的な方法は代入アクティビティ(Assign)で以下のように入力します

mydictionary(“strKey”) = “intValue”

キーが既に存在する場合はその値を更新し、存在しない場合は新しいキーと値のペアを追加します。
ほかのプログラムにあるようなmydictionary.add(key , value)のような記述はできません。
Addアクティビティを使うことで実現可能ですが、ほぼメリットがないため、ごく限られたシチュエーションの時に用いられると思います。

辞書から値を取り出す

辞書から値を取り出すときは追加の時と同じように、代入アクティビティ(Assign)で右辺にmydictionary(“strKey”)と記述します。

また、String型のValueである場合はmydictionary(“strKey”).ToString.TrimとToStringやTrimを追加することが多いです。

辞書のキーが含まれているかを確認

`ContainsKey(TKey)`: 辞書に特定のキーが含まれているかどうかを判断します。
IFアクティビティの条件式に記述することで、辞書から値を取り出す前にキーの存在確認を行うことでエラー制御ができます。

例)
条件式を以下のように記述します。
myDictionary.ContainsKey(“exampleKey”)

条件式が true を返した場合(キーが存在する場合)のアクションを設定します。例えば、辞書から値を取得して何らかの処理を行うなどです。
条件式が false を返した場合(キーが存在しない場合)のアクションを設定します。例えば、エラーメッセージを表示する、ログを記録する、または何もしないなどです。

データテーブルから辞書への変換

データテーブルの各行に対して繰り返し処理を行い、特定の列をキーと値として読み取り、それらをDictionaryに追加することで、データテーブルの内容を辞書に変換できます。
この操作を通じて、データテーブルの内容がキーと値のペアとしてDictionaryに変換され、後続の処理で効率的にアクセスできるようになります。

注意点として、Dictionaryのキーは一意である必要があります。データテーブル内に同じキーが複数存在する場合、後の値で前の値が上書きされるため、データの損失が発生する可能性があります。

また、データテーブルの列名が正確であることを確認してください。誤った列名を指定すると、実行時にエラーが発生します。

実装手順

準備:
myDataTable : DataTable型。変換するデータテーブル。
myDictionary : Dictionary<String, String>型(またはキーと値に適した型)。
この変数を初期化することを忘れないでください( new Dictionary(Of String, String) )。

繰り返し(データテーブルの各行)アクティビティ(For Each Row)の追加:
データテーブル myDataTable を繰り返し処理するために、繰り返し(データテーブルの各行)アクティビティ(For Each Row)をワークフローに追加します。

各行に対する処理:
データテーブルの各行に対して、指定した列からキーと値を読み取り、それらを myDictionary に追加します。

各行に対する処理

まとめ

UiPathにおけるDictionary型の用途は多岐にわたります。この記事を通じて、Dictionary型の基本的な作成について理解を深めることができました。