はじめに
ScreenPlay は、UiPath® が提供する次世代のコンピューター使用エージェントで、自然言語での目標をアクションに変換し、アプリケーションやウェブページを操作する製品です。前回の記事で、ScreenPlayのインストール、及び実行方法について、説明しましたが、まだScreenPlayが初耳の方はぜひ、「UiPathのScreen Play (UI Agent)を使ってみた」を読んでみてください。
ScreenPlayは、UIAutomationアクティビティパッケージのバージョン25.10.20から一般提供が開始されました。リリースされたばかりのため、公式ドキュメントにはまだScreenPlayアクティビティのプロパティ設定に関する説明が記載されていません。そこで本記事では、各プロパティの機能を把握するために試行錯誤しながら検証した結果を共有いたします。ただし、ここで述べる内容はあくまで筆者個人の見解です。プロパティの正確な使い方については、近日公開予定の公式ドキュメントをご参照ください。
プロパティ一覧
| プロパティ | 主な機能 |
|---|---|
| 変数を使用 | タスク(プロンプト)に変数を挿入する |
| 画面から画像を追加 | タスク(プロンプト)に画像を挿入する |
| 前回実行のトレースを表示 | エージェントの動作を追跡する |
| モデル | 利用のモデルを選択する |
| 最大ステップ数 | エージェントの最大行動数を制御する |
| クリップボードで入力 | クリップボードに保持された情報を利用する |
| 利用可能な場合はDOMを使用 | 操作の際に利用するメソッドを指定する |
| Disable variable security | 変数のセキュリティを設定する |
| 結果 | エージェントの処理結果を保存する |
ほかにも、「入力モード」「待機時間」といったプロパティがありますが、UIAutomation共通のものなので、割愛します。
変数を使用
名前の通り、プロンプトに変数を挿入する機能です。入力データが都度変わる場合や、対向システムを指定する場合によく利用されるプロパティ。
例を挙げて説明します。
SeiとMeiという変数を定義し、テスクに挿入するデモです。
タスクの中身
あなたは、ユーザーが指定した情報をRPAChallengeに入力するエージェントです。以下の情報を利用し、作業を実施してください。
1.姓:<[Sei]>
2.名:<[Mei]>
RPAChallengeの「姓」と「名」欄に上記情報を入力してください。RPAChallengeの言語が英語に設定されている場合は、文言の意味に従って操作を行ってください。
そうすると、変数の値が入力されます。繰り返し作業で役に立つでしょう。
画面から画像を追加
このアイコンをクリックさせたいですが、どう伝えばいいだろうかと、表現しにくいUI要素があると思います。その際に、このプロパティは非常に有用な助手です。表現できなければ、画像を教えてあげればいいのではないか!
⊕を押し、画像を選択することで、画像情報は自動的にタスクに追加されます。以下のような感じです。
Qiita上のWindowsボタンをクリックしたいため、Windowsのアイコンを撮りましたが、プロンプトで、Windowsの文言がないので、ちゃんと認識できるかどうかは動画を見てみましょう。
ちゃんと認識し、クリックしてくれましたね。
前回実行のトレースを表示
DebugモードでScreenPlayを実行した後、実行証跡が記載されたHtmlファイルを生成する機能です。Htmlにおいて、実行時のキャプチャー、エージェントの思考過程、行動理由、行動種類といった様々な情報が記載されています。エージェントが自律的に操作した過程を確認する際に、非常に有用な情報となります。想定通り行動しない場合は、これを見て調整していきましょう。
モデル
プレビュー段階で、BYOM(自分で用意したモデル)のみサポートされましたが、GA後は、OOB(UiPathが提供したすぐ使える)モデルも対応できるようになりました。
各主流なモデルが提供されていますので、開発の対向システムと相性の良いモデルを検証しながら選択しましょう。
なお、自動化の複雑さにより、品質重視とスピード重視の観点から、最適なモデルが異なります。複雑で、ステップ数も多い自動化なら、GPT-5といった一般バージョンが良いでしょう。一方で、シンプルで、スピードを出せたい場合は、miniといった軽量化のモデルが良いでしょう。
最大ステップ数
エージェントの最大行動数を制御する機能です。最大は100まで設定できますが、さすがにこのような膨大な行動をエージェントに対応させるのは難しいと思います。UiPathのベストプラクティスによると、エージェントにUI自動化全体を完全に任せるのではなく、タスクはより小さく、集中したアクションに分解し、1つのアクティビティには2~3個の明確でシンプルなステップに留めることを推奨しております。
このような細かい部分に絞るアプローチには、次のようなメリットがあります。
①精度を最大化する。
②エージェントのフォーカスを維持する。
③多すぎるコンテキストによるモデルの過負荷を回避する。
クリップボードで入力
エージェント操作の際に、クリップボードに保持された情報を利用するかどうかに関するプロパティです。
「常時」や「可能な場合」を選択すると、データ入力に際して、エージェントがクリップボードの情報を確認しに行き、その内容を対向システムに貼り付けます。利用のポイントは2つ。
①よく「クリップボードに設定」のアクティビティと併用する
②タスク(プロンプト)でクリップボードを利用する旨を伝える
利用可能な場合はDOMを使用
DOMの概念に詳しくない方は、Miyate2さんが執筆されたJavaScript入門(※15分で理解できるJavaScriptの基礎)を読んでください。
このプロパティは、TrueとFalseという2つの選択肢があります。
Trueを選択すると、エージェントは、可能な限り対向システムのDOM情報を抽出し、DOM操作のメソッドを利用して行動します。ただし、対向システムのDOMを抽出できる場合でも、DOMの抽出によって逆に自動化が正しく実行できなくなることもあります。原因は、DOM内のUI要素の座標(サイズや位置)に関する情報が誤っている場合があるためです。必ずしもDOMがあればそれを絶対に使うというわけではないので、ご注意ください。
なお、DOMを抽出できない場合、このプロパティをtrueに設定していても、DOMは使用されないのです。既定でTrueになっていますが、ないと使用しないという仕様なので、特に対向システムの要素構成を気にしなくてもいいと考えております。
Falseを選択すると、DOMが抽出できても利用しません。その代わりに、UiPath独自のエージェントフレームワークを使用しています。このフレームワークでは、Computer Visionと画像グラウンディングモデルの両方を活用し、UI要素との正確な座標でのインタラクションを実現します。
Disable variable security
このプロパティはまだ日本語に翻訳されていません。英語名の通り、変数のセキュリティを保護する機能です。
スクリプトインジェクションという単語を聞いたことがございますか。簡単に言うと、サーバーにスクリプトを含んだリクエストを送り、スクリプト挿入攻撃の総称です。変数に変なスクリプトが潜んでいると、サーバー側はそれをペインテキストではなく、指令として認識し実行します。脆弱性に乗じ、悪意のスクリプトが実行されるとセキュリティ問題となります。Disable variable securityは、それを防ぐ機能です。
公式ドキュメントでは、この機能についての説明はすでに公開されているため、ご参考にしてください。以下のスクリーンショットは、公式ドキュメントの抜粋です。
出力結果(Result)
ScreenPlayは、単純に対向システムを操作するのみならず、操作の結果も出力できます。そのため、ScreenPlayは、データの照合や、推論といった従来のRPAで実現できない機能も実現できます。たとえば、画面上で表示されている内容は正しいかどうかを確認する場合は、正しいデータをエージェントに渡し、エージェントはシステム上の情報と突合して結果を返すことが可能です。この機能について、次回ScreenPlayの活用シナリオの記事で、説明しますので、お楽しみください。
終わりに
上記のプロパティを検証した感想を言いますと、ScreenPlayは、従来のセレクターというルールベースのロボと異なり、アプリケーション全体を対象にして高い自律性で動作し、昔不可能であったタスクを実行可能にします。このツールの将来性は期待に値します!
予告:次回はScreenPlayの活用シナリオについて紹介する予定なので、興味がある方はぜひ読んでください。











