UiPath Remote Runtimeのメリットと利用手順

## はじめに
本文書ではUiPath Remote Runtimeのメリットと利用手順について説明します。
- 対応バージョンはUiPath Studio v2023.4を前提としています。
- 公式Webガイド: https://docs.uipath.com/ja/studio/standalone/2023.4/user-guide/about-uipath-remote-runtime

## UiPath Remote Runtimeとは？
- UiPath Remote Runtimeとは、クライアントにインストールされたStudio/Robotとは異なるマシンで実行されているリモートアプリケーションまたはデスクトップのUI要素を認識するためのコンポーネントです。
    - リモートアプリケーションまたはデスクトップのUIは画像としてクライアントに転送されるため、従来の自動化方式では画像認識によるUI識別およびホットキーによるUI操作に頼ることになり、セレクターの精度やワークフローの保守性を向上させることが困難でした。
    - Remote Runtimeではサーバー側とクライアント側にセレクター受け渡しのモジュールをインストールすることによってローカルアプリケーションと同様にUI要素を認識し、UI操作などの自動化が可能になります。
- Remote Runtimeの機能を使用するには、リモートホスト(サーバー)側にRemote Runtimeをインストールし、クライアント側にリモートアプリ・デスクトップ製品に応じた拡張機能をインストールします。なおリモートホストにはStudio/Robotをインストールする必要はありません。
![RemoteRuntime10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178312/84c26327-09f3-5f3d-1de0-fbb4cdf9d81d.png)

## 対応するリモートアプリケーション/デスクトップ製品と注意点
- 2023年6月時点ではRemote Runtimeは下記の製品に対応しております。
    - Citrix Virtual Apps and Desktops (旧 XenApp / XenDesktop)
    - VMware Horizon
    - Windows RDP
    - 【追記】2024年10月リリースで [Amazon WorkSpacesにも対応](https://qiita.com/hidecha/items/6a9545d2b8bc3159e910)
- 拡張機能をインストールするマシンではそれぞれの製品のネイティブクライアントアプリを使用します。
    - Citrix Workspace app for Windows
    - VMware Horizon Client for Windows
    - Windowsリモートデスクトップ接続 (mstsc.exe)
- つまり次のような接続方式・クライアントアプリには対応していないためご注意ください。
    - Citrix HTML5接続
    - VMware Horizon HTML5接続
    - Microsoftリモートデスクトップ (Microsoft Storeアプリ)
    - サードパーティのRDPクライアント

## Remote Runtimeの使い方
ここではWindowsリモートデスクトップ接続にてRemote Runtimeを利用する手順について説明します。
1. まず最新のRemote Runtimeを[ダウンロード](https://download.uipath.com/UiPathRemoteRuntime.msi
)し、RDP接続先のマシンにインストールします。リモートマシンのChrome/EdgeやJavaアプリを自動化したい場合には、詳細設定にてそれぞれの拡張機能もインストールします。
![RemoteRuntime01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178312/e57c5fd4-c6fb-eb09-c667-212e9a3eedb7.png)
1. 接続元のStudioマシンにて拡張機能をインストールします。
    - [ツール] > [UiPath 拡張機能] > Microsoftリモートデスクトップとアプリをインストールします。
    ![RemoteRuntime02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178312/645ee4f8-0c38-6347-4842-086813a892de.png)
        - Citrix Virtual Apps and Desktopsに接続する時はCitrix拡張機能、VMware Horizonに接続する時はVMware Horizon拡張機能をそれぞれインストールします。
    - UiPath Robotのみがインストールされているマシンではコマンドプロンプトにて拡張機能をインストールします。
        - 現在のユーザーのみ: ```"C:\Program Files\UiPath\Studio\UiPath\SetupExtensions.exe" /RdpClient```
        - すべてのユーザー(要管理者権限): ```"C:\Program Files\UiPath\Studio\UiPath\SetupExtensions.exe" /RdpClientGlobal```
1. 次にワークフローを作成します。事前にWindowsリモートデスクトップ接続(mstsc.exe)にてRDP接続し、自動化対象のアプリケーションに対してUIAutomationなどのアクティビティを使用します。ローカルアプリケーションと同様にUI要素を認識し操作することができます。
![RemoteRuntime07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178312/a3101b63-cfc7-d694-fc07-994582b4a28a.png)

- リモートデスクトップのUI要素が認識できない場合にはRemote Runtimeインストールと拡張機能インストールを再確認するとともに、後述の「サイドバイサイドサポート」のセクションをご参照ください。

## Remote Runtime 利用上の注意点

### サイドバイサイドサポート (UI Automationバージョンとの一致)
- Remote Runtimeで使用されるUiPathアクティビティのバージョンとワークフローで使用するUI Automationアクティビティのバージョンを合わせる必要があります。両者のバージョンが異なる場合、ワークフローでUI要素を認識する際に次のようなエラーが発生します。
![RemoteRuntime03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178312/907d9c2c-3a25-8df6-3935-95087797da65.png)
- Remote Runtimeで使用されるUiPathアクティビティは複数バージョン共存可能です。これによってワークフローごとに異なるUI Automationアクティビティのバージョンを利用することが可能です。
- 具体的な手順として、Studio側で使用されるUiPath.UIAutomation.Activitiesに対応したUiPathアクティビティをRemote Runtime側にもコピーします。
    - コピー元(Studioマシン): ```%UserProfile%\.nuget\packages\uipath\<version>```
    - コピー先(Remote Runtimeホスト): ```C:\Program Files (x86)\UiPath\RemoteRuntime\packages\uipath\<version>```
![RemoteRuntime05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/178312/9b88525c-0d69-0356-a82a-cfb82f8b4887.png)
    - 両者のバージョン対比は次のサイトを参照ください: https://docs.uipath.com/ja/studio/standalone/2023.4/user-guide/about-uipath-remote-runtime#side-by-side-support

## おわりに
本文書ではUiPath Remote Runtimeのメリットと利用手順について説明しました。Studio/Robotと異なるマシンであってもローカルと同様にUI要素を認識し操作する便利な機能になりますので、皆さん是非ご活用ください！