レポート
トピック
教育版マイクラ、コマンドブロックを使って「デジタル時計」づくりに挑戦!
――教育版マインクラフト ワールド紹介その⑩
2023年5月11日 06:30
教育版マインクラフトにある膨大なワールドテンプレートとレッスンプランを紹介するこのシリーズ。10回目の今回は、マイクラでデジタル時計を作る「時計作り!」のワールドを紹介しよう。
このワールド、なんと、コマンドブロックとレッドストーン回路を使って、マイクラ世界で実際に動く時計を作るというもの。コマンドブロックというのは、マイクラの世界でさまざまな動きを制御できるコマンドを記録できるブロックのことで、装置や仕組みをつくるときに使う。
子供たちの間では、コマンドブロックを「むずかしい」と言って使わずにマイクラを楽しんでいる子も多いが、コマンドブロックが使えるとマイクラでできることが広がり、それをきっかけにプログラミングに興味を持つ子もいる。これまでの連載ではコマンドブロックは取り上げていなかったのだが、このワールドのコマンドブロックなら子供たちも扱いやすいと思われるので紹介したい。
12時間表示の時計を作成することがミッション
「時計作り」は、正確な時を刻むというよりは、「分」と「時」をブロックの数で表現するデジタル式時計を、マイクラ上で構築するという、なかなか斬新なワールドである。米国の学習基準を示す「コモンコア(Common Core)」では、グレード3(小学3年生/対象年齢8歳から10歳)が目安となっており、同ワールドも「数学」-「コモンコアグレード3」に収録されている。
ワールドに入ると、目の前に「時間管理人」という名前のNPC(※)がいるので、話し掛けてみよう。すると、このレッスンのミッションは、12時間表示の時計を設計することだと教えてくれる。同時に、これから取り組む6種類のタスク「イントロ」「インターフェース」「1の列」「10 の列」「アワーズ」「ティッカー」について、それぞれの解説をYouTubeで見ることができる。
※Non Player Characterの略。プレイヤーが操作できないキャラクターのことで、ワールド内を案内したり、問題を出題したりする。
動画の音声は英語だが、自動翻訳字幕を「日本語」にすることでだいぶ分かりやすくなる。マイクラに慣れた子供たちなら、何をすればいいか理解できるだろう。
完成している時計の仕掛けを見てみよう
このワールドには、既に完成している時計が用意されている。動いている時計の仕掛けをよく見ておこう。時計の前には、黒板が3つ並んでいる。右から、「1の位」「10の位」「時刻」と書かれている。
1の位に注意してみると、一定の間隔で上から砂ブロックが1つ落ちてきて、順に高く詰まれていくのがわかる。さらに10個積まれると、不思議なことに全ての砂ブロックが消えていき、隣の10の位に新しい砂ブロックが1つ落ちてくる。
そして、10の位に砂ブロックが6つ積まれると、同じようにブロックが全部消えて、隣の「時刻」に1つ新しいブロックが落ちる。さらに時刻では、砂ブロックが12個積まれると、全部消えて0に戻る。これを規則的に繰り返すことで時計を模しているわけだ。
一方で時計の裏側を見てみると、コマンドブロックで作られたレッドストーン回路が3つ並んでおり、これが時計の砂ブロックの動きを制御している部分である。
さらに、時計の隣をみると、つながったレールの上を自動で回っているトロッコがある(ときにはmobが乗っていたりする)。トロッコは一定の間隔で回りながら、1周まわる度にレッドストーンスイッチを1回押している。どうやら、これが規則的に落ちてくる砂ブロックのための装置らしい。このように一定の間隔でリズムを刻むようなものを、ここでは「ティッカー」と呼んでいる。
時計の仕組みとなるレッドストーン回路に挑戦
ここからは、デジタル時計をつくっていこう。このワールドには、同じ時計を再現するためのスペースが設けられており、既に、基準となる砂ブロックと黒板が3つ用意されている。ワールド内の回路の組み方やコマンドはレッスンプランに準じて作っていくので、なんでこんな数字なんだろうと思われても、まずはその通りに動かしてみて欲しい。
まずは、1の位のレッドストーン回路からはじめて、10の位、時刻、最後にティッカーの順で進めていく。1の位の回路は、どのような動きが必要か考えてみよう。
先ほどの動きを思い出すと、10個目の場所に砂ブロックが積まれると、下にある全ての砂ブロックが消えた。この動きは、10個目という決まった位置に砂ブロックがあると判定されることで生じる。それをスイッチに、砂ブロックを消していく仕組みから作ってみよう。
最初のコマンドブロックから始める。1の位の列から3ブロックほど離れた場所にコマンドブロックを置こう。コマンドブロックは、あらかじめインベントリー(プレイヤーの持ち物)に用意されているのでそれを利用する。コマンドブロックを置いてタップすると、設定画面があらわれる。ここに使いたいコマンドを入れて設定していく。
コマンドの内容だが、「決まった位置に砂ブロックがあるかどうか」を判定したい。このようなときに使うのが「testforblock」というコマンド。このコマンドの後に決まった位置の座標を数値で指定する。
座標を調べるには、いったんコマンドブロックの設定は閉じて、実際に1の位の場所に砂ブロックを積んで確かめよう。10個目のブロックがある座標はいくつになるだろう。画面の左上に座標が表示されているのでメモしておこう。
では、もう一度コマンドブロックの設定に戻ってコマンドを完成させよう。
「コマンド入力」のところには、「testforblock 座標の3つの数字 sand」と入力する。「sand」は砂ブロックをあらわす。指定した座標に砂ブロックがあるかどうかを、これで判定する。
続いて、コマンドブロックがどのタイミングで動作するかをブロックの種類で指定する。最初の状態では、ブロックに何か「衝撃」が起きた時になっているので、これを「反復」に変更し、レッドストーンも「常にアクティブ」にしておく。これでいつでも砂ブロックが10個目に積まれたときを判定できるようになる。これらの設定を変えると、コマンドブロックの色が紫に変わる。
次は、このコマンドブロックにレッドストーンコンパレーターとレッドストーン反復装置をつないでいく。コマンドブロックからはレッドストーン信号が流れるがとても弱いので、この2つの回路で増幅しておく。ブロックがこの先沢山つらなっても信号がちゃんと届くようにあらかじめ用意しているわけだ。
このとき、注意したいのは各ブロックの向きだ。やり方としては、今設定したコマンドブロックの上に立ち、時計側を背にして設置するとよい。うまくできると、このような最初の回路ができあがる。砂ブロックを10個まで積み上げると、光るはずだ。
次に用意するのは、積み上がった砂ブロックを消していくコマンドブロックだ。先程と同じように、コマンドブロックをまず1つ置いて、タップして設定を開こう。続いて、ブロックを順番に消すコマンドを考える。このとき使うのが「setblock」というコマンドだ。砂ブロックを空気ブロックに置き換えることで消していく方法をとる。
最初のコマンドは、「setblock 10個目の座標 air」となる。「air」は空気ブロックを表す。うまくいけば、10個目のブロックが消えているはずだ。
この方法では、1つ砂ブロックを消すのに1つのコマンドブロックが必要になるので、10個のブロックを全部消すために、最終的にはコマンドブロックも10個並べないといけない。座標の高さ(2つめの数字)を1つずつずらしたコマンドブロックを作成し、全ての砂ブロックを消せるようにしよう。
1の位の最後の仕上げは、隣の10の位に新しい砂ブロックを追加するコマンドブロックの設置だ。コマンドブロックに10の位の座標に砂ブロックを1つ降らせる設定をする。
試しに砂ブロックを手で積んで、全部消えるかどうかやってみよう。タイミングによっては、1ブロックだけ消えずに残ってしまうことがあるようだが、その場合残ったブロックを消す仕掛けをさらに追加してやればよい。実際、もともとあった時計にはこのコマンドブロックがついている。
残る10の位と時刻についても、考え方は1の位と一緒だ。最初のコマンドブロックで指定する座標や、消去するためのコマンドブロックの数など、時計の動作にあわせて作っていこう。もし、わからなくなったときには、今動いている元のコマンドブロックを参考にしてみよう。
ティッカーを作って時計を完成させよう
最後に、ティッカー部分を作成していこう。まず、コマンドブロックを1つ置いて、1の位に1つ砂ブロックを置くコマンドを用意しよう。1の位の座標は、もうわかっているので、高さを18に指定して、「setblock」を指定する。なお、高さを18にするのはレッスンプランに従っている。高すぎて落ちてくるのに時間がかかっても困るので、どの数字が適当か試行錯誤してみるのもいいだろう。
次に、このコマンドブロックを定期的に実行する仕組みを用意する。コマンドブロックと1ブロック空けて感知レールを置こう。この2つの間をレッドストーンパウダーでつないでおく。
続いて、感知レールにつなげるようにレールを置いていき、ぐるっと一周するようにつなごう。この上をトロッコが回るようにするのだが、このままでは、トロッコは途中で止まってしまうため、ところどころに加速レールを置いていく。加速レールを使うにはレッドストーンブロックが必要なので、一度レールを壊してから、さらに穴を空け、そこにレッドストーンブロックを入れておこう。この上に加速レールを敷いておく。適当な間隔を空けて、この作業をくりかえしていこう。
出来上がったらトロッコをレールの上に置いて、押してみる。うまくいけば、トロッコが加速しながらレールの上を回り、感知レールを通っていくはずだ。これで、一定のリズムで砂ブロックが1の位に落ちていくようになった。ティッカーが動いている様子は、なかなか楽しい。
失敗を通して、仕組みを見直し、より良い方法を考える
こうして筆者は、1の位、10の位、時刻、ティッカーの4つの回路を完成させた。しかし、「時計として動いているなあ」と眺めていると、何かおかしいことに気づく。よく見ると、10の位が5つまでしか積まれずに、次に進んでいるようだ。つまり1時間が50分の時計になってしまっている。回路を改めてチェックすると、コマンドブロックが1つ足りていない。無意識に50分時計を作ってしまったようだ。
せっかくなので、今度は間違いが起こりにくい方法で作り替えてみた。具体的には、1つずつ砂ブロックを消すのではなく、1つのコマンドで一気に6つのブロックを消すようにしてみた。うん、だいぶすっきりしたのだけど、絵面としてはなんだか汚くて少し哀しい。こうしてみると、コマンドブロックとレッドストーン回路を使ったものづくりは、試行錯誤しながらより良い方法を探していく、プログラミングそのものなんだなという気がする。
マイクラのコマンドブロックはYouTube動画などを通して子供たちの間でも名前はよく知られている。ただ、興味があっても実際にやってみる子はそこまで多くはないようだ。特にコマンドの入力部分は、アルファベットになれていない子供には手を出しづらい部分ではある。大人が最初サポートしてあげるのがよいようだ。
今回のこのワールド、作るのはなかなか大変だが、実際に動きだすとさらに改造してみたくもなる。マイクラ世界でブロックが動く仕掛け作りにチャレンジするきっかけになってほしい。
教育版マインクラフト関連記事
ワールド紹介【1】冒険しながら、英語も学べる「ケンブリッジ大学の英語アドベンチャー」