Meshのプログラム例『言葉のキャッチボールをしよう』


​
#導入
先日公開した[スモウルビーのMeshの紹介記事](https://qiita.com/fujimurakengo/items/3239d41200675cf39306)ですが、約1週間で2,600人以上の方に読んでいただけたようです。本当にありがとうございます。
注目されている今がチャンス！というわけで、Meshを使った記事の第二弾です。
​
スモウルビーでMeshとマイクロビットを使った言葉のキャッチボールを作ります。Meshの主な対象は中学生以上となっており、小学生には少し難しい内容かもしれません。しかしやってみたい人はどんどんやってください。保護者の皆様は止めずに挑戦させてください。
​
また、先日公開した[スモウルビーのMeshの紹介記事](https://qiita.com/fujimurakengo/items/3239d41200675cf39306)を読んでいることを前提としていますので、まだの方は先にそちらを読んでください。
​
#1. マイクロビットとは
https://sip.dis-ex.jp/product_page4.html?id=41
を要約すると「イギリスで作られている教育用マイコンボード」です。

日本でもスイッチサイエンスとかで3000円くらいで購入できます。またScratchと連携させて遊ぶことができます。
今回はこの **初代のモデル** を使っていきます。

#1-1. マイクロビット導入
スモウルビーとマイクロビットをリンクさせる手順はScratchとまったく一緒です。
​
https://scratch.mit.edu/microbit
からScratch Link をダウンロードしてインストールしましょう。
このリンクの説明の方が詳細なので、次の 1-2 と 1-3 の手順はそちらを読んだほうがいいでしょう。
​
#1-2. Scratch micro:bit HEXをマイクロビットに入れる
先ほどのページの中腹にダウンロードリンクがあるのでダウンロードして
マイクロビットに入れましょう。
​
#1-3. Scratch Linkを起動させる　
Windowsだと画面左下のWindowsのマークを押して
Scratch Linkを探して起動させましょう。
​
#1-4. マイクロビットとスモウルビーを接続させる
https://smalruby.app/
スモウルビーを開いて左下の拡張機能からただの「micro:bit」をえらびましょう。
そのまま画面に従えば接続できます。
​
#2. プログラムの作り方を考える
今回作成するプログラムは題にある通りスモウルビーのMeshとマイクロビットを使った2人で行う言葉のキャッチボールゲームです。
比喩としての言葉のキャッチボールではなく、 **実際に言葉を憶えたボールでキャッチボールをする** チャットの亜種みたいなものを作ります。
​
 1. 「伝えたいこと」メッセージを送って「投げかける言葉」（変数）でお友達に気持ちを伝えましょう。
 2. 「伝えたいこと」メッセージを受け取って「投げかける言葉」をお友達が読んだら、お友達は「返したいこと」メッセージ で「返す言葉」（変数）を返しましょう。
 3. 伝えたいことや返したいことを送るときにボールを投げます。
​
ほら、実際にボールを投げあって **キャッチボール** をするでしょ。
​
1や2はMeshを使って簡単にやれるけど、ボールを投げるのはちょっと工夫してみようかな。
近いものを大きく、遠くにあるものは小さく見える遠近法を使ってみようと思います。美術の授業でやったかもしれませんね。ボールを投げた瞬間は大きなボールを表示して、それをだんだん小さくすることで、ボールが遠くまで飛んでいっていることを表現します。言葉で説明するのは難しいですね。なんとなくわかったら次にいきましょう。

#3-1. ボールに言葉を覚えてもらう。
最初は自分側のプログラムを作って、それからお友達のプログラムをつくるよ。

まずはボールが自分側の手前にあるのを表現するために、旗を押されたらボールが大きくなるようにしておこう。今回は401%にました。これで近くにあるように見えますね。

次にボールに言葉を覚えてもらうために、調べるの中に「聞いて待つ」というブロックをつかいます。このブロックを実行するとスプライトが質問してくれて、質問に答えると同じ調べるの中にある「答え」の中に入力した文字が入ります。回答するところは「聞いて待つ」を実行した後にステージの下にできるよ。そして友達が読む言葉を入れる「投げかける言葉」という変数を作りましょう。この「投げかける言葉」を「答え」にしましょう。

キーボード操作が得意な人はこのブロックの次に見た目の「( )と言う」ブロックを使って、ボールに
「僕を投げてよ」
みたいなことを言ってもらうのもいいかもしれません。

これでボールに言葉を覚えてもらったようにできたよ。

![最初のボールの拡大.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147871/a8682ac1-d587-0f95-7b6b-7073e41ba5a3.png)

#3-2. 言葉を投げる
さて言葉を投げましょう。
ここはマイクロビットがパソコンに接続してある前提でお話を続けます。

言葉を投げるために、マイクロビットにある「振られたとき」という命令をつかいます。マイクロビットが振られたらボールを投げたことにしてボールに飛んでいってほしいので、マイクロビットがふられるとメッセージの「伝えたいこと」を送り、ボールの大きさが大きさが11になるまで徐々に小さくなるようにしましょう。なぜ11か。スモウルビーでは最小の大きさが11みたいだよ。

またMeshを使うと、お友達のスモウルビーにメッセージ（機能）を送信できますよ。だから「伝えたいこと」を送るだけで相手に伝えたことが来たのがわかります。

これで、マイクロビットを振るとお友達に「伝えたいこと」が送られますよ。お友達からのメッセージを受け取るプログラムはまた後で作るよ。

![最初のボール投げ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147871/32ea4ef4-60e1-6636-b924-8b8b134970c2.png)

#3-3. お友達の方のプログラム。
今からお友達のプログラムをつくるよ。

お友達の側はボールが奥にあるのを表現するために旗をおしたら11まで小さくなっておこう。

そしてお友達は「伝えたいこと」を受け取ったとき、ボールが大きくなっているように見えるようになるために10ずつ大きくなるのを繰り返そう。自分のところにボールがあるときにボールの大きさが400だったのを覚えているかな？受け取るときは400より大きくなったらボールを大きくするのをやめるといいね。

ボールを受け取ったら「投げかける言葉」の中身を確認しよう。中身の確認にはMeshの機能をもう一つ使うよ。左バーののMeshの中にある「センサーの値」がつかえるよ。このセンサーの値を使うとお友達のスモウルビーの変数を自分のスモウルビーでも使えるよ。だからさっき自分のスモウルビーの変数の「投げかける言葉」を「答え」にしたんだね。「センサーの値」の▽をクリックして「投げかける言葉」を選んで、それを「と＿秒言う」ブロックに入れてボールに喋ってもらおう。次はもちろんもちろん言葉を返すよね。3-2の言葉を投げる　で作ったように変数「返す言葉」を答えにしてボールををなげれるようにしよう。

![伝えたいことを受けとるお友達.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147871/28e02ca6-e7f0-8abe-c3f1-2a9ee3313dae.png)

![返したいことを返すお友達.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147871/4fa8b188-3589-a30d-6aa3-16940cc6faaf.png)

#3-4. 自分が「返したい言葉」を受け取る
さて、自分のプログラムを完成させるよ。「返す言葉」を自分が受け取ったらボールを400より大きくなるまでだんだん大きくしよう。そしたらお友達のプログラムと同じようにボールに「返す言葉」を喋ってもらおう。

![返したいことを受け取る.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147871/5ff3f7f5-3b54-4c84-e2df-a154f8c7e017.png)

これでプログラムは一通り完成だよ

きみのプログラム
![ホストのプログラム.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147871/bef8ed59-5309-5193-0ff6-66f54ca06a9f.png)

お友達のプログラム
![お友達のプログラム.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147871/9961ea1a-7af5-e58a-fe6b-50a4ef47283f.png)

#3-5. プログラムを発展させよう
このプログラムだと言葉のキャッボールは一回しかできないね。
だから繰り返しできるようにしたりゲーム性を追加してもいいし、3人でキャッチボールをできるようにしてもいいね。

私はこう改造してみたよ。みんなも自由に改造しよう。

![改造したプログラム.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147871/cf35871c-5f95-07d2-2e30-c32e7f5b1797.png)

#4. 宣伝
昨年、このスモウルビーの本をスモウルビーの作成者の高尾さんと一緒に書きました。
島根大学の橋爪先生に監修していただいた小学校の教育指導案も付属しており
小学校の先生が授業に使えるようになっています。松江市の一部の学校ではこの本の1~5章が授業で使われています。
また今回深く解説をおこなっていないブロックにも解説があります。
Meshの記事はありませんが...
興味がある方は書店等で手に取ってみてください。
購入はAmazonの他、楽天や日経からできます。
https://www.nikkeibp.co.jp/atclpubmkt/book/20/P60510/
https://books.rakuten.co.jp/rb/16322035/?l-id=search-c-item-text-01


#5. 学校の先生がた及びCoder Dojoのメンターのかたへ
このプログラムやページの内容は学校の授業やCoderDojoなどで使用してもらっても構いせん。
私にいちいち許可もとらなくて良いです。しかし、使用したという報告をしてくれると私も高尾さんも喜びます。