電話による営業、セールスはお断りしております。誠に申し訳ございませんが、問い合わせフォームよりお願い致します。 お問い合わせはコチラ

BizRobo!CAMPUS!!第17回~DA条件分岐編~に参加しました!

こんにちは!
RPA開発者の戸波です。
長らくブログの更新が滞ってしまい、大変申し訳ございません…

サイトの移転を経て、当RPAブログも開始から約2年が経ちました。
私が書き始めたころは、ブログが誰かの目に留まっているという実感がなく、自分の学習のためだとしてもこのブログを書くことに意味はあるのか、と自問自答することもありました。
しかし、コツコツと続けているうちに自分の記事にアクセスいただく数が増えたり、社内外で「ブログを読みました」とお声がけをいただいたりして、コツコツとブログを書き続けてきたことに意味はあったのだと気づき、同時にそれがモチベーションとなりました。
最近は他の業務との兼ね合いもありブログを書くことができていませんでしたが、これからも自分の学びをブログとしてアウトプットすることで、みなさまのお役に立つことができたら嬉しいなと思っております。
3年目もどうぞよろしくお願いいたします。

さて、余談はここまでにして、私が担当する久しぶりのブログです。
今回も以前までと同様に、BizRobo!CAMPUS!!に出席した際の内容・感想のまとめブログとなります。
今回は、DA(Desktop Automation)条件分岐編の様子についてです。
DAやChromium上で条件分岐を扱うことができるようになると、ページに表示された内容やアプリケーションの動きによってロボットの動きを変更できるようになるため、より思いのままにロボット開発ができるようになります。
演習問題とその解答もございますのでぜひご覧ください!

目次

BizRobo!CAMPUS!!のアジェンダ

今回のBizRobo!CAMPUS!!は、以下のような流れで進んでいきました。

(出典:RPAテクノロジーズ社 BizRobo!CAMPUS!!のスライド)

DAの条件分岐について

条件分岐の種類

DAの条件分岐は、大きく分けて以下の3種類に分けられます。
簡単に説明していきます。

(出典:RPAテクノロジーズ社 BizRobo!CAMPUS!!のスライド)

①条件付きステップ

条件付きステップでは、条件ごとのエクスプレッションの評価によって条件が分岐します。
trueとなった条件を実行し、他の分岐はスキップします。

(出典:RPAテクノロジーズ社 BizRobo!CAMPUS!!のスライド)

条件を書く際には演算子や関数を利用します。
特に演算子はよく使われるものが多く、かつ「==」や「!=」などは普段の生活で使う機会がない分誤りやすいので、この機会にしっかり覚えてしまいましょう!

(出典:RPAテクノロジーズ社 BizRobo!CAMPUS!!のスライド)

論理演算子は、「AかつB」や「AもしくはB」のように、複数の条件が組み合わされたものを評価する際に利用します。
条件付き演算子は、三項演算子ともいいます。
条件の後に「?」を置き、その条件を満たすときに値1を、満たさない場合に値2を返します。

(出典:RPAテクノロジーズ社 BizRobo!CAMPUS!!のスライド)

条件付き演算子について、少し細かく見ていきましょう。
エクスプレッションの中に、条件とそれを満たした場合・満たさなかった場合の値が格納されています。
つまり、条件分岐をしてその結果に応じて適した値を返す、という処理を一つのステップの中で済ませてしまうことができます。
実際のDAの画面で見ていきましょう。

例題として、100点満点のテストで90点以上を取った場合は「合格」、それ未満の場合は「不合格」と出力する処理を、条件付きステップと条件付き演算子、それぞれを使ってDAで作ってみましょう。

まず、条件付きステップを使う場合です。

変数は「テスト点数」(Integer)と「評価」(Text)を作成します。
テストでとった点数は「テスト点数」に、「合格」「不合格」の評価は「評価」に入ります。

1つ目の「割り当て」ステップで「テスト点数」に値を割り当てます。
今回は、80点とします。
そのため、評価には「不合格」と出力されます。

条件付きステップでは、条件式を2つ作成します。
1つ目は、「テスト点数が90点以上」、2つ目は「テスト点数が90点未満」です。
90点以上の条件式は「テスト点数 >= 90」、90点未満の条件式は「テスト点数 < 90」となります。
それぞれ、条件式の後の割り当てステップには「合格」「不合格」を割り当てます。
ロボットの全体図は以下のようになります。

