UiPath

【UiPath】配列の操作(List,Dictionary,Array)

UiPath Studioの開発では、複数の変数を一つの変数でまとめた配列を利用したい場合があります。

この記事では、配列のArray,List,Dictionaryの違い、使い方について、解説します。

ペンギンさん
ペンギンさん
長い記事なので、参照したい章をクリックもしくはタップしてください。

Array,List,Dictionaryの違い

ArrayとListは、両方とも複数の要素を持てて、数値で要素を指定します。

ArrayとListの違いは、Arrayは要素の追加が出来ず、Listは要素の追加が出来ます。

Dicitonaryは、ArrayとListと違い、要素をKeyで指定します。

要素数 要素の値 データの取り出し方
Array 固定 変更可能 数値指定
List 可変 変更可能 数値指定
Dictionary 可変 変更可能 Key指定

 

ペンギンさん
ペンギンさん
Arrayは要素を追加できないので、数値指定でデータを取り出す場合は、Listの方が使いやすいです。
ラッコくん
ラッコくん
Key指定でデータを取り出す場合は、Dictionaryを使用するよ。

 

Array

Arrayは、要素数が固定、要素の値が変更可能、データの取り出し方が数値指定の配列です。

Array変数の作成手順

Array変数の作成手順
①Array変数の作成は、変数の型の「Array Of [T]」をクリック

②配列内の変数Tを選択して、[OK]をクリック

③変数の型に指定したArrayの変数が表示されていることを確認します。

 

Arrayの各要素をログへ出力

Arrayの各要素のログ出力は、「繰り返し (コレクションの各要素) (For Each)」アクティビティで各要素を取り出すか、Array変数を番号指定で行います。

サンプルプロセス
変数Array内の要素を繰り返しと番号指定で、要素内の値をログへ出力する。

・プロセス

ラッコくん
ラッコくん
配列の番号指定は0から始まるので、1番目の要素は0、2番目の要素は1、3番目の要素は2で指定するよ。

・プロセスの各値のテキスト

{"りんご","オレンジ","ぶどう"}
"繰り返し:"+item.ToString
"番号指定(0):"+arr(0)
"番号指定(1):"+arr(1)
"番号指定(2):"+arr(2)

・「代入」のプロパティ

 

 

・「繰り返し (コレクションの各要素)」のプロパティ

ペンギンさん
ペンギンさん
「TypeArgument」は、配列内に指定した変数の型を指定します。

 

・変数のプロパティ

・プロセス実行結果のログ

 

List

Listは、要素数が可変、要素の値が変更可能、データの取り出し方が数値指定の配列です。

List変数の作成手順

List変数の作成手順
①変数の型で[型の参照]をクリック

②検索窓に「System.Collections.Generic.List」を入力

③[List<T>]を選択し、右上の配列に指定する変数を選択し、[OK]をクリック

④変数の型にList<選択した変数>が表示されていることを確認する

 

Listの各要素をログへ出力

Listの各要素のログ出力は、「繰り返し (コレクションの各要素) (For Each)」アクティビティで各要素を取り出すか、List変数を番号指定で行います。

サンプルプロセス
変数List内の要素を繰り返しと番号指定で、要素内の値をログへ出力する。

・プロセス

・プロセス内の各値のテキスト

New List(of String) From{"りんご", "オレンジ","ぶどう"}
"繰り返し:"+item.ToString
"番号指定(0):"+list(0)
"番号指定(1):"+list(1)
"番号指定(2):"+list(2)

 

・「代入」のプロパティ

ペンギンさん
ペンギンさん
List型は、初期化しないと要素を追加できないので、New List(of String) で初期化します。
ラッコくん
ラッコくん
New List(of String)の後に、From{}を追加することで、初期の値を設定できるよ

 

・「繰り返し (コレクションの各要素)」のプロパティ

ペンギンさん
ペンギンさん
「TypeArgument」は、配列内に指定した変数の型を指定します。

 

・変数のプロパティ

・プロセス実行結果のログ

 

 

 

Listへ要素を追加(コレクションに追加)

Listへ要素を追加するのは、「コレクションに追加」アクティビティを使用します。

「コレクションに追加」は、プログラミング>コレクション にあります。

 

サンプルプロセス
変数Listへ要素を追加し、要素内の値をログへ出力する。

・プロセス

・プロセス内の各値のテキスト

New List(of String) From{"りんご", "オレンジ","ぶどう"}
"繰り返し:"+item.ToString

 

 

・「代入」のプロパティ

・「コレクションに追加」のプロパティ

・「繰り返し (コレクションの各要素)」のプロパティ

・変数のプロパティ

・プロセス実行結果のログ

 

 

Listから要素を削除(コレクションから削除)

Listの要素を削除するのは、「コレクションから削除」アクティビティを使用します。

