UiRPA(アソシエイト資格試験)の模擬試験の答えと解説　No.23~No.28

前回の記事の続きになります。
前回までの記事をまだご覧になられていない方は

https://qiita.com/y-matsunaga/items/946d6ee5f1bc91a2d2b3

https://qiita.com/y-matsunaga/items/f5321a510ef024adeb87

をご覧になってから読んでいただければと思います。

それでは早速始めていきます。

### No.23 [1行を書き込み (Write Line) ] アクテビティ を使用して、[出力 (Output)] パネルに現在日付を 「dd-MM-yyyy」 形式で表示するための正しい式はどれですか。

1. Now.CompareTo("dd-MM-yyyy")
2. Now."dd-MM-yyyy"
3. Now.ToString("dd-MM-yyyy")
4. Format(Now,"dd-MM-yyyy")

<details><summary>答えを見る</summary>

**3.Now.ToString("dd-MM-yyyy")**

**ToString メソッドとは**
他の変数の型を文字列型へ変換するときに使用する「VB.NET メソッド」です

**VB.NET メソッドとは**
マイクロソフトが用意した便利な “関数" のようなものです。 “関数"  とは、様々な計算や処理を行った結果を得られる命令文のことです。
アクティビティの実行により取得されたデータの型を変更、データから特定の文字を抽出または削除する、特定のフレーズが含まれているかのチェック、特定の区切り文字でテキストを分割するなど、VB.NET メソッドを使用したデータ操作を行うことで UiPath Studio での開発の幅が広がります。

よかったらこちらの記事に代表的なものをまとめたので参考にしてみていただけますと幸いです。

