UiPathではじめるRPA入門(3)〜 レコーディング編
今回は、前回一つ一つ登録していったアクティビティをレコーディングという方法で一気に登録する方法について学習します。
実際に動かしながらレコーディングの方法に慣れていきましょう。
Contents
レコーディングとは何か?
異なるレコーディングの種類
- Basic レコーディング
- Desktop レコーディング
- Citrix レコーディング
- Web レコーディング
フロー制御
- 2種類の条件分岐(Decision フロー と If 文)
- 変数への代入(Assign) と 繰り返し(Do While 文)
早速、始めましょう。
RPA入門(2)の記事では一つ一つアクティビティ登録する方法を学習しました。本記事ではレコーディングという方法で一気に登録する方法について学習します。実際に動かしながらレコーディングの方法を学習してみて下さい。
レコーディングとは?
UiPathのレコーディング機能とは、あなたがPC画面上で行なった操作を自動的にアクティビティとして記録する手法です。ひとつひとつアクティビティを設定する手間が省けますので、使いこなすことによって、ロボットの設定時間を大幅に短縮することができます。
アクティビティを自動登録する
レコーディングについて学びますが、これは、実際にPCを操作して、アクティビティを連続して自動的に登録していくことです。
他のRPAソフトウェアの中には、操作中の画面を動画として記録してアクティビティを作っていくものもありますが、UiPathは、シンプルにアクティビティを自動的に登録してきます。
Basic レコーディングをしてみましょう
電卓を操作するロボットを作成します
電卓を操作起動して、操作させてみましょう。
新たにプロジェクトを作成しておいてください。
どんな動作を記録しても良いですが、結果を確認するためどんな動作をさせるかはメモするなど覚えておいてください。
レコーディングの始め方
リボン > Design > Recording > Basic を選択してください。
レコーディング画面 〜 待機画面
レコーディング画面
レコーディングが開始されると、以下のウィンドウが出てきます。
このウィンドウがでている状態では操作は記録されていません。レコーディングの前に準備が必要な場合は、この画面の時に準備しておきましょう。
今回は、予め電卓を起動しておいてください。
「Record」ボタンをクリックしてレコーディングを開始します
レコーディング中の挙動
マウスを移動するとUI要素がハイライトされる
レコーディング中は、操作対象のUI要素がハイライトされます。ハイライトされた領域がUiPathが認識しているUI要素になります。認識されたUI要素は、Selectorと呼ばれる形式で登録されます。Selectorについての詳細は、ぜひUiPath Academyを受講してみてください。
レコーディングの中身(例)
テキストでは、以下の操作をレコーディングしたものとしています。
実際にレコーディングしてみましょう。
レコーディングの中断の仕方
エスケープ(ESC)でレコーディングを中断します。
ESCキーを入力すると、レコーディング画面(待機画面)に戻ります。
レコーディングを保存する
レコーディングができていると、待機画面で Save & Exit がクリックできるようになっているのでこれでメイン画面に記録して戻ります。
レコーディング結果
レコーディングの結果を見てみます
レコーディングの結果は、一つの Sequence 内にまとめられています。
Sequence をダブルクリックして中身を見てみると、先ほどレコーディングしたアクティビティが登録されています。この Sequence を StartNode に設定して実行して見ましょう。(Flowchartを使っていない場合は、StartNodeに設定する必要はありません。)
レコーディング結果の編集
さて、このままでは、レコーディングした全く同じことを繰り返すロボットが作成されただけです。これでは、業務上あまり役に立たないロボットになりそうです。レコーディング中に例えば「1」をクリックしたところを「6」をクリックに変更したい場合は、どうすればよいでしょうか。
先程クリック対象のUI要素は、プロパティの Target > Selector で定義されています。
実は、Selector を変更することによりロボットのクリック対象を変更することができます。直接的に中身を変更することもできます。
電卓の「1」をクリックした時のセレクターを覗いてみましょう。applicationframehost.exe、ApplicationFrameWindow、電卓、num1Buttonなどが並んでいます。順番に、アプリケーションの名前、ウィンドウの名前、タイトル、ボタンの名前かなぁというようなイメージが湧いてくるかと思います。
試しにそっと、num1Buttonをnum6Buttonに変更するとどうなるでしょうか?各自試してみてください。
レコーディングのテクニック
レコーディングできるもの、できないもの
先ほど、レコーディングを抜ける時には、ESCを押しました。つまりESCの入力自体は、レコーディングできない動作になっているということです。
UiPath のレコーディングには、自動レコーディングできるものとできないものがあります。自動レコーディングできないものについては、手動レコーディングが用意されています。
自動レコーディングできるもの
- 左クリック
- 文字入力
手動レコーディングするもの
- ショートカットキー
- 修飾キー
- 右クリック
- マウス Hover
- テキストの取得
- 要素、画像の検索
- クリップボードへのコピー
- etc
レコーディングのテクニック 〜 アプリケーションの起動
先ほど、電卓アプリケーションは事前に起動しておいてからレコーディングしました。
特定のアプリケーションを起動する方法は、実行ファイルをダブルクリックしても良いですが、UiPath では、起動するアプリケーションをウィンドウから選択する方法が用意されています。
レコーディング画面の「Start App」をクリックして、さらに「Start App」を選択します。
その後、起動済みのアプリケーションのウィンドウを選択してください。
選択すると、吹き出しがでてくるので、実行ファイルの場所を確認してください。ここで、win32calc.exeとなっているのがわかりますね。
「Arguments」というのは、起動時に引数を指定する方法ですが、ここでは割愛いたします。コマンドプロンプトからアプリケーションを起動したことがある方にはイメージがわかるかと思います。
「OK」をクリックしてアプリケーションを起動するだけのロボットを動かしてみましょう。確かに電卓が起動したと思います。
レコーディングのテクニック 〜 テキストの取得
電卓の計算結果を変数に取得して、これを「Message Box」 で表示してみましょう。
Textの読み込みには、レコーディング仮面の Copy > Copy Text でテキストデータを取得します。
取得したテキストの確認
テキストをコピーしたアクティビティは、以下の図のようになります。
テキスト取得のアクティビティのプロパティ
プロパティの Target > Selector と Output > Value を確認してみましょう。
取得したSelector
今回取得した Selector は以下のようになっています。(2255は、今回の計算結果なので読み替えてください。) ここでは、特に結果を取得したところのSelectorを見てみましょう。ctrlid=’150′ title=’2255′ となっているところがありますね。’2255’は、今回の計算結果が表示されているだけなので、計算結果が変わるとうまくいかない感じがしますね。
Message Box の追加
取得した数字を Message Box に表示させてみます。
Recording Sequenceのなかに、Message Box で取得したテキストを表示させます。
他の値を入力させたりして、実行結果を確認してみてください。結果の取得が上手くいかないときは、先程のSelectorが原因かもしれません。
Basicレコーディング – Exercise
2つの整数の和を計算するロボットを作ってみましょう。Input Dialog と Message Box を使います。
普通はやらない方法ですが、Selectorを強引に書き換える方法でもクリックする場所を変更できることを試してみましょう。
レコーディングの種類
既にBasicレコーディングのところで、他のレコーディング方法が見えていたかと思いますが、レコーディングの方法にはいくつかの種類があります。以下、簡単に紹介します。
Basic
デスクトップアプリケーションをレコーディングする方法です。複数のアプリケーションをまたいだ操作のレコーディングができます。
Desktop
デスクトップアプリケーションをレコーディングする点ではBasicと同じですが、一つのアプリケーションの操作を続ける場合は、Basicよりも高速に動作します。
Web
Internet Explorer 上の操作を自動化します。今回は省略します。
Citrix
リモートデスクトップなど、Windows上でUI要素が認識されないアプリケーションの自動化に使います。Selectorの概念は、なく操作対象領域の画像マッチで操作を記録していきます。
Exercise
Basicと同じように、Desktopレコーディングで電卓の操作をレコーディングしてみましょう。
Desktop vs Basic レコーディングの結果の比較
Desktop レコーディングでは、操作対象ウィンドウが固定されます。
Desktopレコーディングでは、すべての操作が、Start Appの中に定義されていることがわかると思います。また、Selectorもシンプルになっています。
一方のBasicレコーディングでは、全体の操作を囲っているものはSequenceのみで、アプリケーションの起動は単独のアクティビティになっています。さらにSelectorは、アプリケーション名から細かく定義されています。
Citrix レコーディング
先ほどレコーディングした電卓の操作を、Citrixレコーディングでもやってみましょう。
Citrixレコーディングは、画像を認識して操作を登録する方法です。
画像の認識方法
Citirixレコーディングで画像を認識させる方法は、テキストと画像の2種類があります。
テキスト
画像をOCRなどでテキストに変換して、指定したテキストが見つかったところを操作します。日本語フォントだとうまく機能しない場合もありますが、柔軟な利用ができるので現実的な方法です。
画像
ドラッグアンドドロップで指定した画像を登録し、指定した画像が見つかったところを基準とした場所を座標などで指定し操作します。
Citrixレコーディングをやってみる
先ほどレコーディングした電卓の操作を、Citrixレコーディングでもやってみましょう。
Citrixレコーディングは、画像を認識して操作を登録する方法です。
Citrixレコーディングには、自動レコーディングはありません。手動レコーディングで一つずつ登録していきます。
Citrix レコーディング 〜 画像クリック
Click Imageを使うとクリックする領域を選択するアイコンに表示が変わります。
クリックしたい領域をドラッグして指定します。
Citrix レコーディング 〜 テキストクリック
Click Textを使うとOCRを使ってテキストが登場する場所のクリック指定ができます。
クリックしたい領域を選択します。
クリックするテキストの選択
続いて、取得したテキストからクリックするテキストを指定します。
設定したら実際に動かしてみましょう。
フロー制御
条件分岐
条件分岐には、全く同じ動作を定義できる2つの方法があります。それぞれに使いやすいシーンが異なりますが、完全に同じ挙動を記述できます。
Flow Decision
フローチャート内での条件分岐を行う方法。より大きな視点から条件を分けたい場合に適しています。
If
シーケンスに分岐します。小さな分岐を定義する際に便利です。
Flow Decision
概要
フローチャート内に定義するタイプの条件分岐です。
プロパティ
アクティビティ
評価するCondition(TrueかFalseを返す式)を設定し、Trueの場合、Falseの場合で場合分けします。
If
概要
シンプルな条件分岐に最適なシーケンスタイプのアクティビティです。
プロパティ
アクティビティ
変数への代入
Assign
変数に値を代入するアクティビティです。変数の初期値として設定しても同じようなことができますが、アクティビティ内にまとめて整理したい時などに便利です。また、途中で変数の値を変更したいときにも使います。
プロパティ
アクティビティ
繰り返しの制御
アクティビティーを戻す
フローチャートでアクティビティを後ろのアクティビティに戻して接続する方法です。シンプルに矢印で制御できます。
Do While
フローチャートでアクティビティを後ろに回すのとほぼ同じですが、次の繰り返しの前に条件文を判定して、判定結果が True であれば繰り返し実行します。
For Each
複数の要素が入っている配列など、繰り返し処理が可能な変数を受け取ってそれらの要素一つ一つに対して処理を実行します。エクセルデータを取り出して一行ずつ処理するなどしたい場合に使います。
練習問題
正解するまで終わらない数当てゲームをロボットで作ってみましょう。
数あてゲーム
復習
新しい概念や操作が多く覚えきれないところもあると思います。
情報をここで復習してみましょう。
レコーディングは、なにを記録するものですか?
異なるレコーディングの種類について
- Basic、Desktop レコーディングの違いを説明してください
- Citrix レコーディングの方法を説明してください
フロー制御について
- 2種類の条件分岐、Decision フロー と If 文の違いを説明してください
- 変数への代入(Assign) と 繰り返し(Do While 文)について説明してください
ではまた次回。
次回は、UiPathでのデバッグの方法について説明します
ロボットの動作が期待と異なる時の対処方法〜デバッグ
- 動作中のアクティビティを一つ一つ調べる(Debug実行モード、Step Into)
- 特定の動作の直前で止める(Breakpoint)
- 変数の中身を表示する(Log Message)
予期せぬ致命的状態が発生した場合の対処法〜例外処理(Error Handling)
- エラーを補足する(Try Catch)