見出し画像

Pepperの九九出題アプリを作ってみよう①ランダムにかけ算の出題をしよう【ミワ ムラタのRobo Blocks奮闘記】

こんにちは!Robo Blocksチームのムラタ ミワです。プログラミング初心者ながら、プログラミングツールRobo Blocksを担当しています。

わたしは、Robo Blocksを担当した当初、自分自身の勉強を兼ねて九九出題プログラムを作りました。この九九出題プログラムを作ったことで、Robo Blocksのさまざまなブロックを使う体験ができ、Robo Blocksへの理解が一気に深まりました。

そこで、みなさんにも同じような体験をしていただけたらと思い、今回は、一緒に九九出題プログラムの作成に取り組んでいきたいと思います。

今回のテーマは、「ランダムにかけ算の問題を出題する機能」です!
九九出題アプリの中で根幹となる機能を作っていきましょう!

ゴール

Pepperがランダムにかけ算を出題して、答えを言う

今回のポイント

  1. 演算ブロック(掛け算)を使ってみよう

  2. ランダムブロックを使ってみよう

  3. 「こんにちは」と「おはよう」ブロックで文字列をつなげよう

  4. ブロックとブロックをつないで枠を増やしてみよう

  5. 変数を使ってみよう

作ってみよう

1.演算ブロック(掛け算)を使ってみよう

まずは、使えそうなブロックを探してみます。かけ算ということで、演算のコーナーを見ると、「掛け算ブロック」を発見!こちらを使いましょう。

そして、しゃべるブロックを発見。こちらも使いましょう。

しゃべるブロックに、掛け算ブロックを組み合わせて、適当な数字を入れてみます。実行してみると、、

あれ??掛け算の答え「6」をしゃべりました。「3かける2」という式はしゃべってくれません。なるほど、掛け算ブロックは、掛け算の答えを計算して答えを出してくれるブロックのようです。掛け算の式もしゃべらせるように作らなくてはいけません。
 
では試しに、もう1つしゃべるブロックを使って式をしゃべらせてみます。

あれ?「×」と「=」を使ってしゃべらせてみると、「×」は「かける」と読んでくれましたが、「=」は何も言ってくれません!どうやら、Pepperが読んでくれる記号と、読んでくれない記号があるようです。
 
今回は、わかりやすく、どちらもひらがなで「かける」「は」と入力することにしました。

問題と答えをしゃべるようになりました!
 
さらに、他の人が使うことを想像してみましょう。このままでは、問題を出してすぐに答えを言ってしまうので、問題に答える人が考える時間がありません。「◯秒待つブロック」を使って、考える時間を作ります。今回は3秒にしてみました。

これで、問題を出して、答えを言うプログラムができました!

2.ランダムブロックを使ってみよう

さてさて、このままでは固定の問題を1問出すだけですが、九九は81問もあります!毎回違う問題を出せるように、九九81問の中からランダムに出題したいと思います。
 
ランダムに出題するには、、
 
おあつらえむきな、「ランダムブロック」を発見!早速使ってみましょう。
九九なので、被乗数も乗数※も1から9の中からランダムに選ぶようにします。
※被乗数は、◯×△の◯の方。乗数は、△の方です。

しゃべるブロックと組み合わせて実行すると、毎回1から9までの数字をランダムにしゃべってくれるのがわかります。

ランダムブロック(ランダムな整数)については、こちらの記事で詳しくご紹介しております。是非ご確認ください!

3.「こんにちは」と「おはよう」ブロックで文字列をつなげよう

ランダムブロックを使って掛け算をしゃべらせよう!と思ったら、、、問題が!
しゃべるブロックに入れることができるしゃべる内容の枠は1つだけです。「[1から9までのランダムな数字]かける[1から9までのランダムな数字]は?」としゃべらせたいのですがどうしましょう、、

