マインクラフトを用いたコンピューターサイエンス学習

石山将氏(以下、石山):日本マイクロソフト株式会社にてラーニングソリューションスペシャリストを務めさせていただいている石山と申します。

はじめに軽く自己紹介させていただきます。ラーニングソリューションスペシャリストは、マイクロソフト製品を軸として、日本の教育機関、主に教育委員会、大学の機関のみなさまと3年から5年後の教育をつくり出していく。そんなことをやらせていただいています。

本セッションにつきまして、対象となる方は「マインクラフト」への学習利用に漠然と興味がある方、もしくは身近な子どもたちへマインクラフトを用いてコンピューターサイエンスを教えたい方に対して、プログラミングを含めたコンピューターサイエンス学習をどうやって始めればいいかということを目的に開催させていただきます。

セッションの中では、臨時休校中にマインクラフトが生み出した物語にも触れながらセッションを進めていければと思っています。

マインクラフトで卒業式や大学を再現

アジェンダですね。まずマインクラフトが休校期間中に生んだ物語から始めさせていただきます。そしてマインクラフトで子どもたちがどんな経験をしているか。そしてマインクラフトとコンピューターサイエンスというものをデモビデオ中心にお届けしたいと思います。

まず1つ目ですね。臨時休校中にマインクラフトを用いて生まれた物語の一例です。マインクラフトでのバーチャル卒業式というものが3月14日に日本のあるところで行われました。まさに旅立ちの場面をマインクラフトの世界を用いて再現したわけなんですが、この緊急事態宣言下で卒業式がなかなか行えない中で、バーチャル卒業式が行われました。

こうした雰囲気たっぷりの会場を制作しまして、入場、祝辞、卒業証書授与までそっくりに開催した事例が生まれています。

マインクラフトはこういった旅立ちですとか、次の事例ですとマインクラフトで大学を再現。これはアメリカのペンシルベニア大学の事例です。

ある学生がこうしてマインクラフトの世界に自分の大学を再現した。まさにつながりというところですね。先ほどは卒業式の事例でしたが、つながるというところで大学のレプリカを一緒に作って、オンラインでどうやってつながり続けることができるかをマインクラフトを通じて再現したという事例もあったりします。実際に500名近くがこのマインクラフトのワールドのサーバーに訪れて、オンライン上でつながったと言われています。

化学実験やプログラミング学習への利用も

こういった動きは国家レベルでも行われていまして、政府が公式サーバーを構築して学びを担保したという事例も休校中に出てきました。どこの政府かと言いますと、ポーランド政府ですね。国家レベルでリモートワークや在宅学習が続く中でサーバーを公式に構築して、小学生から大学生までがアクセス可能な学ぶ場を提供したと言われています。

サーバー内では建物のコンペティションが行われていまして、まさに緊急事態宣言の中で学びを担保するためにマインクラフトの学びが使われている。こんな動きが国家レベルであったりします。

マインクラフトの学習利用についてなんですが、例えば、先ほどのポーランド政府の例で言いますとデジタルものづくり、なにかしら建物を作ってそれをコンペティションする。なにかバーチャル上で自分が想像したものを作る。もしくは右に書いてありますが、共同創作。そういったことが挙げられています。

またマインクラフトにもいくつかバージョンがありまして、教育版マインクラフトに特有な機能ではあるんですけど、中学の化学実験というものがマインクラフトの世界で行われたりします。

また、これはWindows10版でも可能ですが、プログラミング学習。のちほど出てきますが、JavaScript、Python、それからブロックプログラミングがマインクラフトの世界で可能になっています。

マインクラフトでPythonを使ったプログラミングを行う

では、今挙げたようなマインクラフトの学習利用について、デモビデオにてお見せしたいと思います。このデモビデオを通じて、マインクラフトを用いたコンピューターサイエンスではどんなことができて、そしてみなさまが身近な子どもたちにどのようにして教えることができるか、一例をお見せしたいと思っています。

(動画が流れる)

