【雑記】マインクラフト(Windows10版)にMakeCode for Minecraftを導入した話
昨年、息子とマインクラフトでマルチプレイをするためにMac Mini(Late2012)にWindows10を導入し、Windows10版とiOS版でマルチプレイを楽しんでいるのですが、旧Mac版でできた「ComputerCraftEdu」が使えなくなり、プログラミングで遊ぶ事が出来なくなったのが不満でした。OSを切り替えればいいのですが、デュアルブート環境ではイマイチ面倒です。
そんな中、2017年の10月にMicrosoftから公式プログラミングツールである「MakeCode for Minecraft」がリリースされていた事を知り、早速インストールしてみました。
結論から言うと昨年遊んでみた「ComputerCraftEdu」よりもプログラミングしやすく、かつ高度なプログラミングが可能になっており、公式の本気を感じます。ですが、日本のマインクラフターの間ではイマイチ話題ではないらしく、Webで検索してもプレスリリースか英語の情報しかなく、個人のブログなどではあんまり紹介されていません。公式からマトモな日本語サイトが公開されていないせいでしょうか。
と言うわけでこのGWの連休で遊んでみた結果をまとめてみたいと思います。
◼︎MakeCode for Minecraftとは?
昨年は気づいていなかったのですが、「窓の杜」で以下の通りプレスリリースがあったようです。
概要を図示するとこんな感じです。
「MakeCode for Minecraft」で作ったプログラムを、「Code Connection」が橋渡しして「マインクラフト」で動作させるという仕組みになっています。後述しますが、「Code Connection」で橋渡し出来るプログラミングツールなら、他の言語も使えるようです。「MakeCode for Minecraft」はJAVA Scriptで組まれており、JAVA Scriptが使える方なら直接記述も可能です。
◼︎インストール
Minecraft(Windows10版)がインストールされたPCで、以下のサイトにアクセスして「MakeCode for Minecraft」をダウンロードします。
サイト中段にある「Download Code Connection」をクリックします。
写真1:ダウンロードボタン
ブラウザが「Edge」の場合は以下のダイアログが表示されるので、「実行」をクリックしてインストール開始です。
写真2:インストールの実行
後はWindowsアプリケーション定番のインストールの流れです。
写真3:おなじみのインストールダイアログ
そのままインストールが終わるとデスクトップに以下のアイコンが表示されます。
写真4:いかにもマインクラフトなアイコン
これで準備完了です。
◼︎マインクラフト(Windows10版)と連携する
マインクラフトを起動してから「Code Connection」を起動すると、以下のようにメッセージが出ます。書類アイコンのボタンを押すと、コマンドがクリップポードにコピーされます。
写真5:仮想サーバへのアクセスコマンドをコピーする
「Minecraft Education Edition」と書いてありますが、普通のマインクラフトWindows10版で問題ありません。
チートONのクリエイティブモードでワールドを作ります。常に昼間、天候変化なしのオプションは付けておいた方がウザくないでしょう。チャットウィンドウを開いて先ほどコピーしたコマンドを貼り付けて、Enterキーを押すか右側の実行ボタンを押します。
写真6:チャットウィンドウへコマンドを貼り付けて実行
「サーバーへの接続を確率しました」のメッセージが出ると準備完了です。
写真7:サーバへ接続を確立
接続が完了すると、「Code Connection」の画面が切り替わります。
写真8:MakeCode以外のプログラミング学習ツールが使えるようである。
ブロック積み上げ型のプログラミング学習ツール「Scratch」も使えるようです。すでに「Scratch」で遊んでいる場合はそちらでも良さそうですね。今回はエントリの表題通り「MakeCode」を使います。
先ほどの画面で「MakeCode」をクリックすると、「MakeCode」のホームが開きます。
写真9:「MakeCode」のホーム画面。すでに何件かプロジェクトを作った後です。
ここで写真9の「新しいプロジェクト」をクリックすると、新しくプログラムが作成できます。
◼︎プログラミングの基本
実際のプログラミングは、公式サイトにチュートリアルがあるので、それで試すとよく分かると思います。ここからは自分で実際に試してみた結果を示します。
「新しいプロジェクト」をクリックすると、以下のような写真10の状態に切り替わります。写真10は、画面左側の「プレイヤー」という青色のボタンをクリックした状態です。
写真10:左側のボタンでプログラムのブロックが各種選べる
赤枠で囲った大カッコのようなものが、プログラムの一括りになります。
ここからはとりあえず、「ComputerCraftEdu」でいうところの「タートル」にあたる「エージェント」の姿を拝みたいので、「エージェントを自分のところに移動させる」を実際に作ってみます。
写真10の赤枠で囲った青い大カッコをクリックすると、プログラムを記述する領域に反映されます。写真11の状態では、マインクラフト上でチャットウィンドウにコマンド "jump" を入力した時に、カッコ内が実行されるプログラムになります。
写真11:大カッコのようなものがプログラムの一括り
"jump" をクリックすると選択状態になり、文字列を書き換える事ができます。
写真12:文字列を選択した状態
"come" に書き換えました。
写真13:文字列を書き換え
今度は、左側の「エージェント」ボタンをクリックし、「エージェントを自分の位置にもどす」と書かれた短冊をクリックします。
写真14:エージェントに対する命令を選ぶ
プログラムを記述する領域に、「エージェントを自分の位置にもどす」の短冊が網掛け状態で追加されました。
写真15:プログラム記述領域に命令がコピーされる
ドラッグして、「チャットコマンド "come" を入力した時」の大カッコ内に短冊を移動します。
写真16:ドラッグして組み込み
収まりました。コレでプログラミングは完了です。
写真17:プログラムの完成
では実際にチャットウィンドウを開いて、コマンド "come" を入力します。
写真18:作ったプログラムを実行してみる
自分の足元に、「エージェント」がやってきました。写真19では一歩引いてスクリーンショットを撮っていますが、実際には自分と同じ座標に来ます。この「エージェント」を使って自分の代わりに建築をしたり、畑を作ったり色々遊べるのですが、それは別の機会にします。
写真19:呼び寄せた「エージェント」
◼︎遊んでみた
公式サイトにはサンプルプログラムが示されており、それを試しに遊んでみることにしました。写真20のプログラムは、「Chicken Rain」と名付けられた「ニワトリを、自分の上空100の座標に100羽スポーン(発生)させる」というプログラムです。写真9の公式サイトトップ画像にそのプログラムが表示されているので採用しました。他にもいろんな動物がスポーンできるのですが、飛べない動物は落下ダメージで◯んでしまいまうのでニワトリです。
写真20:「ループ」と「生き物」を組み合わせて作る
作ったプログラムを実行すると、しばらくすると空からニワトリが降ってきます。
何とも異様な光景で笑えます。
写真21:「親方!!空からニワトリが!!」
息子から、「1万回繰り返しにしたら、ニワトリは1万羽スポーンするの!?」と注文が入ったので実際に試すことにしました。実行結果は写真23の通り、100羽の時より圧倒的なニワトリが降ってきます。
写真23:一万羽のニワトリ
引きで撮影するとその異様さが更にはっきりわかります。息子は爆笑して腹が捩れそうな勢いでした。
写真24:ニワトリタワー状態
爆笑している息子と同時に、ニワトリ1万羽はMac Mini(Late2012)には負荷が高すぎるらしく、CPUファンが激しい音を立てて回り始めました。コレはあんまりよくない。せめてニワトリの動きを止めないと、と思い写真25のプログラムを作成しました。
写真25:禁断のプログラムを作る
赤いブチの卵はニワトリです。それにしてもなぜこんなプログラムが実装できるように設計されているのでしょうか・・・
なんにせよ実行します。
実行前、辺り一面に広がるニワトリと、さらに降り続けるニワトリでエライコッチャな状態だったのですが、
写真26:うわぁ
プログラムを実行するとあたり一面のニワトリは「コケーッ!」という断末魔と共に皆行動不能になり、大量の生のトリ肉と羽が残されました。まだ地上に降下しきっていないニワトリも生のトリ肉になり、地上に勢い良く落下してきます。
写真27:「私残酷ですわよ」
このまま5分程度待てば生のトリ肉と羽はみんな自然消滅し、バニラ世界に平穏が訪れることでしょう。コンピューターはプログラミングしたとおりに動く、ということを息子に示すことができましたが、果たしてコレでよかったのかは疑問が残ります。
◼︎ちょっと遊んでみた感想
プログラミングの基礎があり、マインクラフトで遊んだことがある方であれば、「簡単で楽しい」と思います。プログラミング学習教材としても、マインクラフトが好きな子供であれば、日本語でプログラミングできることからかなりとっつきやすいのではないでしょうか。また、今回は書きませんでしたが、「MakeCode for Minecraft」で作成したプログラムは、JAVA Scriptに切り替える事ができ、逆にJAVA Scriptで記述すれば「MakeCode for Minecraft」に簡単に切り替えられます。アルゴリズムの基礎がある方であれば、JAVA Scriptがわからなくても簡単にプログラミングできるでしょう。逆にマインクラフト用のメソッドがわからなくても、JAVA Scriptで記述する際にはメソッドのオートコンプリート機能もありますし、学習教材として優れているのではないでしょうか。
マイクロソフトとしては、こういう遊びを提供することで将来のソフトウェアエンジニアを育てたいという狙いがあると思われますが、日本語チュートリアルが簡単に見つけられない現状では、日本ではあまり広がらない気がします。少しもったいないですね。
そして、子供がマインクラフトに熱中している技術職の親であれば、ぜひWindows10版の環境を子供に用意してあげて欲しいと個人的には思っています。息子と一緒に「どんなプログラムを作ろうか?」と考える時間は楽しくて、とても貴重な時間に感じています。