「コレクションから削除」は、プログラミング>コレクション にあります。

 

サンプルプロセス
Listの要素を一つ削除し、要素内の値をログへ出力する。

・プロセス

・「代入」のプロパティ

・「コレクションから削除」のプロパティ

ペンギンさん
ペンギンさん
コレクションから項目の値が削除できたか否かで、「結果」にTrueもしくはFalseが返ります。

 

・「繰り返し (コレクションの各要素)」のプロパティ

・変数のプロパティ

・プロセス実行結果のログ

ラッコくん
ラッコくん
対象のlistに”りんご”が削除されたため、検索結果がTrueになり、list内から”りんご”が削除されているよ。

 

List内の要素を消去(コレクションを消去)

Listの要素をすべて消去するのは、「コレクションを消去」アクティビティを使用します。

「コレクションを消去」は、プログラミング>コレクション にあります。

 

サンプルプロセス
Listの要素をすべて消去し、要素内の値をログへ出力する。

・プロセス

・「代入」のプロパティ

・「コレクションを消去」のプロパティ

・「繰り返し (コレクションの各要素)」のプロパティ

・変数のプロパティ

・プロセス実行結果のログ

ペンギンさん
ペンギンさん
list内の要素がすべて消去されているので、繰り返し (コレクションの各要素)内のログは出力されません。

 

List内の要素を置き換え(代入)

Listの要素を置き換えするのは、「代入 (Assign)」アクティビティを使用します。

「代入 (Assign)」は、ワークフロー>制御 にあります。

 

サンプルプロセス
Listの要素の一つを別の値に置き換えて、要素内の値をログへ出力する。

・プロセス

ラッコくん
ラッコくん
「代入 要素2を置き換え」で、listに2番目の要素に”みかん”に置き換えているよ。

 

・「代入 list初期化」のプロパティ

・「繰り返し (コレクションの各要素)」のプロパティ

・変数のプロパティ

・プロセス実行結果のログ

ペンギンさん
ペンギンさん
繰り返しの3回目(2番目の要素)は、置き換えた”みかん”が出力されています。

 

List内の要素の有無(コレクション内での有無)

List内で指定した要素の有無を確認するのは、「コレクション内での有無」アクティビティを使用します。

「コレクション内での有無」は、プログラミング>コレクション にあります。

 

サンプルプロセス
List内の指定要素の有無を確認して、結果をログへ出力する。

・プロセス

・「代入」のプロパティ

・「コレクション内での有無」のプロパティ

・変数のプロパティ

・プロセスの実行結果のログ

ラッコくん
ラッコくん
list内の要素に”メロン”はないので、Falseが返ってくるよ。

 

List内の要素数(.Count)

Listの要素数は、List変数のCountを使用します。

 

サンプルプロセス
List内の要素数をカウントし、ログへ出力する。

・プロセス

・プロセス内の各値のテキスト

New List(of String) From{"りんご", "オレンジ","ぶどう"}
"listの要素数:"+list.Count.ToString

 

ペンギンさん
ペンギンさん
list変数の後の .Countでlistの要素数をint型で出力し、 .ToStringでint型をString型へ変換しています。

 

・「代入」のプロパティ

・変数のプロパティ

・プロセスの実行結果のログ

ラッコくん
ラッコくん
list内の要素数3が出力されているよ。

 

Dictionary

Dictionaryは、要素数が可変、要素の値が変更可能、データの取り出し方がKey指定の配列です。

ArrayやListは数値で要素を指定しましたが、dictionaryは”Key”で要素を指定します。

Dictionary変数の作成手順

Dictionary変数の作成手順
①変数の型で[型の参照]をクリック

②検索窓に「System.Collections.Generic.Dictionary」を入力

③[Dictionary<TKey><TValue>]を選択し、右上プルダウンでKeyとValueの変数の型を選択して、[OK]ボタンをクリック

④[Dictionary<選択したKey変数型><選択したValue変数型>]

 

Dictionaryの各要素をログへ出力

Dictionaryの各要素のログ出力は、「繰り返し (コレクションの各要素) (For Each)」アクティビティで各要素を取り出すか、List変数をKeyで指定します。

サンプルプロセス
変数Dictionary内の要素を繰り返しとKey指定で、要素内の値をログへ出力する。

・プロセス

・プロセス内の各値のテキスト

New Dictionary(of String, Integer) From{{"りんご", 100},{"オレンジ", 200},{"ぶどう", 300}}
"りんごの値:"+dic("りんご").ToString
"オレンジの値:"+dic("オレンジ").ToString
"ぶどうの値:"+dic("ぶどう").ToString
"繰り返し:"+item+" "+dic(item).ToString

 