このビデオの中では2つ大きなトピックがございます。1つ目は、マインクラフトを用いてPythonを学ぶ。2つ目の趣旨は、ロケット花火を打ち上げるというものをマインクラフトの世界でいろいろな手法で再現する。それを通じてコンピューターサイエンスの一端に触れるという2種類のデモビデオをお届けさせていただきます。

まず1つ目ですね。マインクラフトの世界でPythonを学ぶというものです。マインクラフトは実はコードビルダーという機能が付いていまして、ブロックプログラミング、それからJavaScript、それから今年に入ってからPythonが実装されました。

今まさに右側のコードビルダーのところではPythonを開いています。おなじみの「Hello World」をマインクラフトの世界で再現してみるということをやっています。

プレーヤーがHello、それからプレーヤーがWorldと言いますという命令を打ち込みまして、実行を今押しているわけなんですが、このようにマインクラフトの世界でなにかしらプログラムを実行することができます。そんなプログラムを作ることができる機能が付いています。

左側にHello Worldと出てきましたが、こんなかたちでPythonがマインクラフトの世界で学べるようになっています。

もう1つ、ちょっと大胆なものをお見せします。マインクラフトの世界でPythonを用いながら動物を大量に出現させるというものをお見せしたいと思います。あくまでこんなことができるという一例として見ていただければと思います。

今、あるコードを貼りました。こちらを実行しますと、このように自分が歩くと動物が出現する。動物の中でもニワトリ、牛、それから猫を出現させる。こんなプログラムを今貼りました。

「travelled_walk」と書いてありますが、プレーヤーが歩くと実行するものになっていました。もう1匹加えてみましょう。コウモリを加えてみますね。「BAT(コウモリ)」を加えて実行してみます。

実際に自分が歩くと今度はコウモリまで出てきます。コウモリが飛び回っています。ちょっと極端な例でしたが、Pythonを用いてこのようなかたちでマインクラフトの世界で実装することができます。

さまざまな方法でロケット花火を打ち上げる

今度は2つ目ですね。ロケット花火をいろんな方法を使って打ち上げてみるというのをやってみたいと思います。1つ目の方法は至ってシンプルな方法です。ロケット花火を自分の手、手動で打ち上げてみるということを1つ目の方法ではやってみようと思います。

こちら余談ですけど、Minecraft Education Editionと書いてありますね。このMinecraft Education Edition自体は、厳密には教育機関のお客様が利用できることになっています。先ほどお見せしたPythonの部分ですとか、これからお見せするロケット花火の部分はWindows10版でも実際にこのコードビルダーを立ち上げることが可能になっています。

今ロケット花火を手元のアイテムに入れて、このように手動でロケット花火を打ち上げることができます。これが、まず1つ目のロケット花火の打ち上げ方です。あと3つほどロケット花火の打ち上げ方をお見せします。

2つ目の打ち上げ方は、先ほども見ていただいたこのコードビルダーを使ってロケット花火を打ち上げる方法です。プレーヤーが歩いたときにロケット花火が打ち上がるようにしたいと思います。

プレーヤーが歩いたときに飛び道具、ロケット花火の座標を000……自分の座標が000なわけですが、歩いたところにロケット花火が打ち上がるというようなプログラムが可能になっています。もちろん先ほどお見せしたPythonでもこういったことが可能になります。

ちょっと昼間だと味気ないので夜にしてみましょう。そうしますとロケット花火が打ち上がるのがもう少し鮮明に見えたかなと思います。これがプログラムを用いた2つ目の方法でした。

3つ目の方法に移る前に、少しPythonをロケット花火と絡めてみたいと思います。先ほどいじっていたプログラムをPythonで表示するとこうなるんですけど、000の座標ではなく自分の顔のあたりからロケット花火が出るように座標をいじりました。000だったのが020、これは高さを0から2にしたわけですね。

これを踏まえてプログラムを再生してみようと思います。要はPythonのプログラムを少しいじってみました。ちょっと引き気味で見ますと、このように顔のあたりからロケット花火が出ているかと思います。このようなかたちでPythonの部分をいじってプログラムを改変することももちろんできます。