以上が条件付きステップを使った方法です。
条件付きステップは、条件付きステップ内の分岐の数を増やすことで、多くの条件に対応させることができます。
ただし、その数分の条件式を書く必要があり、それぞれの条件式の後に値を割り当てる必要があります。
(例:90点以上は「合格」、89点から70点は「平均点」、70点未満は「不合格」と分岐させる、など)

次に、条件付き演算子を使う場合です。

用意する変数についてと、1つ目の割り当てステップでの値割り当てについては、条件付きステップを利用する場合と同じ手順なので、説明を省略します。

2つ目の「割り当て」ステップで、「評価」に値を割り当てます。
この時、テスト点数は90点未満であるため「評価」に「不合格」と割り当てられるように、条件付き演算子を使ってエクスプレッションに式を作ります。
この時の条件付き演算子の式は「テスト点数 >= 90 ? “合格” : “不合格”」となります。

「テスト点数 >= 90」が「テスト点数が90点以上か」という条件式、「?」の後の「合格」はテスト点数が90点以上の場合に「評価」に割り当てられる値、「:」のあとの「不合格」はテスト点数が90点未満の場合に「評価」に割り当てられる値となっています。

条件付き演算子をエクスプレッションで使うことで、割り当てステップだけで条件分岐をすることができます。
ただし、「?」の前の条件式は「true」「false」どちらかの判定しかできないため、一度に3つ以上に条件分岐させることはできません。
(例:90点以上は「合格」、89点から70点は「平均点」、70点未満は「不合格」と分岐させる、など)

実現したい操作にはどの条件分岐のやり方が適しているかを考えて、ぜひ使ってみてくださいね!

②ガードチョイスステップ

これは、アプリケーションやエレメントの状態、待機時間の評価によってどの分岐を実行するのかを決定します。
待機時間の評価というのは「○秒が経過したとき」という条件を満たすかどうか、になります。
これも①の条件付きステップと同様に、条件が満たされた分岐のみを実行し他の分岐はスキップします。
下のスライドにある例の条件分岐を作成してみましょう。

(出典:RPAテクノロジーズ社 BizRobo!CAMPUS!!のスライド)

画面上で以下のような操作を行う条件分岐を作成します。
スライドと、以下の図を見ながら処理を見ていきましょう。

①RPAテクノロジーズ株式会社のホームページを開く
②「製品紹介」にカーソルを乗せる
③「デジパス」をクリックする

①は、「参照」ステップで開くことができます。
そのあとに「ツリーの変更停止」を含んだ条件分岐があります。
ここでは、指定した時間次のステップの実行をせずに待機します。
これは、このステップの前にある「参照」ステップでホームページを表示するという処理が終わりきらないうちに、次の「マウスの移動」ステップ以降に進んでしまうことでロボットがエラーになることを防ぐため、ブラウザの起動が完了するまで待機するためのステップです。
30秒待っても表示されなかった場合はエラーとなるように、条件分岐がされています。

②は、「マウスを移動」ステップで実現できます。

③は、②でカーソルを移動し、「製品紹介」の上にマウスを置くことで表示されます。
②の次には「ロケーションが見つかった場合」を含んだ条件分岐があります。
ここでは、「デジパス」という要素が見つかるかどうかを確認しています。
「デジパス」の文字が見つかった場合は次へ進み、10秒経っても「デジパス」の要素が見つからなかった場合は、エラーとなるように条件分岐がされています。

③Try-Catchステップ

例外の内容によってどの分岐を実行するかを決定します。
下のスライドを例にとると、ブラウザのボタンをクリックするという操作をTryステップ内に作成し、何らかの理由でボタンが見つからなかった際にCatchブロックで例外処理を通るようにします。
しかし、今回はタイムアウトの例外が見つかっても後続の処理を実行するため、Finallyブロックにはタイムアウトしても処理を実行するようにステップを置きます。

(出典:RPAテクノロジーズ社 BizRobo!CAMPUS!!のスライド)

例外の種類には以下のようなものがあります。

(出典:RPAテクノロジーズ社 BizRobo!CAMPUS!!のスライド)

