
レコーティング(Recording)機能は、簡単に操作をアクティビティ化でき、また面倒なセレクタの設定も自動でやってくれる非常に便利な機能です。
ただ、レコーディング機能を使っているうちに、WebやCitrixは何となく分かるけど、BasicとDesktopは何が違うの?と疑問を持った事はないでしょうか。「Basic」と「Desktop」レコーディングを使い分けられていますか?
今回は4つあるレコーディングモードのうち、「Basic」と「Desktop」の違いに焦点を絞って解説します。
Contents
BasicとDesktopの違い
「Basic」と「Desktop」レコーディングの違いについて公式ドキュメントを確認してみました。
Basic (ベーシック) – アクティビティごとに全体セレクターを生成し、コンテナーは生成しません。結果として得られるオートメーションはコンテナーを使用するオートメーションより遅くなります。単一のアクティビティの場合に適しています。
Desktop (デスクトップ) – あらゆる種類のデスクトップアプリケーションと複数のアクションの場合に適しています。ベーシックレコーダーより高速で、アクティビティを取り込むコンテナー (およびトップレベルウィンドウのセレクター) を生成し、アクティビティごとに部分セレクターを生成します。
レコーディングの種類(https://studio.uipath.com/docs/about-recording-types)
翻訳の問題もあるかもしれませんが、専門的な言葉が並んでいて正直少し分かりづらいですね。以下でもう少し詳しく説明します。
違いはセレクタの作成方法
この2つのレコーディングで異なるのは「セレクタの作成方法」が違うという点です。
セレクタとは、「クリック等の操作をする際に、どのウインドウの、どの部分に対して行うか」をUiPathに伝えるためのものです。
Windows上のアプリケーションは、画面サイズの変更やファイル名を指定して保存するだけでも変わってしまうため、複数のPCで同じ様に操作できなければ自動化はできません。
セレクタがあることにより、画面サイズが変わっても、ウインドウの名称が変わっても同じ画面を対象として操作することができます。PC上の様々な要素を自由に操作できるものセレクタのおかげなのです。
全体セレクタと部分セレクタ
公式ドキュメントでは、Basicレコーディングは「全体セレクタ」を生成し、Desktopレコーディングは「部分セレクタ」を生成する、としています。
これはどういう事かというと、Basicレコーディングでは全てのセレクタをアクティビティ毎に作ります。一方、Desktopレコーディングでは、最初に対象ウインドウのセレクタを作り、後続の操作では同じウインドウ内での操作であるとして、ウインドウのセレクタは無視します。
まとめると以下のようになります。
- Basicはアクティビティ毎に何度もセレクタを作り直す。
- Desktopは最初にウインドウのセレクタを作り、そのセレクタを再利用する。
Basicの全体セレクタ。1行目がエクセルウインドウのセレクタ。これをアクティビティ毎に生成する。
Desktopの部分セレクタ。エクセルウインドウのセレクタが存在しない。
コンテナーとはなお公式ドキュメントにある、Desktopレコーディングで作成されるコンテナーとは、「Attach Window」アクティビティの事で、この中に含まれるアクティビティは同一のウインドウで操作するという意味になります。つまり、ウィンドウが変わればコンテナーも新たに作成されます。
セレクタの作り方が違うと何が変わるの?
セレクタの作り方が違うだけで何が変わるの?と思う方もいるかもしれません。
例えばBasicレコーディングはアクティビティ毎に「全てのセレクタを作り出す」ため、アプリケーションが複数あっても位置を正しく判断できる反面、何度もセレクタを作り直すため、その分処理速度が落ちます。
Desktopレコーディングは最初にウインドウのセレクタを作り、そのセレクタを再利用するため、速度はBasicと比べると早い(といわれています)反面、複数のアプリケーションをまたぐ操作は得意ではありません。
そのため、BasicとDesktopレコーディングの使い分けは、以下のように対象画面数と操作数(アクティビティ数)で判断するとよいでしょう。
画面 | 画面内操作 | モード |
複数 | 少ない | Basic |
単数 | 多い | Desktop |
単数 | 少ない | Basic |
複数 | 多い | 状況によって※ |
※画面数も多く、その中で行われる操作も多い場合は、対象ごとに処理を分けた方が良いと思います。
実行速度を測定してみる
速度に違いがあるといっても実際にどの程度違うのか、BasicとDesktopレコーディングで計測してみました。
測定方法
対象
エクセルのリボンにある、「ホーム」「挿入」「ページレイアウト」「数式」「データ」「校閲」「表示」「開発」の8つのタブを順にクリックする処理をレコーディング機能を使って作成する。
計測方法
ログに出力される、開始時間と終了時間の差を処理時間とする。
処理時間結果
UiPath Studioで実行した場合の処理結果です。
basicレコーティングの結果(平均:5.904秒)
# | 開始時間 | 終了時間 | 差 |
1 | 12:07:12.391 | 12:07:18.280 | 5.889 |
2 | 12:12:16.988 | 12:12:22.898 | 5.910 |
3 | 12:13:19.018 | 12:13:24.966 | 5.948 |
4 | 12:13:48.342 | 12:13:54.254 | 5.912 |
5 | 12:14:14.592 | 12:14:20.544 | 5.952 |
6 | 12:14:40.736 | 12:14:46.606 | 5.870 |
7 | 12:15:04.047 | 12:15:09.922 | 5.875 |
8 | 12:15:28.257 | 12:15:34.164 | 5.907 |
9 | 12:15:51.976 | 12:15:57.864 | 5.888 |
10 | 12:16:14.932 | 12:16:20.817 | 5.885 |
平均 | 5.904 |
Desktopレコーティングの結果(平均:5.899秒)
# | 開始時間 | 終了時間 | 差 |
1 | 12:08:00.914 | 12:08:06.907 | 5.993 |
2 | 12:16:56.622 | 12:17:02.543 | 5.921 |
3 | 12:17:22.784 | 12:17:28.622 | 5.838 |
4 | 12:17:47.836 | 12:17:53.771 | 5.935 |
5 | 12:18:13.523 | 12:18:19.448 | 5.925 |
6 | 12:18:38.744 | 12:18:44.605 | 5.861 |
7 | 12:19:03.987 | 12:19:09.864 | 5.877 |
8 | 12:19:31.942 | 12:19:37.843 | 5.901 |
9 | 12:19:56.142 | 12:20:02.001 | 5.859 |
10 | 12:20:19.573 | 12:20:25.448 | 5.875 |
平均 | 5.899 |
せっかくなのでもう少し調査してみました。
Desktopレコーディングではウインドウセレクタを生成しないとのことなので、下図の通りエクセルタブの名称だけ残して他のセレクタを削除してみました。
セレクタの削除(平均:6.049秒)
同じように10回実行してみたところ、かえって遅くなってしまいました。恐らく、それぞれタブの名称を画面内から探す必要が出てしまい遅くなっているのだと思われます。
# | 開始時間 | 終了時間 | 差 |
1 | 16:32:12.195 | 16:32:18.230 | 6.035 |
2 | 16:32:53.213 | 16:32:59.287 | 6.074 |
3 | 16:33:23.648 | 16:33:29.707 | 6.059 |
4 | 16:33:53.409 | 16:33:59.470 | 6.061 |
5 | 16:34:32.331 | 16:34:38.385 | 6.054 |
6 | 16:35:02.897 | 16:35:08.888 | 5.991 |
7 | 16:35:35.984 | 16:35:42.037 | 6.053 |
8 | 16:36:37.074 | 16:36:43.136 | 6.062 |
9 | 16:37:21.582 | 16:37:27.602 | 6.020 |
10 | 16:37:48.050 | 16:37:54.132 | 6.082 |
平均 | 6.049 |
Indexにしてみた結果(平均:5.862)
それならばと、本件の趣旨とは少しずれますが、タブ名での指定をIndex指定にしたところ少し早くなることが確認できました。
# | 開始時間 | 終了時間 | 差 |
1 | 16:44:18.742 | 16:44:24.574 | 5.832 |
2 | 16:45:27.982 | 16:45:33.857 | 5.875 |
3 | 16:46:01.658 | 16:46:07.514 | 5.856 |
4 | 16:46:32.206 | 16:46:38.069 | 5.863 |
5 | 16:46:58.233 | 16:47:04.072 | 5.839 |
6 | 16:47:32.539 | 16:47:38.412 | 5.873 |
7 | 16:47:57.526 | 16:48:03.376 | 5.850 |
8 | 16:48:23.376 | 16:48:29.271 | 5.895 |
9 | 16:48:48.469 | 16:48:54.360 | 5.891 |
10 | 16:49:13.112 | 16:49:18.959 | 5.847 |
平均 | 5.862 |
アクティビティ数が8つと少ないことや、試行回数も少ないためあまり差異はでていません。この差を大きいとみるか小さいとみるかは、プロジェクトの内容や開発者によって異なりそうですね。
まとめ
BasicレコーティングとDesktopレコーディングではセレクタの作成方法が異なるため、対象とする画面の数やアクティビティの数で使い分けていきましょう。
また少数のアクティビティではそれほど速度の違いはありませんが、大量かつ深いセレクタの場合は目に見える差が出るかもしれませんね。