ここで使えるのが、「「こんにちは」と「おはよう」ブロック」です!このブロックは、「こんにちは」と「おはよう」の部分を自由に変更して、好きな文字列と文字列をつなげることができるブロックです。

言葉で説明してもわかりづらいので、実際に使ってみたのがこちら。
「こんにちは」と「おはよう」ブロックの、
「こんにちは」枠に、ランダムブロックをポコっと入れて、
「おはよう」枠に、「かける」と入力。
これで、「3かける」とか「7かける」とか、「[1から9までのランダムな数字]かける」としゃべってくれます。

4.ブロックとブロックをつないで枠を増やしてみよう

さらに、目標の「[1から9までのランダムな数字]かける[1から9までのランダムな数字]は?」をしゃべらせるには、文字列の枠をもう1つ増やす必要があります。
 
そんなときは、ブロックとブロックをつなげちゃいましょう!

こんな風にブロックとブロックをつなげる使い方もできちゃうんです!「おはよう」の部分に、「こんにちは」と「おはよう」ブロックをポコっと入れてしまいました。これで、3つの文字列をつなげることができます。
 
丸い枠には丸いブロックを、六角形の枠には六角形のブロックを。ブロックは、形が合う場所であればポコっとはめて使うことができます。そのルールに乗っ取れば、こんな柔軟な使い方もできちゃうんですね!
 
同じ要領で、文字列の枠を4つに増やして、「[1から9までのランダムな数字]かける[1から9までのランダムな数字]は?」が完成しました!これで、「8かける3は?」とか「5かける9は?」とかランダムな出題が可能になりました。

5.変数を使ってみよう

次は問題に合わせた答えを言えるようにしましょう!
と思ったら、このままでは、出題時にランダムに選ばれた数字を回答時に知る方法がありません、、
 
ここで使えるのが”変数”です。変数は、正直プログラミング初心者かつ文系出身のわたしは、はじめは全然ピンと来なかった言葉です(変数についてのわたしの調べ学習の内容は、こちらの記事でご紹介しています。2023/4/6更新)。ここでは、簡単に、値を入れる「箱」と思ってください。実際使ってみることで、イメージが湧くと思います!
変数は、自分で名前をつけて作ることができます。かけ算の「被乗数」と「乗数」という2つの変数を作りましょう。

このように、「被乗数」「乗数」それぞれに、1から9のランダムな数を入れます。特定の数が入った「被乗数」「乗数」の変数を、そのまま出題時、回答時で利用すれば、出題と回答で同じ数を扱えることになります!
 
ついでに、しゃべらせるのと同じ要領で、「文字を表示ブロック」を使って、出題と回答をPepperのディスプレイに表示します。耳だけでなく目からも情報が入るので、よりわかりやすくなります。

(以下、2023年1月19日に追記)


最後に、後々プログラムを見返すとき、カスタマイズするときにわかりやすくすべく、回答を「答え」という変数にすることにしました。プログラム実行のきっかけとなる「緑の旗がクリックされたとき」ブロックも先頭につけています。これで、Pepperのディスプレイでも緑の旗をタッチして実行することができます。


まとめ

今回は、ランダムに九九を出題するプログラムを作ってみました。ここまででも初心者のわたしには学べるポイントがたくさんありました。是非使えるポイントがあれば応用してみてください!

今回のポイント

  1. 演算ブロック(掛け算)を使ってみよう

  2. ランダムブロックを使ってみよう

  3. 「こんにちは」と「おはよう」ブロックで文字列をつなげてみよう

  4. ブロックとブロックをつないで枠を増やしてみよう

  5. 変数を使ってみよう

次回の記事

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ソフトバンクロボティクス株式会社 ホームページ
https://www.softbankrobotics.com/jp/

Pepper for Education
https://www.softbankrobotics.com/jp/product/education/

STREAMチャレンジ
https://www.softbankrobotics.com/jp/product/academy/stream/

━━━━━━━━━━━━━━━━━━━━Pepperブログ編集部━┛