今回取り組んだ演習課題

1. 今回取り組んだ課題

今回取り組んだ課題はこちらです。
2題用意されていましたが、今回は1題のみ解説いたします。

(出典:RPAテクノロジーズ社 BizRobo!CAMPUS!!のスライド)

0点~100点までの範囲で、点数によって評価の出力内容を変更するという課題です。
先に説明した、3種類あるDAの条件分岐のうちどの条件分岐を利用するかというところから考えていきましょう。
この課題は、変数「point」に割り当てられた点数(エクスプレッション)を参照して評価を行うため、①条件付きステップにあてはまりますね。

以下の順番で説明していきます。

  • 変数の作成
  • 「point」に値を割り当て
  • 条件付きステップの作成
  • 「Result」に値を割り当て

①変数の作成

まず、変数を作成します。
今回作成する変数は、点数を入れる「point」と、評価を入れる「Result」の2つです。
DAの画面左下の「変数」で作成します。
変数「point」の型は整数を表す「Integer」、変数「Result」の型は文字列を表す「Text」を指定します。

②「point」に値を割り当て

次に、pointに点数を割り当てます。割り当てる際は「割り当て」ステップを利用します。
今回は50点とするため、pointに50を割り当てます。

③条件付きステップの作成

次に、条件付きステップを作成していきます。
今回は、点数ごとに4つの評価に分かれるため、4つの分岐を作成します。

それぞれの条件を作成していきます。
例えば、評価「優」がつく条件は80点以上かつ100点以下の場合になります。
つまり、pointの値が80~100である、という条件を満たす必要があります。
「pointが80点以上」、「pointが100点以下」それぞれの条件を式に表すと、「point>=80」、「point=<100」となります。
2つの条件の両方を満たす場合にのみ「優」を返すようにするため、論理ANDの演算子「&&」を2つの式の間に置きます。
最終的に、以下のような式となります。

同様に、「良」「可」「不可」の場合の式も作成します。
ここでは、「●●点以上△△点以下」(例:60点以上79点以下)の式の書き方を紹介しますが、「●●点以上××点未満」(例:60点以上80点未満)の書き方でも問題ありません。
どちらの書き方をするにせよ、0~100の値の中でどの条件にも当てはまらない値が発生することがないように注意してください。

「良」「可」「不可」の場合は、以下のような式となります。

評価「良」の式
評価「可」の式
評価「不可」の式

④「Result」に値を割り当て

次に、条件分岐後に評価を入れる変数「Result」に値を割り当てていきます。
「point」に値を割り当てた際と同じ手順で、「割り当て」ステップを利用して変数に値を割り当てます。

各条件の評価は、以下の図のように割り当てられますね。

ロボット全体図

①~④までで説明した通りにDAロボットを作成すると、以下のようになります。

感想

DSだけでなくDAで条件分岐ができるようになることで、Webページの要素や複雑な条件にも対応できるようになり、よりロボット開発の幅が広がるな、と思いました。
例えば、ロボットを作るときにガードチョイスステップを入れることで、Webページの小さな変更で要素が見つからないといったときにロボットが停止してしまうことを防ぐなど、より安定したロボット開発にもつながりますね。
また、条件付きステップを入れることで、Excel等のファイル名をみて条件を満たすファイルには情報を書き込む、満たさないものには書き込まないなどというように、アプリケーション上でも条件分岐を利用できます。
皆さんの業務で「こんなことできないかな?」とふと思うことを実現してくれる処理の一つだと思うので、ぜひ使いこなしてみてくださいね!

次回ブログは、9/22(金)に開催されました第18回BizRobo!CAMPUS!!~DA繰り返し編~についてのブログです。
次回ブログもお楽しみに!

最後までお読みいただきありがとうございました。

RPAは一般的な業務システムとは異なり、PoCを実施し、導入・運用開始で終わりではありません。
導入がスタートラインです。

業務効率化、人員最適化等の目標に応じた計画策定や人員配置、業務ロボットの開発・運用といったPDCAサイクルが必要です。
弊社では、貴社の課題に適した自動化プランのご提案や開発者育成研修も実施し、貴社と並走したサポートをご提供いたします。

お気軽にお問い合わせください。
BizRobo!や弊社サポートについて詳しくはこちら

目次