[UiPath 代表的な文字列操作 【VB.NETメソッド】](https://qiita.com/y-matsunaga/items/81c16177f1f607b22ded)

</details>

### No24 すべての質問に対して最も正しいと考える回答を出してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1744893/f93dde86-97ac-ab41-2805-08f63d0e3535.png)

**この画像に示されたプロセスが実行された場合、出力結果はどうなりますか。**

1. 2020
2. 20
20
3. < 空白 >
0
0
4. < 空白 >

<details><summary>答えを見る</summary>

**3.< 空白 >**
**0**
**0**

詳しくは、[UiPath 代表的な文字列操作 【VB.NETメソッド】](https://qiita.com/y-matsunaga/items/81c16177f1f607b22ded)を見てください。

Splitは特定の区切りでテキストを分割するVB.NETメソッドです。
今回は区切り文字を**2**で設定しているため、2020のうちの**2**で区切られて改行されます。

</details>

### No.25 「UiPath Certification」の文字列から会社名を削除したいと思います。「Certification」を返す文字列 (string) メソッドはどれですか。

1. "UiPath Certification".Substring(6)
2. "UiPath Certification".Substring(6).Trim
3. "UiPath Certification".Substring(6,14)
4. "UiPath Certification".Substring(14,6)

<details><summary>答えを見る</summary>

**2."UiPath Certification".Substring(6).Trim**

詳しくは、[UiPath 代表的な文字列操作 【VB.NETメソッド】](https://qiita.com/y-matsunaga/items/81c16177f1f607b22ded)をご参照ください。

SubStringは特定のインデックスや長さで指定された、文字列の一部を取得するVB.NETメソッドです。
今回は戻り値に「Certification」が欲しいとの要求ですので、
６文字目からスタートして最後まで取得し、先頭と最後の空白を削除するということです。
Substringは文字数指定の２番目の引数が省略されると、最後まで取得します。
その後、Trim関数によって空白を削除したら要求通りの「Certification」を返すことができます。

それぞれの選択肢を見ていきましよう

**1."UiPath Certification".Substring(6)**
スペースのある位置から、文字列の最後まで取得することになりますので誤りです。

**2."UiPath Certification".Substring(6).Trim**
Trim関数は、文字列の先頭と末尾の空白を削除する関数です。
肢1と同様に、スペースのある位置から、文字列の最後まで取得することになります。
そして、Trim関数によって、スペースが削除されますので正しいです。

**3."UiPath Certification".Substring(6,14)**
スペースのある位置から14文字を取得することになりますので誤りです。

**4."UiPath Certification".Substring(14,6)**
3と同じく誤りです。

</details>

### No.26 ある文字列が有効な電子メールアドレス形式であることを確認する必要があります。どんな方法で確認しますか。

1. [次を含む (Contains)] 式で「'@.com'」を指定する。
2. [値を書式化 (Format Value)] アクテビティを使用する。
3. 正規表現を使用する。
4. [SMTP メールメッセージの送信 (Send SMTP Mail Message)]アクテビティを使用する。

<details><summary>答えを見る</summary>

**3. 正規表現を使用する。**

**正規表現とは**
例えば携帯電話の番号は 0X0-XXXX-XXXX という決まった形になっていますが、こういう風に、この文字列はこういうルールに基づいています、という考え方のことです。
「正規表現」という概念自体は Uipath 特有のものではなくて、あらゆる開発言語で使用されています。詳しくはVB.NET についての説明をご参照ください。

公式ドキュメント：[.NET の正規表現 | Microsoft Docs](https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/regular-expressions)

UiPathでは、下記3つのアクティビティで正規表現を使用することができます。

**文字列の一致をチェック (Is Match)**
指定した正規表現と、指定した一致オプションを使用して、指定した入力文字列の中で一致が見つかったかどうかを示します。
公式ドキュメント：[文字列の一致をチェック (Is Match)](https://docs.uipath.com/activities/lang-ja/docs/is-match)

**一致する文字列を取得 (Matches)**
入力文字列の中で正規表現のすべての出現箇所を検索し、正常な一致をすべて返します。
公式ドキュメント：[一致する文字列を取得 (Matches) (uipath.com)](https://docs.uipath.com/activities/lang-ja/docs/matches)

**置換 (Replace)**
指定した入力文字列の中で、正規表現パターンに一致する文字列を、指定した置換文字列に置き換えます。
公式ドキュメント：[置換 (Replace)](https://docs.uipath.com/activities/lang-ja/docs/replace)

**今回の問題では、文字列の一致をチェック アクティビティを使用すれば、文字列がメールアドレス形式となっているかを判定できます。**

それぞれの選択肢を見ていきましょう。
**1.[次を含む (Contains)] 式で「'@.com'」を指定する。**
.Contains メソッドは、文字列の中に特定の文字列が含まれているかを判定することができるメソッドです。この場合、「@.com」という文字列を含むかどうかを判定することになりますが、「@.com」という文字列のメールアドレスは存在しませんので誤りです。

**2.[値を書式化 (Format Value)] アクテビティを使用する。**
**[値を書式化 (Format Value)] アクティビティとは**
特定の形式を、.ToString 演算と Parse 演算に使用できるジェネリック値に関連付けます。使用できる形式は、Number、DateTime、Currency、Percentage です。
例えば、「2022年12月31日 12:00:00」というデータを、「12月31日」と表示させたりすることができます。今回のケースでは誤りです。

公式ドキュメント：[値を書式化 (Format Value) ](https://docs.uipath.com/activities/lang-ja/docs/format-value)

**3.正規表現を使用する。**
前述の通り正しいです。

**4.[SMTP メールメッセージの送信 (Send SMTP Mail Message)]アクテビティを使用する。**
**[SMTP メールメッセージの送信 (Send SMTP Mail Message)]アクテビティとは**
SMTP プロトコルを使用して、メール メッセージを送信しますので誤りです。

公式ドキュメント：[SMTP メール メッセージを送信 (Send SMTP Mail Message) ](https://docs.uipath.com/activities/lang-ja/docs/send-mail)

</details>

### No.27 各 Dictionary (ディクショナリ) オブジェクトの必須要素は何ですか。

1. アイテム (Item) とコレクション (Collection)
2. アイテム (Item) と値 (Value)
3. キー (Key) と値 (Value)
4. キー (Key) とコレクション (Collection)

<details><summary>答えを見る</summary>

**3.キー (Key) と値 (Value)**

**Dictionary (ディクショナリ) オブジェクトとは**
データ キー/アイテムのペアを保存するオブジェクト。
配列の一種です。通常の配列は、0, 1, 2, ... と数字で区切られた区画にデータを入れていくのに対して、ディクショナリオブジェクトは、キー(例えば、父の部屋、娘の部屋、みのように)と値をセットにして管理します。「連想配列」とも呼ばれています。
連想配列はUipath 独自のものではなく、あらゆるプログラミング言語で使用される考え方です。
Uipath では、VBのやり方に則って、Dictionary型の変数として使用します。

[Dictionary オブジェクト | Microsoft Docs](https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/dictionary-object)

</details>

### No.28 月齢レポートをダウンロードする必要があります。[繰り返し (コレクションの各要素) (For Each)] アクティビティを使用して1年間の月を反復処理することにしました。月の名前を格納するのに最も適したデータタイプはどれですか。

1. List<String>
2. String[ ]
3. String
4. Dictionary<Object,String>

<details><summary>答えを見る</summary>

**2. String[ ]**

[繰り返し (コレクションの各要素) (For Each)] アクティビティ は、コレクション内の要素の数だけ繰り返しを行うアクティビティです。
コレクションには、コレクション値のデータ型の変数を指定してやる必要があります。

**コレクションとは**
コレクションとは、同じ種類のオブジェクトを複数まとめたもののことです。

**オブジェクトとは**
オブジェクトとは、対象とする目的物（の概念）のこと。
例えばExcelで例えると、フォルダ、ブック、シート、セルなどがオブジェクトに当たります。

コレクション値のデータ型については下記のサイトが大変参考になります。
[【UiPath】配列の操作(List,Dictionary,Array)｜エフペンITブログ (penrako.com)](https://penrako.com/uipatharraymanipulation/)

ArrayとListは、両方とも複数の要素を持てて、数値で要素を指定します。
ArrayとListの違いは、Arrayは要素の追加が出来ず、Listは要素の追加が出来ます。
Dicitonaryは、ArrayとListと違い、要素をKeyで指定します。

今回のケース、上記3つのどれを使っても目的は達成できます。
今回は「1年間の月」を繰り返すとのことですので、要素の数が確定しているので、最も記述が簡単になる Array型を使用しておけばよいでしょう。

変数を作成する際に、データ型に Array of [T] を選択し、型を String としてやると、String[ ] となります。 
</details>

###  まとめ

今回の6問は下記の試験範囲のうち
「データ操作」となります。

RPA の基礎
UiPath Studio の概要
変数と引数
セレクター
制御フロー
**データ操作**
UiPath の自動化概念とあらゆるテクニック
UiPath Orchestrator の概要

:::note warn
注意
この模擬試験は答えられて終わるのではなく、しっかりと説明できるようになることが重要です。
:::

最後に今回の記事作成に参考にさせていただいたサイトを共有します。

https://streamlineoperations.hatenablog.com/

最後まで見ていただいてありがとうございました。問題数としては少ないですがここで切り上げたいと思います。

https://qiita.com/y-matsunaga/items/69937a7d9d14965eeccd

https://qiita.com/y-matsunaga/items/69937a7d9d14965eeccd

https://qiita.com/y-matsunaga/items/8abbb8ececca4ef69bce