Generic selectors
Exact matches only
Search in title
Search in content
Search in posts
Search in pages

【Power Automate Desktop使い方③】条件分岐と繰り返しとは?~無料テキスト練習問題No.2の解説~

RPA HACKを運営するPeaceful Morning株式会社ではRPAツール「Power Automate Desktop」の無償提供を受け、同ツールの導入を検討されている方に向けて、ノウハウをまとめた教材を公開しました。この記事では、無料公開テキストの練習問題No.2であるロボットがランダムに用意した数値を人間が当てる推理ゲームの実装方法について解説します。推理ゲームのロボットの作成を通して、条件分岐と繰り返しへの理解を深めることができます。

無料公開テキストのダウンロード

※なお、こちらはPower Automate Desktopの導入を検討する企業、導入済みの企業担当者の方向けのテキストのため、RPA導入支援、開発等のサービスを提供する同業他社の方のダウンロードはご遠慮くださいますようお願い申し上げます。

Power Automate Desktopとは

Power Automate Desktopとは世界最大手ソフトウェアベンダーであるマイクロソフトが開発・提供しているRPA(Robotic Process Automation)ソフトウェアです。

2021年3月2日にマイクロソフトはそれまで有料であったPower Automate DesktopをWindows 10ユーザー向けに無料提供することを公式発表しました。

Power Automate DesktopでローコードRPAを使用して、日常業務を自動化することによって、私たち人間は高付加価値でクリエイティブな業務に専念することが可能となります。

▼Power Automate Desktopの解説記事はこちら▼

▼Power Automate Desktopのインストール方法解説記事はこちら▼

この先の内容をスムーズに理解するために無料公開テキストの「レッスン1. PAD_基本操作 1.5 推理ゲーム」までをご一読いただくことをおすすめします。

条件分岐・繰り返しとは

ここでは、推理ゲームのロボットを作成するための前提知識として「条件分岐」と「繰り返し」について学びます。条件分岐と繰り返しはその他のロボットを作る際にも必ずと言っていいほど登場する処理となるので、ぜひこちらで理解を深めてください。

Power Automate Desktopでは、条件分岐や繰り返しを設定するアクションを追加すると、そのアクションからEndまでをひとかたまりとするブロックが生成されます。ブロック内に設定した処理が条件分岐や繰り返しの対象として扱われます。

条件分岐

条件分岐とは、特定の条件を満たした場合にのみ実行したい処理があるときに行う処理のことです。Power Automate Desktopでは条件分岐を「If」というアクションで設定することができます。

条件分岐の使用例を示します。Excel上の社員名簿を別のExcelに転記するロボットに入社20年以上であればシート1に、入社20年未満であればシート2にその社員の情報を記入する機能を追加したいとします。このときの条件分岐を図で表すと以下のようになります。

これをPower Automate Desktopで実現するには、例えば、もととなるExcelファイルから社員のデータを読み込んだときに入社歴を保存する変数(ここではyearとします)を生成して、Ifアクションでyearと20の大小関係を比較すればよいです。

このように条件を設定した場合、入社歴が20年以上のときIFの内側にあるアクションが実行されます。このままでは入社歴20年未満の社員のデータに対する処理を指定することができません。そこで登場するのが「Else」アクションです。ElseアクションをIfとEndの間に配置することで、Elseアクションが含まれるIfブロック中でElseより上で指定した条件以外のときに実行する処理を指定することができます。上記の入社歴を判定するIfブロックにElseアクションを追加した場合、Elseの内側の処理が実行されるための条件は「入社歴が20年以上」以上のとき、つまり入社歴が20年未満であることとなります。

以上のことから、この例ではシート1に記述するという処理を「If year >= 20 then」のすぐ下の行に、シート2に記述するという処理を「Else」の下に追加すれば、求める機能を実装することができます。

繰り返し

繰り返しのアクションを利用すると、指定した条件を満たす限り、繰り返しブロック内の処理を繰り返すことができます。Power Automate Desktopでは繰り返しを指定するアクションとして、次の3つが用意されています。

 

アクション名

機能

For each

データテーブルやリストを一つ一つ繰り返す

Loop

指定した回数繰り返す

ループ条件

指定した条件が真のとき繰り返す

例えば、Excel内のデータに対して1行ごとに同じ処理を繰り返したい場合にFor eachを利用します。Excelファイルの取り扱いについて詳しく知りたい方は公開テキストの「2.2 Excelファイルの取り扱い」をご覧ください。

