UiBot:みんなのためのロボット!

ユーザの位置: トレーニングセンター > UiBot開発者ガイド > 19.ダイレクトUIベースのソフトウェア
19.ダイレクトUIベースのソフトウェア

以前、MFC、WTL、WinForm、WPFなどを含むWindowsソフトウェアインターフェイスを開発するためのフレームワークは、Microsoftによって提供されました。Microsoftは自動化のインターフェイスを十分提供することができます。近年、ソフトウェアインターフェイスをより魅力的で使いやすくするために、多くのベンダーと開発チームは、独自のWindowsソフトウェアインターフェイスを開発するためのフレームワークを考案しました。そのフレームワークはDirectUIと呼ばれます。そのフレームワークのインターフェース要素はすべて描かれていて、人間の目で見ることができますが、オペレーティングシステムとその他のプログラムいずれもこのインターフェース要素がどこにあるか分かりません。一部のDirectUIフレームワークは、インターフェイス要素を判断する外部インターフェイスを提供しています。他のプログラム(UiBotを含む)は当然、そのインターフェイス要素の場所が分かりません46。


実際、UiBot CreatorとUiBot Workerのインターフェイスは、[電子(electron)](https://electronjs.org/)と呼ばれるDirectUIフレームワークを使って開発されたものです。 Electronはインターフェース要素にルックアップインターフェースを提供しますが、デフォルトではすべてのリリースが閉じられています。そこで、すでに気づいているかもしれませんが、UiBotのインターフェイス要素は、UiBot自身も含めてどの市場のRPAプラットフォームでも見つかりません。


WeChatのWindowsクライアントのようなDirectUIに基づいたソフトウェアがあります。 Tencent(WeChatの会社)がWeChatのWindowsクライアントを公開していないため、WeChatがどのようなDirectUIフレームワークを使っているかを知ることはできません。しかし、このフレームワークはインターフェイス要素のためのインターフェイスを提供しないため、市場のどのRPAプラットフォームでも利用できないことを判明しました。さらに、WeChatはブラウザに基づいてそのWebバージョンを提供しています。それによってインターフェイス要素を取得することができて、RPAプロセスでの使用をサポートします。


ゲームのインターフェイスは美しさと個性を強調しているので、ほとんどのゲームインターフェイス要素は「描かれている(drawn)」という点でDirectUIに似ています。 また、そのインターフェイスも通常、インターフェイス47を提供しません。その代わりに、さまざまなインターフェイス要素の位置を私たちに知らせます。DirectUIに基づいたソフトウェアと比べれば、ゲームインターフェイスはすばやく変化していて適時性に対する要求が高いです。一般に、RPAプラットフォームはゲームに対して最適化していないため、このプラットフォームでうまく機能できません。


ゲームで自動操作を使いたい場合、キーストロークを使用することをお勧めします。キーストロークは、ゲームのために特別に設計されています。そのゲームはビルトインで、シングルポイントカラーアライメント、マルチポイントカラーアライメント、イメージルックアップなどのゲーム固有のインターフェイスルックアップが備わっています。


[前の章] で紹介した[インターフェイス要素]は、コマンドとターゲットと一緒に使用しますが、UiBotではターゲットなしコマンドを使用します。 次の図に示すように、赤いボックスはターゲットのあるコマンドを表し、青いボックスはターゲットなしコマンドを表します。


! [Objective and Goalless Command] (imgsTarget/1.png){width="40%"}


ターゲットのないWindowsソフトウェアに出会う場合、ターゲットコマンドを使用することはできませんが、ターゲットなしコマンドを使用することができます。図にターゲットのないこれらのコマンドの中で、最も重要なのは「シミュレート移動(Simulated Movement)」です。 シミュレート移動の中で、コマンド内の座標点を指定する必要があるため、コマンドが実行されるとマウスポインターが同じ点に移動します。移動した後、「シミュレートクリック(Simulated Click)」コマンドを使用して、左クリックボタンをシミュレートして、ボタンを適切に押すことができます。また、これを使って入力ボックスにフォーカスを正しく設定して、「テキスト入力(Enter Text)」コマンドを使用して、フォーカスのところの入力ボックスにテキストの段落を入力します。たとえば、座標がx:200、y:300の入力ボックスがあります。次に、シミュレート移動で、座標をx:200、y:300に設定する必要があります。次に、左ボタンを押し、フォーカスを設定します。最後に、いつもの入力のようにテキストを再入力します。そうしないと、「テキスト入力」を直接に使用すれば、他の入力ボックスに入力してしまう可能性が高いです。


これから、Windowsオペレーティングシステムの画面座標を説明する必要があります。すでに画面座標がわかっている場合は、このセクションを飛ばしてもいいです。


[ここをクリックしてスキップしてください] (次の適切なセクションにジャンプすることができます。ユーザーは自分で検索する必要がありません)


Windowsのオペレーティングシステムでは、画面上の各ポイントは、xとyという2つの整数で構成される唯一の座標があります。たとえば座標x:200、y:300は、このポイントのx値が200で、y値が300であることを意味します。画面の左49側から数えると、Xは0から始まります(左から右へ0、1、2、3 ...)。Yは画面の上から下へ(0、1、2、3 ...)計算されます。 したがって、座標x:200、y:300の点は大体、下図に示す赤い円の位置にあります:


xとyの2つの整数値があるだけで、画面上の点の位置を計算することができます。UiBotには、画面上のポイントの位置を取得し、その変数を出力するコマンドがあります。どのようにx値とy値を一つの変数に保存しますか?UiBotで使用したWebspherecript言語の[言語リファレンス(language reference)]から学んだように、Webspherecriptには複数の値を保持できる「辞書(Dictionary)」というデータタイプがあります。そのため、UiBotがポイントの位置を出力するとき、特定の辞書タイプを介してその値a変数に出力します。例えば、この変数は「pnt」と呼ばれる場合、「pnt[ "x" ]”and “pnt[ "y" ]」を使用してxとyの値を取得することができます。


画面上の固定位置でインターフェイス要素であるターゲットなしコマンドを探すのなら、シミュレーション操作を正規化することができます。 通常、Windowsがマルチシステムであり、各Windowsの位置をドラッグすることができます。それにより、Windowsの中のインターフェイス要素の位置が変わることを招きます。 また、WeChatなどのようなソフトウェアでは、連絡先の位置は固定されていません。連絡時間の最も新しい前50位を示し、更新されるたびにその位置も変わります。


したがって、UiBotでは、固定座標をそのまま記述することをお勧めしません。なぜならば、それがいつも変わっているので、深く考慮することはできません。通常、ターゲットなしコマンドを使用する場合、そのターゲットの特徴を通じてインターフェイス要素の座標が見つかれるように、他のコマンドと一緒に使用する必要があります。そして、変数として見つかった座標を取得し、それをターゲットなしでコマンドに渡します。


UiBotでは、非オブジェクトコマンドの最高なパートナーはイメージコマンド(image command)です。


RPAの世界を探索する準備はできましたか?
自動化開始