Minecraft with Code Project についての紹介スライドです。 Webサイト https://www.mcwithcode.com/
Minecraft with Code Project 概要たくのろじぃ / Takunology (Takumi Okawa)@takunology_netTakunologyJava版Minecraft を用いたプログラミング学習の支援とコンテンツ提供2022/08/24 更新
View Slide
2自己紹介大川 匠 (たくのろじぃ/Takunology)日本大学理工学部 4年 / 元高専生【趣味】 プログラミング / Minecraft / Azure で遊んだり、GitHub徘徊したり…【好きな言語】 C#(最近は Windows App SDK / WinUI 3 まわりを触ったりしてます)【主な活動】• Minecraft with Code Project (2020/11/1~)• Microsoft Learn Student Ambassadors (2021/1/7~)• MinecraftConnection ライブラリ開発 (2021/7/1~)• classmall Kids マイクラプログラミング講師 (2022/7/6~)【出版物 (Zenn にて公開中)】• Azure × LINE Messaging API によるMinecraft 農業の自動化 (2021/3/8)• C#ではじめるマインクラフトプログラミング (2022/2/9)@takunology_netTakunology たくのろじぃのメモ部屋
目次1. Gigaスクール構想とプログラミング教育2. Minecraft によるプログラミング学習3. Minecraft with Code Project4. Minecraft へのコマンド送信5. MinecraftConnection6. 実装例7. プロジェクト紹介3
1. Gigaスクール構想とプログラミング教育4Gigaスクール構想 学校でのICT教育を活用するため、生徒1人に1台ずつ端末を配布• 生徒の反応を踏まえた双方向型の授業• 1人1人の学習状況に応じた個別学習• 意見交換を通じて多様な考え方を共有ICT教育 ICTの活用によって、子供たちの力を最大限に引き出せるような学びを提供• 調べ学習による情報の収集・整理・分析• 文章作成やメディアを用いた表現・制作• 各学校との連携や海外との遠隔教育(リモート授業)• 情報技術を活用することによる情報モラル教育(リーフレット)GIGAスクール構想の実現へ (mext.go.jp)参考:
1. Gigaスクール構想とプログラミング教育5プログラミング教育 プログラミング教育を通して、コンピュータの仕組みや活用方法を見いだせるようにする• コンピュータを用いた問題解決およびコンピュータの理解• プログラミング的思考(処理の組み合わせ)の習得• コンピュータの活用による社会づくり教育の情報化の手引き-追補版-(令和2年6月)第3章 (mext.go.jp)参考:ビジュアルプログラミング 処理の書かれたブロックをつないでプログラムを作成していく• 理科:電気回路を模倣したプログラムの作成(例:距離が〇〇のとき点灯)• 数学:図形の描画や統計を行えるプログラムの作成• 社会(総合):タッチパネル式の町案内表示板の作成• 音楽:リズム・パターンの組み合わせによる作曲
2. Minecraft によるプログラミング学習6Minecraft の活用 Minecraft Education Edition にはプログラミング学習コースがあるエージェントをプログラムで動かすことで、ブロックを積み上げたりアイテムを運んだりすることができる→ ビジュアルプログラミングによるプログラミング学習ができる!海外では教材として取り入れられているが、日本ではあまり普及していない・・・
2. Minecraft によるプログラミング学習7Minecraft Education Edition を利用するには・・・?→ Office 365 A3 / A5 サブスクリプションが必要(学校側で導入)Office 365 Education プランの比較 (microsoft.com)
2. Minecraft によるプログラミング学習8Minecraft Win10版 ではプログラミング学習は可能か・・・?→ Code Connection for Minecraft を使用するとプログラミングが可能(ただし学習コースはない)(Education Edition を有効にすると、元素記号の書かれたアイテムが使える)
2. Minecraft によるプログラミング学習9Java版Minecraft でプログラミング学習は可能か・・・?→ 学習コースは用意されていないが、Mod開発やプラグイン開発を通してプログラミング(Java)は可能しかし、どちらも初心者向けではなく経験者向けなので難易度が高い
ここまでのまとめと提案10Gigaスクール構想 + プログラミング教育 の普及 → 学生がコンピュータを扱う機会が増加Minecraft Education Edition での教育 → マイクラの世界でプログラミングができるJava版Minecraft でプログラミング学習できるコンテンツをつくるJava版Minecraft でプログラミング学習は・・・?→ 学習コースは無く、初心者よりも経験者向けの内容(Mod開発 / プラグイン開発)子供から大人まで人気の Minecraft ならば楽しく学習できそうだが・・・→ Minecraft Education Edition でプログラミング学習ができるのは一部の学生(団体)だけ→ Win10版ならばプログラミング学習可能(ただし学習コースはないので書籍を買いましょう)
3. Minecraft with Code Project11Java版Minecraftを使用して、C#言語によるプログラミングを体験できるコンテンツを制作するプロジェクトマイクラ自動化 プログラミング入門
3. Minecraft with Code Project12マイクラで花火大会を実現するためのもう1つのプロジェクト : Fireworks ProjectMS Tech Camp #17 後夜祭!より
C#言語でできることは多い13C#だけでWebアプリやデスクトップアプリ、モバイルアプリなどを作れるような環境が整ってきた→ C#を習得できれば幅広くアプリ開発ができるようになるCloud Web Desktop Mobile Gaming IoT AIAzure ASP.NETBlazor.NET MAUIWPF/WinUIWinForms.NET MAUIXamarinUnity ARM32ARM64ML.NET.NET forApache Spark.NET 6Common Base Libraries / APIsInfrastructureRuntime Components Compilers Languages【参考】 https://devblogs.microsoft.com/dotnet/announcing-net-6/
Minecraft も加えたい14Minecraft も1つのプラットフォームとして .NET と結びつけたい → C#でできることを増やす現在は Java 版のみだが、可能であれば統合版や教育版にも広げていくCloud Web Desktop Mobile Gaming IoT AIAzure ASP.NETBlazor.NET MAUIWPF/WinUIWinForms.NET MAUIXamarinUnity ARM32ARM64ML.NET.NET forApache Spark.NET 6Common Base Libraries / APIsInfrastructureRuntime Components Compilers LanguagesMinecraftJava EditionBedrock EditionEducation Edition
4. Minecraft へのコマンド送信15TCP/IP ベースの通信プロトコルを用いて、サーバにコマンドを送るRCON (Remote Console)Login Pass(Request ID) / Command / Command response で構成されているパケットLogin pass Request IDRequest IDconnect・・・CommandResponse・・・closeMinecraft へのコマンド送信はRCONプロトコルを使用する参考:RCON - wiki.vgクライアント サーバ
5. MinecraftConnection16マイクラのコマンドを C# から送信することを可能にした、マイクラプログラミング向けライブラリ2022年8月の時点では Version 2.0.1 です。
6. 実装例17MinecraftConnectionを使って花火を打ち上げるプログラムを作る例
6. 実装例18まず、プレイヤーの現在地(相対座標)を取得するには・・・- /data get コマンドを実行してプレイヤーの情報を取得する- 取得できるデータは不要な文字列も含まれているので、正規表現を使って座標だけ抽出- 座標は文字列型なので、型変換して算術演算ができるようにする← CoreRCON を使った場合↓ MinecraftConnection を使った場合
6. 実装例19花火を打ち上げるには・・・- /summon コマンドを使用してロケット花火を打ち上げる- ロケット花火を構成するデータが初見の人には何がなんだかわからないかも?/summon firework_rocket ~20 ~ ~{LifeTime:30,FireworksItem:{id:firework_rocket,Count:1,tag:{Fireworks:{Flight:2,Explosions:[{Type:1,Flicker:0,Trail:0,Colors:[I;3887386],FadeColors:[I;2437522]}]}}}}上記のコマンドをプログラムで定義する作ったプログラムは再利用可能なので、コマンドを打ち直さなくても良い
7. プロジェクト紹介20Minecraft 自動化MinecraftConnection を使用した C# プログラミング建築や湧き潰しなどの実践的な活用方法について考えるMod 開発プログラミング学習Fireworks ProjectForge を用いた Java プログラミングオリジナルアイテムやツールの制作を通してMod開発を体験するMinecraft で C#プログラミングを学習するMinecraft で打ち上げ花火を楽しむMinecraft with Code Project Minecraft とプログラミングで楽しく遊べるコンテンツ製作を目指す
ロードマップ21プログラミングをするための 「きっかけ」 と「技術」を支援入門者 / 学生初心者経験者Minecraft Education Edition / Scratch などのビジュアルプログラミングを用いた学習MinecraftConnection を用いた C#プログラミング学習より高度なプログラミングの体験マイクラ自動化 / Fireworks Project社会人 / 経験者業務や趣味でC#プログラミングができるようになる.NET / ASP.NET / Console / Unity(VR) / Mobile …
Minecraft with Code Project