【雑記】子供の(大人も)プログラミング学習に「マインクラフト」が良さそう、という話
将来の夢は「八百屋さん」だった小学2年生の息子が、最近「早く大学に行ってロボットの勉強がしたい」と言い出しました。技術系の仕事をしている私としては黙っていられない話題。しかし、家庭でロボットのハードウェアで遊ぼうとなると、それなりの場所と、工具の取扱いが必要になります。
場所の確保は別問題として、下手に扱うと後遺症が残る可能性があるのが工具類。小学2年生の時に刃物の取扱いを誤って左手に若干後遺症の残る深い傷を負った私としては、当分の間私の監督無しで使わせることはしたくありません。
何らか関係するネタを求めて書店に行った結果、こんな教科書を発見しました。
親子で楽しく学ぶ! マインクラフトプログラミング (ぼうけんキッズ)
- 作者: Tech Kids School,株式会社キャデック
- 出版社/メーカー: 翔泳社
- 発売日: 2017/03/01
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
パソコン用の「マインクラフト」であれば、Mod(拡張ソフト)を導入する事でプログラミング学習が出来るという触れ込みです。
ロボット製作はハードウェアだけではなく、ソフトウェアも重要。これなら私が不在の時でも、妻の監督で続ける事が出来そうです。調べると他にもマインクラフトでプログラム学習ができる方法はあるようですが、とりあえず最初に目についたこれから始める事にしました。
リリースされてから約6年、ついに我が家も「マインクラフト」を導入する事に。
今回のエントリは、「マインクラフト」で「ComputerCraftEdu」というModを利用したプログラミング学習についての私の経験談です。
◼︎導入した事で良かった点
・見た目がわかりやすい
詳細は別途記しますが、「マインクラフト」でプログラムを組む際の画面が以下の写真です。
この左側のマス目に、右上にあるタイルを並べるようにしてプログラムを組みます。プログラムを組む上で重要な「関数」に当たるものは全てタイルで表現されるので、何が出来て何が出来ないのか明確です。
タイルを置くと、次のタイルを置く場所の色が変わり、作業を促してくれます。
この場合10回ループのfor分を組もうとしています。
条件分岐であるif文や、ループ処理のfor文の場合は「インデント」された場所の色が変わり、プログラムを実際に組む方なら納得できる作りになっています。
タイルで組んだプログラムのコードを見る事も出来ますが、この場合はあまり必要無いでしょう。実際プログラムをキーボードで打つ「コーディング」で拒否反応が出てしまう方もいると思います。コーディングは根気がいるので、その要素を排除できるだけでも子供には導入しやすいと感じています。
・プログラムを組んだ実感が得やすい
私は元々ハードウェアが専門で、ソフトウェアの知識はC言語の最低限程度。普段プログラミングする事があるのは仕事用のツールを作るExcel VBAで、パッケージソフトの開発経験はありません。プログラマとしてはレベルが低い部類です。
レベルが低い私が考える、C言語等のプログラミング言語を学ぶ際のハードルは「出来ている実感が得にくい」事だと思います。
よくC言語の教科書の最初にあるのが「Printf」で「Hello World」と表示させるもの。
確かにプログラミングの基礎ですが、ぶっちゃけ出来たところで「で?」という感じです。正直この程度では面白さなんか分からないと思うのです。1行だけ文字がピロッと出てくるだけですし。
さて、「マインクラフト」で「ComputerCraftEdu」を使用した場合は、組んだプログラムでこの
「タートル」が実際に動きます。
プログラムを組むことでこの「タートル」を動かしたり、穴を掘らせたり、ブロックを置かせたりできます。
例えば、
「ブロックを置いて前に進む、を10回繰り返す」というような事です。
「タートル」をプログラム通りに動かせる事がわかると、積木が自分の指示で動くような感覚というか、ビジュアルイメージがわかりやすいので実感が得やすいと感じました。実際自分が組んだプログラムで「タートル」が動くと息子は大喜びでした。
また、「ComputerCraftEdu」が「インタプリタ型」であることも重要だと思います。
いわゆるC言語のような「コンパイラ型」と比較して、速度は遅くても即プログラムの動きが確認できるのは、子供や私のような飽きっぽい大人に向いていると思います。
・参考文献が多い
導入に当たっては、インターネットでちょっと調べるだけですぐに資料が見つかりました。大人気のゲームだけあって、情報も豊富です。Googleで普通に調べれば問題なく導入できると感じました。
・プログラミングに飽きても普通に遊べる
「ComputerCraftEdu」を使用するためには、「クリエイティブモード」で遊ぶ事になります。この時、使用するブロックは無制限になるので、根気さえあれば作りたい物に制限がない状態になります。
プログラミングに飽きたら、そのまま思い通りに作る遊びに切り替えればよいのです。
実際息子も1週間位で、プログラムに飽きたら自分でせっせと建物を作り、建物を作っている最中に「ココはタートルに作らせよう」とプログラムを組み、タートルが動いている最中に自分もブロックを積み上げるという並行作業をこなすようになりました。
今はfor文とif文を使い分けていますし、やはり「遊んで楽しい」というのは学習効果が高いと感じました。
◼導入に当たっての不満
・ペアレンタルコントロールがうまく行かなかった
「マインクラフト」はゲームの履歴をクラウドに保存する仕組みになっているので、インターネット接続されたPCである必要があります。
我が家のパソコンはMAC mini(Late2012)で、息子のインターネット利用に制限を設けるためこれまでペアレンタルコントロールを設定していましたが、「マインクラフト」を導入してみると、アプリケーション起動の度にゲームサーバーへの接続許可を求めてきます。ゲームサーバーへの常時接続許可を設定しても、何故か起動の度に接続許可を求めてきて、これでは私が不在の時に遊べません。
残念ですが自分の技術不足を認めて、現在はペアレンタルコントロールを外しています。今後の追跡調査が必要ですね。
結果、
・デスクトップには「マインクラフト」以外のアイコンが表示されない
・私が不在の際は必ず妻の監督のもと遊ぶ
という条件で稼働することにしました。
・少しインストールが難しかった
「マインクラフト」のインストール後、「ComputerCraftEdu」のModインストール前に、「FRRGE」という「Modを導入するためのMod」をインストールする必要があります。
「FRRGE」をインストールした後に、「ComputerCraftEdu」のインストールが、通常は隠しフォルダになっているフォルダにインストールする必要があり、少し手こずりました。ただ、インターネット上に参考文献はあるので、ある程度の知識がある方であれば問題ないと思います。
◼使用環境
・使っているPC
我が家のパソコンは現在Mac mini(Late2012)しかなく、決して目新しい環境ではありません(むしろ時代遅れ)。具体的に記しますと、
本体 :Mac mini (Late 2012)
OS :OS X El Capitan(Ver.10.11.6)
メモリ :4 GB 1600 MHz DDR3
グラフィックス:Intel HD Graphics 4000 1536 MB
です。
この環境で全く問題なく動いています。ただ、「マインクラフト」を遊ぶ場合、Apple 純正である「Magic Mouse」では、
・息子の手では右クリックが上手く反応してくれなかった
・スクロールが過敏すぎて上手く操作できない
という問題点がありました。
というわけで、
マウスを買いました。
名古屋のヨドバシカメラで税込み¥2,480。Logicoolのm558です。Mac対応とうたってあるBluetoothマウスです。導入の結果左と右のクリックの違いがわかりやすくなり、適度にクリック感のあるスクロールホイールで、ゲーム中の作業がしやすくなりました。安いし入手性も良くオススメです。
・費用
前述のマウスを買ったことを除けば、アカウント購入費用の¥3,000のみです。
データはクラウドに保存されるため、「マインクラフト」がインストールされているPCでであればどこでも遊ぶ事ができます。
これを高いと取るか安いと取るかは人次第だと思いますが、私は安いと感じました。
パソコンはもともと家にありましたし、新たにゲーム専用機を買う必要も無い。子供と
遊べる準備資金としては十分安い部類に入ると思います。
◼実際に遊んでみると
では、実際に「土を3マス掘って3マス進む」をプログラムしているところを動画にしてみました。収録が上手くいかず音声はありません。
動画の作業フローとしては
1.タートルを置く
2.タートルを置く向きが間違っていたので左に90°向きを変える
3.新しいプログラムを選択
4.forループで「土を3マス掘って3マス進む」を並べる
5.「Run」ボタンで動かす
6.「タートル」が動いて土を掘る
という流れになっています。
「ツルハシ」のタイルが「掘る」で、緑の矢印が「前に進む」です。
以上のように簡単にプログラムが組め、動作の確認もしやすいです。
もちろん、こんなプログラムでは実際には役に立たないのですが、息子には「実際に動く」という事が響くようで、「スゴイ!」となりました。
実際に大人がやってみせることで、子供も「やれそう」という気になりますし、大人自信も自分が思ったように「タートル」が動くかどうか、頭の体操になります。
◼結局プログラミング学習に良さそうなのか?
結論としては、「かなり良さそう」でした。
プログラムを組むことの成果物がわかりやすく、もともと積木やレゴが好きな息子にはぴったりでした。飽きずに遊んでいて、教科書に書いてある事も自分で読んで進めているようです。私が小学生の時にファミコンソフトの攻略本に興奮したような感覚なんでしょうか。
「マインクラフト」の情報は、検索すればいくらでも出てくるので、情報を集めるのには困ることは無いと思います。純粋に遊ぶだけでも面白いですし、気が向いたらプログラムを組むこともできます。個人的に遊んでみて大いに楽しめています。一緒に遊べる時間が作れたら、「こんなの作ってみたらどうだろう」と息子と相談しながら遊んでいます。
プログラマとして低級な私が言うのも何ですが、プログラムを学ぶ上で言語の記述方法を学ぶことは確かに重要です。が、本質は「やりたいことへの筋道の立て方を考える力」と「与えられた材料で目的を達成する力」だと考えています。逆に言語の文法を理解したとしても、そもそも作りたいモノ、作る必要が有るものが無ければプログラムは組まない(組めない)ですし、筋道(ストーリー)を考えられなければバグの元になってしまいます。また、おそらくどのプログラム言語でも仕様上の制約があると思います。その制約を理解した上で目的を達成する「工夫する力」を鍛えないと高度なプログラミングはできないし、逆に何をしたらいいか分からなくなると思います。例えるなら、サッカーでハンドが許可されたら(ルールが無視されたら)絶対意味不明なスポーツになるはずです。
それに、息子が将来自分でロボットを作り、プログラムを組む道を選ばなかったとしても、プログラムを組んで遊んだ、という経験自体が他の分野にも生きると信じています。人生の可能性を広げる一助としてゲームソフトが使えるなんて、なんていい時代だろうと感じます。
家にパソコンがある前提になりますが、「マインクラフト」でのプログラミング学習は、すでに遊んでいる方には新しい遊びになると思いますし、まだの方にはきっと遊べる要素が盛りだくさんです。ぜひオススメします!