離島プログラマの雑記

島根県の離島、隠岐・西ノ島に移住して子育て中のフリープログラマです。

プログラミング教室のPCを Raspberry Pi に置き換えてマイクラでプログラミングまで

しばらく更新が滞っていましたが、にしのしまデジタルラボ・プログラミング教室は、おとなり海士町での開講に伴い、「隠岐デジタルラボ・プログラミング教室(西ノ島教室、海士教室)」として活動しています。

西ノ島教室では、某所からお下がりでもらった10年前くらいのデスクトップPCを使っていましたが、故障が目立つようになってきたため、リプレースとして最新の Raspberry Pi3 B+ を導入してみました。

Raspberry Pi のOSである Raspbian には、しばらく前から Mincraft Pi (Raspberry Pi 用のマイクラ)がプリインストールされており、さっそく小学生に見つかった(笑)のでみんなで遊んでみることにしました。Mincraft Pi の特徴はスクリプトでプレイヤーを動かしたり、ブロックを配置したりできるところなので、普段使っている Scratch と接続してマイクラプログラミングもやってみます。

f:id:k-aeg:20180620162349j:plain

購入した機材

f:id:k-aeg:20180604114229j:plain

本体セットアップ

OSイメージの準備

www.raspberrypi.org

から「RASPBIAN STRETCH WITH DESKTOP」をダウンロードして dd コマンドで SDに書き込み。 手順はいろんなページに書いてあるので省略します。

記事によってはSDカードのフォーマット操作してますが、ddコマンドで書き込む時にパーティションごと消えるので事前のフォーマット操作は不要です。

あと、こんな落とし穴があるらしいけど jessie 時代の話なので、stretch ではどうなってるか不明ですが、まあ conv=sync オプションもつけて置いたほうが無難そうです。

akkiesoft.hatenablog.jp

電源投入〜デスクトップ表示まで

最近はオートログインで、電源入れただけで一気にデスクトップ表示まで行くんですね。 なにもしなくても pi ユーザーで自動ログインされます。初期パスワードは「raspberry」。

日本語化 + 日本語入力

こちらを参考に設定しました。

deviceplus.jp

Mincraft Pi セットアップ

Scratch2MCPI のインストール

こちらの記事の通り、Scratch と Minecraft Pi の Python I/F をつなぐ Scratch2MCPI をインストールします。

thinkit.co.jp

ローカルネットワーク内のワールド共有

  1. ワールド共有したい Raspberry Pi (最大5台)を同じ LAN 内に接続する
  2. ホストするマシンで Mincraft Pi を起動し、ワールドを作成して動ける状態にしておく
  3. 他のマシンでも Minecraft Pi を起動し、Join Game をクリックして Steve Pi (192.168.xxx.xxx) に接続

4台で接続してワールド共有してみましたが、けっこうサクサク動きます。

Scratch との接続

  1. Minecraft Pi を起動してプレイヤーを動かせる状態で、TAB でカーソル解放
  2. Scratch2MCPI を起動
  3. Scratch でプログラムを書いて実行

特にトラブルなくあっさりうまくいきました。ワールド共有中でもスクリプトは実行可能です。

あそんでみる

さて、小学生3人と一緒に遊んでみました。マイクラができると聞いたとたんテンション爆上がりです(笑) Scratch2 単体の動作は描画が多いと若干カクっとしましたが、Minecraft Pi はかなり軽快に動きます。

イクラ自体ほとんどやったことなかったので、小学生の遊び方を観察したりしてみましたが、マイクラ内で鬼ごっこしたり、石を並べて宝石店を作り出したり、なかなかクリエイティブな遊びかたをするので、これはデジタル版のレゴなんだな〜という感じがします。

Scratch を通してのプログラミングも少し手をつけてみて、プレイヤーを色んな場所にワープさせたり、ブロックを直線に並べてみたりもしましたが、いつも使っている Scratch のインタフェースなので割とスムーズに受け入れてくれました。

ただ、グローバル変数(mcpiX、mcpiY、mcpiZ)に座標をセットしてsetPosなどのコマンド送信、という流れは普通のScratchプログラミングと異なるお作法(アセンブリ言語レジスタに値をセットして命令発行している感じ)なのでちょっと慣れが必要そうです。気軽に並列処理しようとするとメチャクチャになります(笑)

というわけで、しばらくマイクラ+プログラミングで遊んでみようと思います。