![見出し画像](https://assets.st-note.com/production/uploads/images/59138941/rectangle_large_type_2_e47af57a71afbb7ab6b199d9ee93227c.png?width=1200)
【Robo Blocksの使い方】発話内容と動きを毎回ランダムにする_その2
ソフトバンクロボティクスでPepperを使ったプログラミング教育を担当してる佐藤です!
前回に引き続き発話と動きをランダムにする方法を紹介します。
今回は、リストを使った発話についてです。
作り方
前回、発話をランダムにするために以下のようなブロックを作成しました。
![スクリーンショット 2021-08-17 20.06.52](https://assets.st-note.com/production/uploads/images/59139706/picture_pc_fe2668cd0bea9011600e05a9c6b455cf.png?width=1200)
この選択肢の数を増やそうと思った時、同じように"もし〜なら"ブロックをつなげていく方法でも実現できますが、数が多くなると大変ですし、ブロックが長くなるので見難くなります。
こういう場面ではリストを使うことでシンプルに作ることが可能です。
まずは発話内容を格納するリストを作りましょう。
![スクリーンショット 2021-08-17 20.18.27](https://assets.st-note.com/production/uploads/images/59139903/picture_pc_d4aac21cf25325c82b961f60ce323d8e.png)
リストができたら、今まで"もし〜なら"ブロックを使って1つ1つ並べていた発話内容をリストに格納していきます。(2回以上旗がクリックされる可能性もありますので、念のため先頭でリストの全てを削除して初期化しています。)
![スクリーンショット 2021-08-17 20.26.54](https://assets.st-note.com/production/uploads/images/59140499/picture_pc_79f415adbea121e64f590a9bc46116b7.png?width=1200)
リストを使うメリットは、発話内容の候補がいくつあるのか以下のブロックで取得することができることです。今は「おはようございます」「こんにちは」「こんばんは」が格納されているので、このブロックの値は3になっています。
![スクリーンショット 2021-08-17 20.25.34](https://assets.st-note.com/production/uploads/images/59140436/picture_pc_d882176c618da4a226aeda995fee0ea7.png)
次にランダムに発話するために、ランダムな変数を生成します。前回は1から3までと定数で指定しましたが、上限は必ずリストの長さ(選択肢の数)になりますので、以下のように組むことができます。
こうしておくとリストの長さがいくつに変化しても、必ずリストの要素数からランダムに1つ数を選ぶことができます。
![スクリーンショット 2021-08-17 20.25.41](https://assets.st-note.com/production/uploads/images/59140668/picture_pc_3b8ee25c60a1e1cfc1288656c6973284.png?width=1200)
ランダムな変数に値が設定できたら、あとは発話するだけです。リストの中から1つ番号を指定して値を取得するには以下のブロックを使います。
![スクリーンショット 2021-08-17 20.25.56](https://assets.st-note.com/production/uploads/images/59140896/picture_pc_efec88ba48251be0c636af18db1a2f4e.png)
リストは追加した順に番号が振られますので、今回の場合1を指定すると「おはようございます」が取得でき、2を指定すると「こんにちは」が取得できることになります。
実際に発話するように組んでみます。リストの中から”先ほど抽選したランダムな数”番目の要素を発話したいので、下記のような組み方になります。
![スクリーンショット 2021-08-17 20.25.47](https://assets.st-note.com/production/uploads/images/59141046/picture_pc_958ee3aa68de1bb430ca5c4f20789d87.png?width=1200)
繋げると全体像は以下のようになります。
"もし〜なら"ブロックを使って選択肢を並べるよりも非常にシンプルになっていることが確認いただけると思います。
![スクリーンショット 2021-08-17 20.35.02](https://assets.st-note.com/production/uploads/images/59141153/picture_pc_6a6d5e99e5eb9b9ae7cc66ea5c061463.png?width=1200)
まとめ
今回はリストを使ったランダム発話の方法を紹介しました。
この組み方で作っておくと、後から発話候補を増やしたいときに非常に便利です。
試しに1つ発話候補を追加してみましょう。
![スクリーンショット 2021-08-17 20.36.57](https://assets.st-note.com/production/uploads/images/59141311/picture_pc_76c87efc82181c361bf9e852a84133aa.png?width=1200)
"「さようなら」を発話内容のリストに追加する"ブロックが1行増えただけで、他の部分には何の変更も加えずに追加することができました。リストの長さを最大値にしてランダムな数を作っているため、いくら増えても自動で対応できるためです。
リストを使うと苦労して作っていた長い選択肢をシンプルにできる場合がありますので、是非活用してみてください!
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ソフトバンクロボティクス株式会社 ホームページ
https://www.softbankrobotics.com/jp/
Pepper教育関係者フォーラム
https://pepper-schoolchallenge.com/
Pepper for Education
https://www.softbankrobotics.com/jp/product/education/
STREAMチャレンジ
https://www.softbankrobotics.com/jp/product/academy/stream/
━━━━━━━━━━━━━━━━━━━━Pepperブログ編集部━┛