続いて、3つ目の方法ですね。ロケット花火を打ち上げる3つ目の方法なんですが、今度はコマンドというものを使ってみます。おなじみの、Windowsでもコマンドが使えますが、マインクラフトの世界でもコマンドが実は使えます。

これ、「ロケット花火を召喚する」と今打ち込んだんですが。実際にロケット花火が今打ち上がったかと思います。このようにロケット花火を打ち上げたり、時間を変えたり、このようなことがコマンドを実行することによって可能になっています。

最後の方法です。今のコマンドを用いてもう少し高度なことをしてみようと思います。どんなことをしてみるかと言うと、コマンドブロックというものを用いて先ほどのロケット花火を打ち上げたコマンドを繰り返し発生させるという方法をやってみます。要は、ロケット花火を連続的に打ち上げるという方法ですね。

コマンドを用いて自分のアイテムにコマンドブロックを追加するということを今やっています。今手元に追加されて、コマンドブロックを配置して、それからレバーと電子回路をレッドストーンを使って作ります。

このコマンドブロックにはいくつか種類があります。(その中で)反復、要は繰り返すコマンドブロックにします。コマンド入力というところに先ほど一発コマンドを使ってロケット花火を打ち上げた命令を打ち込んでいますが、コマンド入力と書かれているところに入力したコマンドを反復します。繰り返しますというものです。

準備ができましたね。レバーを引きますと、このようにロケット花火が永遠に打ち上がる。永遠に繰り返されるという動作ができました。このようにコマンドブロックを用いて先ほど使っていたコマンドを無限に実行するということをやりました。

マインクラフトとコンピューターサイエンスの交わり

ここまでをまとめると、今2種類を見ていただきました。Pythonを用いてHello Worldと打ち込む。 それから動物を大量に出現させる。それからロケット花火をいろんな方法を使って打ち上げてみる。ここから言えることとしては、ブロックプログラミング、もしくはPythonもそうですが、プログラミングを用いて、例えば順次、選択、繰り返しといった基本的なアルゴリズムを学べるようになっています。

2つ目のポイント、マインクラフトのコマンドを用いてWindowsのコマンドも学べる。Windowsのコマンドを使われている開発者の方も多いかと思いますが、子どもたちにコマンドを身近に思ってもらうためにマインクラフトの世界を使う。そういったことも大いに考えられると思っております。

また本日は紹介し切れなかったんですが、現実世界での人工知能のいずれについても学ぶことができます。この教育版マインクラフト、実は教育機関様以外でもログインせずとも1つ実際に実施できるレッスンがあります。今にも火事で燃えそうな村をコーディングを用いて救う。そんなレッスンが実際に行えたりします。

これはアプリを使ってコーディングを学びながら現実世界で使われているAIの実例、「森林火災を防ぐにあたってコンピューターが果たす役割は何なのか?」ですとか。そういったことをマインクラフトの世界を使って学べる。こういったことが マインクラフトとコンピューターサイエンスの交わりとして言えることではないでしょうか。

マインクラフトでの体験がもたらすもの

マインクラフトでの体験という話に移りますが、子どもたちが実際にマインクラフトをやる際にどんなプロセスを踏んでいるかを最後にお話しさせていただければと思います。

想像、調査、試行、修正、発信と書いてありますが、子どもたちがマインクラフトでなにかしらプレイする場合、こんなプロセスを踏んでいます。

先ほどのバーチャル卒業式の冒頭の例をとってみましょう。

まず、想像のところですね。想像というのは何を作るか、そしてどんなものを作るかを自分で決めるプロセスです。これは現実世界にあるものでもいいですし、架空のものでもかまいません。先ほどのバーチャル卒業式の例ですと、架空の学校を再現して卒業式をやりたいと想像しました。

その後、調査のところですね。モチーフになる形、画像、もしくは資料をYoutubeや本を使って探し出すというのが、この調査にあたります。

先ほどのバーチャル卒業式ですと、どうやってこの体育館を作り出すか。それからどのようにしてサイネージなど合ったものを作れるかをインターネットや本を使って探し出すというのが調査にあたります。