確認問題

確認問題1

問題:変数 i に5が代入されている場合、 i に20が代入されている場合それぞれどのようなメッセージが表示されるでしょうか?

ヒント:「Else if」は、Else ifよりも上にある条件は満たしていないが、Else ifで指定した条件を満たしている場合、その下にある処理が実行されます。

解説:1つ目の条件「If i < 5 then」に対応する処理は i が5未満のときに実行されます。2つ目の条件に対応する処理は「Else if i < 10 then」は i は5未満ではないが10未満であるとき、つまり i が5以上10未満であるとき実行されます。3つ目の条件「Else」は i が5未満でも10未満でもないとき、つまり i が10以上のとき実行されます。

よって、i に5が代入されているときは2つ目の条件に対応する処理である「2つ目の処理が実行されました」というメッセージが表示され、i に20が代入されているときは3つ目の条件を満たす処理として「3つ目の処理が実行されました」と表示されます。

確認問題2

問題:このロボットを実行すると、何回メッセージが表示されるでしょうか?

ヒント:変数 i には初期値として1が代入されており、繰り返しブロック内の処理としてメッセージが表示される度に i は1ずつ増えていきます。

解説:「ループ条件 While( i ) <= (5)」より条件として「i が5以下である」のとき繰り返しブロック内の処理が実行されることが分かります。メッセージが表示される度に繰り返しブロック内で i は1, 2, 3, 4, 5と変化するので、メッセージは5回表示されます

推理ゲームを作る

それでは、条件分岐と繰り返しを使って、公開テキストの練習問題No.2であるロボットがランダムに用意した数値を人間が当てる推理ゲームの作成に取り掛かります。以下の処理フローを実装します。

処理フローの構成を理解する

まずは処理フローのどの部分に条件分岐や繰り返しを設定する必要があるか考えましょう。条件分岐であればどのような条件を指定するのが適切か、繰り返しであれば繰り返しの終了はどのように設定できるかに着目すると、実装すべき構成の全体像が浮かびあがります。

今回、条件分岐が必要となるのは「正誤判定」と「答えと入力値の比較」の2か所です。正誤判定には等号(=)を、答えと入力値の比較には不等号(>)の利用するとよいでしょう。

また、人間が正解を入力するまでの間、正誤判定や答えと入力値の大小比較およびその結果の表示は繰り返される処理となります。したがって、正解が入力されることを終了条件として、「人が入力」から「もっと大きい(小さい)と表示」までの処理を繰り返しのブロックに組み込むことが適切であると考えられます。

一度に全ての処理を実装するのは大変なので、乱数の生成、正誤判定や大小比較といった個々の機能ごとにアクションを組み立てます。

乱数の生成

乱数の生成の機能を実装します。Power Automate Desktopには乱数を生成する機能をもった「乱数の生成」というアクションがあります。左上のアクションの検索バーで「乱数の生成」を検索し、フローへドラッグアンドドロップで追加してください。

アクションを追加すると、「パラメーターの選択」画面が表示されます。最小値と最大値を入力することで生成される乱数の範囲を指定することができます。解説では、最小値を1に最大値10に指定することとします。つまり、この推理ゲームでは1から10のなかからロボットが生成した数字を当てることになります。数字は半角で入力するよう注意してください。

生成された乱数は変数「RandomNumber」に保存されます。乱数の生成の機能の実装は以上で完了です。

入力用ダイアログボックスの表示

人間が答えだと思う数値を入力するダイアログボックスを表示する機能を実装します。アクションの検索バーから「入力ダイアログの表示」を検索し、ドラッグアンドドロップでフローに追加してください。

パラメーターの選択画面では「入力ダイアログのタイトル」に入力した値がダイアログのタイトルに、「入力ダイアログ メッセージ」に入力した値がダイアログのメッセージに表示されます。解説では、タイトルとメッセージを次のように設定しました。

その他のパラメーターはデフォルトの状態で問題ありません。詳しく知りたい方は、各パラメータ―の右にある「i」の部分にカーソルを合わせると、そのパラメーター役割が表示されますので、参考にしてください。

このアクションにより、人間の入力値は変数「UserInput」に保存されます。

正誤判定

条件分岐処理の1つである正誤判定の機能を実装します。アクションの検索バーから「If」を検索し、ドラッグアンドドロップでフローに追加してください。