ペンギンさん
ペンギンさん
「繰り返し (コレクションの各要素)」の値にdic.keyを設定することで、dic内のKey値を順番にitemへセットしています。
ラッコくん
ラッコくん
itemにKey値が入っているので、dic(item)はKey値に対応するValue値が出力されるよ。

 

・「代入」のプロパティ

・「繰り返し (コレクションの各要素)」のプロパティ

・変数のプロパティ

・プロセス実行結果のログ

 

 

Dictionaryへ要素を追加(代入)

Dictionaryへ要素を追加するのは、「代入 (Assign)」アクティビティを使用します。

「代入 (Assign)」は、ワークフロー>制御 にあります。

 

サンプルプロセス
Dictionaryへ要素を追加し、要素内の値をログへ出力する。

・プロセス

ペンギンさん
ペンギンさん
「代入 dic追加」でdic内に存在しないKey値を左辺に、右辺にValue値を指定することで、dicに要素を追加しています。

・プロセス内の各値のテキスト

New Dictionary(of String, Integer) From{{"りんご", 100},{"オレンジ", 200},{"ぶどう", 300}}
"繰り返し:"+item+" "+dic(item).ToString

 

 

・「代入」のプロパティ

・「繰り返し (コレクションの各要素)」のプロパティ

・変数のプロパティ

・プロセスの実行結果のログ

 

Dictionaryから要素を削除(メソッドを呼び出し)

Dictionaryの要素を削除するのは、「メソッドを呼び出し」アクティビティを使用します。

「メソッドを呼び出し」は、プログラミング>実行にあります。

 

サンプルプロセス
Dictionaryの要素を一つ削除し、要素内の値をログへ出力する。

・プロセス

・「代入」のプロパティ

・「メソッドを呼び出し」のプロパティ

ラッコくん
ラッコくん
「メソッド名」にDictionary内のデータを削除するRemoveを指定しているよ。

 

・「メソッドを呼び出し」内の「パラメーター」の値

・「繰り返し (コレクションの各要素)」のプロパティ

・変数のプロパティ

・プロセスの実行結果のログ

ペンギンさん
ペンギンさん
dicから”りんご”をKeyとする値が削除されているため、オレンジとぶどうのみ出力されます。

 

 

Dictionary内の要素を置き換え(代入)

Dictionaryの要素を置き換えするのは、「代入 (Assign)」アクティビティを使用します。

「代入 (Assign)」は、ワークフロー>制御 にあります。

 

サンプルプロセス
Dictionaryの要素の一つを別の値に置き換えて、要素内の値をログへ出力する。

・プロセス

・「代入 初期化」のプロパティ

・「代入 置き換え」のプロパティ

ペンギンさん
ペンギンさん
dic内にあるKey値”りんご”を左辺に指定し、変更後のValue値を右辺に指定します。

 

・「繰り返し (コレクションの各要素)」のプロパティ

・変数のプロパティ

・プロセスの実行結果のログ

ラッコくん
ラッコくん
“りんご”のValue値が100から50に置き換わっているよ。

 

Dictionary内の要素数(.Count)

Dictionaryの要素数は、Dictionary変数のCountを使用します。

 

サンプルプロセス
Dictionary内の要素数をカウントし、ログへ出力する。

・プロセス

・「代入」のプロパティ

・変数のプロパティ

・プロセスの実行結果のログ

 

まとめ

  • Arrayは、要素数が固定、要素の値が変更可能、データの取り出し方が数値指定の配列。
  • Listは、要素数が可変、要素の値が変更可能、データの取り出し方が数値指定の配列。
  • Dictionaryは、要素数が可変、要素の値が変更可能、データの取り出し方がKey指定の配列
  • ArrayよりListの方が、要素数が可変のため、使いやすい。
  • Key指定をしたい場合は、Dictionaryを使用する。

 

 

最後に関連記事を紹介します。

↓UiPath Studioのプロセス作成方法、アクティビティの使い方、開発時のチップスを網羅的に説明した記事です。

【UiPath】プロセス作成方法やアクティビティの使い方のまとめ記事UiPath Studioでのプロセス作成方法やアクティビティの使い方を体系的に学びたい方向けに、UiPath Studioのプロセス作成方法、アクティビティの使い方、開発時のチップスを分かりやすく説明します。...

https://penrako.com/uipathstudiosummary/(別ウインドウ)

 

↓RPAエンジニアの仕事内容、必要なスキル、将来性、IT未経験でもなれるのか、について解説した記事です。

RPAエンジニアへ転職  必要スキル、将来性、仕事内容、未経験OK?を解説 上記の疑問を持つ方向けに、RPAの開発や運用に携わる私が、RPAエンジニアの 仕事内容 必要なスキル 将来...

https://penrako.com/rpaengineer/(別ウインドウ)