そして試行ですね。形、位置、大きさなどをどのようにして作るか考えながら、実際に作ってみる。まさに調査に基づいて、バーチャル卒業式の体育館や椅子など、実際の形に近いものを作り出していくというのが試行のプロセスです。

修正のところは文字通りですが、気に入らなかったら修正を繰り返す。発信も、文字通り作品を公開する。それをインターネット上で広く公開したり、学びとして学校の先生や身近なコミュニティーでフィードバックを受ける。そういったものが発信にあたります。

まさにPDCAサイクルと言いますか、実際に子どもたちはマインクラフトでの体験を通じてこういったプロセスを踏んでいます。

これは個人でやることもあれば複数人でやることもあります。複数人でやる場合は「〇〇君はこれが得意、〇〇君はこれが得意」とそれぞれ分担したりする中で、協調性というものが生まれるようになっています。

チームワークも学べる「Minecraftカップ」

まさに複数人でやるというところを体現したものが、こちらのMinecraftカップという取り組みです。どういったものかと言いますと、2019年マインクラフトを舞台に行われた全国大会のようなものだと思っていただければと思います。

こちらは、「スポーツ施設のある僕・私の街」というテーマで、実際にプログラミングを用いながら身近なチームワークを使ってマインクラフトの理想的な世界を作り上げていくという大会でした。

この大賞に輝いた加藤学園暁秀初等学校サンシャインWHITE6なんですが、マインクラフトが初めての子と熟練した子の混合17名のチームで優勝を勝ち取りました。

そのリーダーの子が、「マインクラフトは無限に続く世界で、みんなが1つになって1つのワールドを作れることがよかった。やる気が出た」「いろいろなことにつながっていくことを学んだ」と言っていました。

コンピューターサイエンスのみならず、こうした身近なコミュニティでのチームワークを発揮しながら1つ理想的なものを作り上げていくということが、実際にMinecraftカップ2019で行われました。

Minecraftカップ2020につきましても、現在どのようにリリースできるか調整中ですので、ぜひとも今年のMinecraftカップ2020もご期待いただければと思っています。

こちらはMinecraftカップに近しいものがあるのですが、実際にMicrosoftからもこの臨時休校期間中にマインクラフトを用いて遠隔学習、もしくはなにかしらの学習コンテンツを提供するということで、教育用のマーケットプレイス、要は教育用のワールドを公開しています。教育版マインクラフトが6月下旬まで無償で使えるようなものを用意しております。

ぜひともこういったものを使いながら、マインクラフトとコンピューターサイエンスに触れていただければと思っています。

人生に必要な知恵はすべてマインクラフトで学んでいい

本日の発表は、マインクラフトとコンピューターサイエンス、要は教育文脈でのお話となりましたが、より教育的な文面で、中学校の化学や音楽でどんなことができるか。それから国語でどんなことができるか。総合的な学習でどんなことができるか。などなど、そういったことに興味をお持ちでしたら、ぜひともこちらのおすすめコンテンツよりアクセスいただければと思っています。

ということで最後、こちらの言葉で締めさせていただきます。ロバート・フルガムの言葉にあります「人生に必要な知恵はすべて幼稚園の砂場で学んだ(All really need to know I can learn in kindergarten.)」という言葉があります。

まさにこれがマインクラフトに置き換えられるかなと、現代を生きる上で思っています。「人生に必要な知恵はすべてマインクラフトで学んでいい」と書いてありますが、まさに先ほどの子どもたちがマインクラフトを用いて実際に体験することですね。想像して調査して試行して修正して発信する。その一連のプロセスは、これから子どもたちが社会に出ていく上で、まさに実際のプロジェクトを回すのに必要な思考プロセスにぴったりのものだと思っております。

本日はPython、それからロケット花火のいろいろな打ち上げ方をデモビデオでお見せしましたが、実際に身近な子どもたちに向けてコンピューターサイエンスの第一歩としてこちらの動画がお役に立ちますと幸いでございます。

以上でセッションは終わりとなりますが、ぜひとも「マインクラフト Python」「マインクラフト 教育」などのキーワードで検索して、よりみなさまの身近な子どもたちへのマインクラフトを用いた教育が進むことを願っています。本日は誠にありがとうございました。