プログラミング教室のPCを Raspberry Pi に置き換え&マイクラでプログラミング
しばらく更新が滞っていましたが、にしのしまデジタルラボ・プログラミング教室は、おとなり海士町での開講に伴い、「隠岐デジタルラボ・プログラミング教室(西ノ島教室、海士教室)」として活動しています。
西ノ島教室では、某所からお下がりでもらった10年前くらいのデスクトップPCを使っていましたが、故障が目立つようになってきたため、リプレースとして最新の Raspberry Pi3 B+ を導入してみました。
Raspberry Pi のOSである Raspbian には、しばらく前から Mincraft Pi (Raspberry Pi 用のマイクラ)がプリインストールされており、さっそく小学生に見つかった(笑)のでみんなで遊んでみることにしました。Mincraft Pi の特徴はスクリプトでプレイヤーを動かしたり、ブロックを配置したりできるところなので、普段使っている Scratch と接続してマイクラプログラミングもやってみます。
購入した機材
Raspberry Pi 3 B+
とりあえず4台を確保。
ケース + 2.5A 電源アダプター + ファン + ヒートシンク
モニタ
既存PCのRGB接続モニタを使いました。
HDMI → RGBケーブル
モニタは既存PCのものを流用するので RGB 変換ケーブルだけ購入。 用途限定という感じですが昔よりだいぶ安くなりましたね。ちゃんと全部使えました。
USBキーボード
古PCは PS/2 接続のキーボードのため Raspberry Pi に使えないので、USB接続のものを購入。 こちらもえらく安いですが問題なく使えています。
USBマウス
マウスは既存のものを使いました。
Micro SD カード
Raspberry Pi は SDカードの相性が厳しいことで有名(?)ですが、これはちゃんと認識されました。
本体セットアップ
OSイメージの準備
から「RASPBIAN STRETCH WITH DESKTOP」をダウンロードして dd コマンドで SDに書き込み。 手順はいろんなページに書いてあるので省略します。
記事によってはSDカードのフォーマット操作してますが、ddコマンドで書き込む時にパーティションごと消えるので事前のフォーマット操作は不要です。
あと、こんな落とし穴があるらしいけど jessie 時代の話なので、stretch ではどうなってるか不明ですが、まあ conv=sync オプションもつけて置いたほうが無難そうです。
電源投入〜デスクトップ表示まで
最近はオートログインで、電源入れただけで一気にデスクトップ表示まで行くんですね。 なにもしなくても pi ユーザーで自動ログインされます。初期パスワードは「raspberry」。
日本語化 + 日本語入力
こちらを参考に設定しました。
Mincraft Pi セットアップ
Scratch2MCPI のインストール
こちらの記事の通り、Scratch と Minecraft Pi の Python I/F をつなぐ Scratch2MCPI をインストールします。
ローカルネットワーク内のワールド共有
- ワールド共有したい Raspberry Pi (最大5台)を同じ LAN 内に接続する
- ホストするマシンで Mincraft Pi を起動し、ワールドを作成して動ける状態にしておく
- 他のマシンでも Minecraft Pi を起動し、Join Game をクリックして Steve Pi (192.168.xxx.xxx) に接続
4台で接続してワールド共有してみましたが、けっこうサクサク動きます。
Scratch との接続
- Minecraft Pi を起動してプレイヤーを動かせる状態で、TAB でカーソル解放
- Scratch2MCPI を起動
- Scratch でプログラムを書いて実行
特にトラブルなくあっさりうまくいきました。ワールド共有中でもスクリプトは実行可能です。
あそんでみる
さて、小学生3人と一緒に遊んでみました。マイクラができると聞いたとたんテンション爆上がりです(笑) Scratch2 単体の動作は描画が多いと若干カクっとしましたが、Minecraft Pi はかなり軽快に動きます。
マイクラ自体ほとんどやったことなかったので、小学生の遊び方を観察したりしてみましたが、マイクラ内で鬼ごっこしたり、石を並べて宝石店を作り出したり、なかなかクリエイティブな遊びかたをするので、これはデジタル版のレゴなんだな〜という感じがします。
Scratch を通してのプログラミングも少し手をつけてみて、プレイヤーを色んな場所にワープさせたり、ブロックを直線に並べてみたりもしましたが、いつも使っている Scratch のインタフェースなので割とスムーズに受け入れてくれました。
ただ、グローバル変数(mcpiX、mcpiY、mcpiZ)に座標をセットしてsetPosなどのコマンド送信、という流れは普通のScratchプログラミングと異なるお作法(アセンブリ言語でレジスタに値をセットして命令発行している感じ)なのでちょっと慣れが必要そうです。気軽に並列処理しようとするとメチャクチャになります(笑)
というわけで、しばらくマイクラ+プログラミングで遊んでみようと思います。