【第74回】ロータス博士のWinActor塾~データ一覧実践編Ⅱ
今日は前回出題したシナリオの解答例を紹介しよう。
ロータス君のシナリオも見せてもらったが、まあまあ良かったぞ。
シナリオが間違ってたらと思うと夜しか眠れませんでした。
ぐっすり眠れとるじゃろそれは・・・。
では早速やっていくが、この解答はあくまで例じゃからな。
どのシナリオが正解というのは無いんじゃ。
そのあたりは頭に入れておくんじゃぞ。
博士がいつも言ってるやつですね!
うむ。やり方はひとつではないからの。
処理速度を詰めていくという話にならない限りは、動いてなんぼじゃからな!
ちなみに、今回の問題にまだ挑戦していない方は前回の記事をチェックじゃぞ。
シナリオ全体図
まずは解答例となるシナリオの全体像を把握しましょう。
フローや変数などは次のようになっています。
シナリオフロー
データ一覧
データ一覧では、前回の記事からダウンロードできるCSVファイルを読み込んでいます。
変数
変数にはデータ一覧で読み込んだデータ名と同じ名前で「商品名」「重量(g)」「検品結果」の3つを用意します。
カッコ()の全角半角などが違うとデータ一覧と連携できません。変数を作る際は注意しましょう。
全体像はなかなかにシンプルじゃろう。
ほとんどが分岐じゃな。それではどのような分岐の設定をしているか見ていこう。
分岐の設定
多分岐
最初の分岐は多分岐ノードを使用しています。
ここの役割は、「商品名」によって処理を振り分けることです。
最終的に商品の重量が範囲内かどうかを調べますが、重量の許容範囲は商品によって異なります。
どの許容範囲でチェックを行うかを決めるために、最初に商品名を調べて適切なフローに流してあげる必要があります。
その商品名での分岐を行っているのが、この多分岐ノードになります。
前回示した許容範囲の表をもう一度確認してみましょう。
製品名 | 許容範囲(g) |
白い博士 |
100~120 |
True トゥルグミ | 60~70 |
うまあじロータスナック |
425~450 |
ロータースオリジナル |
50~65 |
白い博士であれば、重量が100~120であるかどうかを調べる処理に、
True トゥルグミであれば、60~70を調べる処理にといった具合で分岐させます。
多分岐ノードのプロパティは次のように設定しましょう。
商品名が意図した商品名と等しいかどうかを判定しています。
今回は商品が4種類なので、4つの分岐先を用意しました。
白い博士の条件式はこのようになっています。
他の商品名の場合も同じように設定し、4つの分岐を作成しましょう。
商品名ごとに振り分けた後の分岐
多分岐ノードによって商品名で処理が振り分けられた後に、またすぐ分岐ノードがあります。
この分岐ノードで重量が許容範囲内であるかどうかを判定しています。
多分岐の1つ目、商品名が「白い博士」だった場合の分岐ノードを見てみましょう。
分岐の条件がわかりやすいようにノード名を変えているところもポイントじゃぞ。
こうすると、後で見たときにわざわざプロパティを開かなくてもすぐにわかるじゃろう。
上の表を見ると白い博士の許容範囲は100~120ですので、プロパティは次のように設定します。
この例では重量が許容範囲の収まっていない場合にTrue側に流れるようになっています。
ORの中に2つの条件が入っていますね。
ORは「いずれかひとつでも条件を満たしていればTrue」となります。
ANDは「すべての条件が満たされた場合のみTrue」となります。
この条件設定では「重量(g)」が100未満の場合にTrueのフローに流れます。
さらに「重量(g)」が120より大きい場合もTrueのフローに流れます。
それ以外はFalseとなるので、100未満でもなく、120より大きくもない場合にのみFalse側のフローに流れることになります。
ちなみに、100と120は許容範囲内に含まれるので「>」「<」で設定するように。
「≧」「≦」にしてしまうと100や120ぴったりでもアウト判定にされてしまうので注意じゃ。
僕がよくやるミスですね。
「以下」か「未満」かをちゃんと考えて設定しないとダメですよ!
自分のミスをドヤるでない。
同じ要領で、それぞれの商品名ごとに分岐条件を設定していきましょう。
・True トゥルグミの場合
・うまあじロータスナックの場合
・ロータースオリジナルの場合
結果の設定
最後に、判定した結果をデータ一覧に入力しましょう。
データの入力は紐づいた変数に「変数値設定」などで値を入れることで出来ましたね。
今回のシナリオでは結果を「検品結果」というデータに入力することになっています。
同じ名前の変数に「変数値設定」で結果を入れていきましょう。
この例では、重量が許容範囲でない場合にTrueとなるように分岐ノードを設定していますので
重量チェック用の分岐ノードのTrue側に「変数値設定」を配置し、変数「検品結果」に”異常あり”を入力します。
全ての分岐ノード(商品名ごとの4か所)に同じように配置しましょう。
あれ、ここは僕と違う作りですね。
僕はTrue側に”異常あり、”False側に”済”を入力するように作りました。
済の入力はどこへ・・・?
そのやり方も間違いではないが、実は"済"の入力はひとつにまとめられるのじゃ。
皆気になっていたであろう一番最初の変数値設定を見てみよう。
この一番最初の「変数値設定」ノードでは「検品結果」に”済”を入力しています。
重量の判定を行って異常があれば”異常あり”、そうでなければ”済”を入れるように作ると
分岐ノードのFalse側全てに”済”を設定するノードが必要になります。
博士のように、まず最初に無条件に”済”を設定してしまってから
異常があったときだけ”異常あり”で上書きすることで、分岐ノードのFalse側に処理を作る必要がなくなります。
こういった細かな工夫でノード数の削減ができたり、きれいにまとまったシナリオにすることができます。
なかなか面白いじゃろ?
ただし、ものによっては最初に済を入れてしまうと困ってしまう場合もある。
処理をまとめてコンパクトにするのもよいが、後から困らないようによく考えて工夫するのじゃ。
こんなやり方全然思いつきませんでしたよ。
なかなかやりますね。
柔軟な発想は大事じゃな。それがなかなか難しいところではあるが・・・。
では最後に実行結果を見て終わりにしよう。
実行結果
実行後にデータ一覧タブ画面を確認し、上図のようになっていれば成功です。
シナリオダウンロード
今回の解答例シナリオはこちらからDL可能です。
※ファイルの解凍には会員用パスワードが必要となります。会員登録はこちらから。
同じ結果になったかな?
データ一覧で自動的にデータが変わってループされるから
実際に作ったのはほとんど分岐だけじゃったな。
確かに、今までよくわからなくて使ってこなかったですけど
ほとんどいつものシナリオ作成と変わらなかったです。
やってみたらなんてことないですね!
学び知ることで自信を得る。
これがモチベーションに繋がるからのう。
おぬしの場合すこし自信があふれすぎている気もするが。
ところで博士のおかし工場、異常出すぎじゃないですか?
もう潰しましょうこの工場。
なんてこと言うんじゃ・・・。
そうなると今後、休憩中のおかしの支給は無くなるぞ。
あ、うそ!冗談ですよ博士!
いやあなんて素晴らしい工場なんだ!僕も働きたいなァ!
・・・
関連記事こちらの記事も合わせてどうぞ。
2024.11.05
【第105回】ロータス博士のWinActor塾~新しい画像マッチング画面
2024.09.27
【第104回】ロータス博士のWinActor塾~ガイド利用シナリオ(作成編)
2024.09.10