パラメーターの選択画面で条件分岐を指定する条件を入力します。正誤判定がここでの目的であるため、「最初のオペランド」に変数「RandomNumber」を、「演算子」に「と等しい(=)」を,  「2番目のオペランド」に変数「UserInput」を設定します。変数は{x}をクリックすることで選択できます。

乱数と入力値が一致したとき

先ほど作成したIfブロック内に処理を追加します。Ifアクションの条件が「RandomNumber = UserInput」であるため、Ifアクションのすぐ下には乱数と入力値が一致したときの処理をします。ここでは、正解したことを知らせるメッセージボックスを表示する機能を追加することにします。アクションの検索バーから「メッセージを表示」を検索し、ドラッグアンドドロップでフローに追加してください。

入力ダイアログを作成したときと同様に「メッセージボックスのタイトル」は推理ゲームとします。「表示するメッセージ」では変数を含むメッセージの表示に挑戦してみましょう。以下の手順で「表示するメッセージ」に入力します。

1.「おめでとうございます!正解は」と入力します
2.{x}をクリックし、「RandomNumber」を選択します
3.「でした。」と入力します

次の画像のようになっていれば正しく設定できています。

変数を組み込むことで、実際に表示されるメッセージ上では、変数の部分が変数に代入された値に置き換わって表示されます。例えば、RandomNumberが5だった場合メッセージでは「おめでとうございます!正解は5でした。」と表示されます。

乱数と入力値が異なるとき(大小比較)

乱数と入力値が異なる、つまり推理が外れてしまった場合の処理をします。乱数と入力値が異なるので、アクションの検索バーから「Else」を検索し、フローにドラッグアンドドロップで追加してください。Elseの下に推理が外れたときの処理を追加します。

構成フローの図から推理が外れた場合は、ユーザーに向けて入力値が正解よりも大きいか小さいかを表示します。そこで2つ目の条件分岐「大小比較」を実装します。

アクションの検索バーから「If」を検索し、フローにドラッグアンドドロップで追加してください。解説では「正解が入力値より大きい」を大小比較のIfアクションの条件とします。「最初のオペランド」に変数「RandomNumber」を、「演算子」に「より大きい(>)」を,  「2番目のオペランド」に変数「UserInput」を設定します。変数は{x}をクリックすることで選択できます。

Ifアクションの条件が成り立つとき、正解は入力値よりも大きいので、「正解は(入力値)より大きいです」というメッセージを表示させます。「乱数と入力値が一致したとき」を参考にこの機能をご自身の力で追加してみてください。なお、(入力値)の部分にはユーザーが実際に入力した値が表示されるよう設定してください。

次の画像のようになっていれば正しく設定できています。

フロー全体の順序については次の画像のようになっていれば正しく設定できています。

 

同様にして正解が入力値より小さい場合の処理を追加します。この場合の処理は、大小比較のIfブロック内に「Else」アクションを追加し、その下に「メッセージを表示」のアクションを追加することで実装できます。こちらもこれまでの作業を参考に皆さんご自身の力で実装してみてください。

ヒント:アクションを右クリックするとアクションのコピーが選択できます。

次の画像のようになっていれば正しく設定できています。

「正解が入力値より大きい」という条件にElseアクションを使用すると、Elseアクションの条件は「正解が入力値以下である」となるため適切でないと考える方に向けた解説です。Elseアクションの条件は「正解が入力値以下である」であることは間違いないのですが、そもそも「正解が入力値より大きい」という条件が「正解と入力値が一致する」という条件のElseアクションの中に含まれているため、正解と入力値が一致しているとき、大小比較のIfブロック内の処理は実行されません。よって、「正解が入力値以下である」という条件であっても、その処理が実行されるのは正解が入力よりも小さい場合に限られます。

また、今回は練習問題No.2の構成フローをもとに作成しているため、このような条件分岐を設定しましたが、IfとElse IfとElseの3つのみで正誤判定と大小比較の処理を実装することも可能です。余力のある方はIfとElse IfとElseの3つを使ったロボットの作り方も考えてみてください。

繰り返し処理

左上の実行ボタン(▷)を押してここまでのフローを実行してみましょう。作成したフローでは繰り返し処理を実装していないため、入力ダイアログボックスが1度しか表示されず、一発で当てない限り正解にたどり着くことができません。推理ゲームロボットの最後の処理として、繰り返しを実装します。

繰り返してほしいのは、入力ダイアログボックスの表示から正解と入力値の大小関係のメッセージの表示までの処理です。解説では、繰り返しのアクションとして「ループ条件」を使用します。ループ条件を使うには、終了条件を設定する必要があります。どのように設定すればよいでしょうか?

終了条件の指定方法の一例を解説します。ここでは、終了するか否かを判定するために変数「check」を新たに導入し、ループの終了を指定します。checkが1ならば繰り返しを続け、checkが0ならば繰り返しから抜けることとします。

アクションの検索バーから「変数の設定」を検索し、ドラッグアンドドロップで「乱数を生成」アクションの上に追加します。「設定」の項目の「NewVar」を「check」に変更し、宛先には1を入力します。

次の画像のようになっていれば正しく設定できています。

次に、アクションの検索バーから「ループ条件」を検索し、ドラッグアンドドロップで「乱数を生成」と「入力ダイアログを表示」のアクションの間に追加します。

パラメーターの選択画面で条件分岐を指定する条件を入力します。正誤判定がここでの目的であるため、「最初のオペランド」に変数「check」を、「演算子」に「と等しい(=)」を,  「2番目のオペランド」に「1」を設定します。変数は{x}をクリックすることで選択できます。ループ条件と対になっている緑色の「End」を選択し、ドラッグアンドドロップで一番下まで移動させます。これにより、checkが1である限りループ条件とEndで挟まれた、入力ダイアログの表示から正解と入力値の大小関係の処理が繰り返されます。

乱数と入力値が一致したとき繰り返しを停止したいので1つ目のIfブロック内の「メッセージを表示」アクションの下に新たに「変更を設定」アクションを追加します。「設定」の項目の「NewVar」を「check」に変更し、宛先には0を入力します。入力値が正解だった場合はcheckが0に変更されるので繰り返しから抜けることができます。

次の画像のようになっていれば正しく設定できています。

これにて推理ゲームのロボットは完成しました。左上の実行ボタン(▷)を押して推理ゲームで遊んでみましょう。

注意
・フロー変数のRandomNumberに答えが表示されています。
・Power Automate Desktopを閉じる際は、忘れずに保存をしてください。

Power Automate Desktopについてより詳しく知りたい方へ

Robo Runnerスクールのご紹介

この記事を読んでPower Automate Desktopについて詳しく知りたいと思った方には、当社が提供しているPower Automateの有料オンライン学習プログラム「Robo Runnerスクール」がおすすめです。こちらのプログラムでは、Power Automate Desktopの使い方の学習はもちろんのこと、Power AutomateとPower Automate Desktopを組み合わせたフローなど、あなたの作りたいフロー制作のサポートをします。

Robo Runnerスクールでは経験豊富な現役エンジニアがメンターとして学習のサポートを行います。メンターとともに学習スケジューリングや目標設定を行い、効率よく学習できるオリジナルのトレーニングテキストを使って自習をしつつ、途中で分からないことはチャットサポートで気軽にメンターに質問することで、Power Automateの学習効果を最大化することを目指します。

▼詳細・申し込みはこちらから▼

e-ラーニングのご紹介

マイクロソフト社によるRPAツール「Power Automate Desktop」の提供を受け、同ツールの研修サービス「Robo Runner e-ラーニング」の提供を開始しました。e-ラーニングはPower Automate、Power Automate Desktopの導入検討中、導入済の企業様において、基礎研修をリーズナブルな価格でご受講いただくことができます。
e-ラーニングは現役のPower Automateエンジニアによる監修・演習問題で手を動かしながら学べる・いつでも、どこでも好きなタイミングで受講が可能という3つの特徴を持ち、プログラミング経験のない方でも受講いただける内容となっています。

e-ラーニングに関する記事↓

e-ラーニング申し込みはこちらから↓

https://roborunner-e-learning.studio.site/

RPAの導入に踏み出そう

推理ゲームの実装を通じて体験していただいたように、Power Automate Desktopではアクションをドラッグアンドドロップするだけでロボットを作成することができるため、直感的な操作が可能となります。

これまで「RPAってよく分からない、難しそう」と感じていた方も、この記事を読んでRPAの手軽さを体感し、その導入に踏み出していただければと思います。

この記事を読んだ方には次の記事がおすすめです。

Power Automateの使い方解説記事

UiPathの使い方解説記事

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です