プログラミングが2020年度から小学校で必須となり、中学校では2021年度から拡充となりました(高校では2022年度から必履修化予定)。
このような状況で、各学校では micro:bit(マイクロビット)を中心に教育用マイコン(マイクロコンピュータ)を導入したり、各社から下記のような様々な教育用のプログラミングソフトが開発されています。
- Scratch(スクラッチ)
- Viscuit(ビスケット)
- プログラミン
- MakeCode(メイクコード)
- プログル
- mBlock(エムブロック)
- ドリトル
etc.
今回は、その中でも教育用マイコンを制御するソフトウェアに着目して、ScratchとMakeCode、mBlockを比較してみました!
あくまで あるふ が出来うる限りまとめたものです。また、日々機能が増えていっているものですので、誤りや過不足がありましたらコメント等でご指摘いただけると幸いです。
なぜ教育用マイコンが必要なのか
プログラミング教育には大きく以下の3つの目的があります。そしてその目的を達成する上で、マイコンには大きなメリットがあります。
プログラミング教育の大きな目的
- 論理的な思考を身につける
- 試行錯誤をし、論理的に問題解決ができるような態度を養う
- プログラミングを問題解決に活用できるようになる
マイコンのメリット
上記の目的は、マイコンが無くても(ソフトウェアだけでも)達成できると思います。しかし、中学校の技術では「プログラミングを用いた制御」ができるようになることが学習指導要領の中にも含まれています。
また、双方向通信を制御できるようになることも想定されています。
さらには、高校の学習指導要領に、情報科の「各科目にわたる指導計画の作成と内容の取扱い」において下記の記述があります。
各科目の目標及び内容等に即して,コンピュータや情報通信ネットワークなどを活用した実習を積極的に取り入れること。その際,必要な情報機器やネットワーク環境を整えるとともに,内容のまとまりや学習活動,学校や生徒の実態に応じて,適切なソフトウェア,開発環境,プログラミング言語,外部装置などを選択すること。
「高等学校学習指導要領(平成30年告示)」(文科省)
そしてなにより、実際にモノが動くといったフィードバックがあった方がより楽しい!!そして、マイコンがあった方が、問題解決としてもより実践的なことができるのではないでしょうか。
ソフトウェアの比較
Scratch(スクラッチ)とMakeCode(メイクコード)、mBlock(エムブロック)に使用できる言語やそれぞれの特徴を比較していってみましょう。
結論から申し上げますと、個人的には「ソフトウェアはmBlock、マイコンはCyberPi」が最も教育に適していると感じています(2021年5月現在)※。
※ あくまで「個人的には」という点と、「現時点では」という点、そして「予算の面を考慮しない」という点を踏まえればということになります。
そして大雑把に表すのなら、下記のようになるのではないでしょうか。
超入門 なら Scratch
入門~応用(IoTやSTEAM)& JavaScript(Python) & micro:bit なら MakeCode
超入門~高度応用(IoTやSTEAM)& Python & CyberPi なら mBlock
しかし、各ソフトウェアの強みがありますので、各学校の特色やリソースに合わせて選定していけば良いでしょう。
プログラミング言語 と オンライン/オフライン
ソフトウェア | オンライン/ オフライン | スマホアプリ | プログラミング言語 |
---|---|---|---|
Scratch | 両方※1 | 有 | Scratch(ビジュアルプログラミング・ブロックタイプ) |
MakeCode | 両方※2 | 有 | MakeCode(ビジュアルプログラミング・ブロックタイプ)、JavaScript※3、Python※4 |
mBlock | 両方※5 | 有 | mBlock(ビジュアルプログラミング・ブロックタイプ)、Python※6 |
※1 プロキシ認証があるとScratchLinkが使えず、micro:bitとの接続はできない(プロキシの例外設定が必要だと思われます)。
※2 オフラインアプリを使用時、最初にインターネットからライブラリ等をバックグランドでダウンロードするため、インターネット接続が必須。なお、プロキシ環境だとライブラリ等のダウンロードが実行されない(プロキシの例外設定が必要だと思われます)。
※3 ブロックとJavaScriptの変換が可能。
※4 Pythonは変換不可だがブロック毎にPythonコードの参照が可能 ←2021年8月現在では、JavaScript同様、ブロックからPythonの変換が可能。しかし、サードパーティーのライブラリの追加は不可。
※5 プロキシ認証があるとクラウド連携が使えない(プロキシの例外設定が必要だと思われます)、ブラウザでは要確認。ブラウザでは要mLink。
※6 ブロックからPythonに変換したソースコードの閲覧が可能。Pythonエディターではサードパーティーのライブラリの使用が可能(要PCとの接続)。
今回比較する3つのソフトウェアは、すべてブロックタイプのビジュアルプログラミング言語がベースとなっていますが、下記の3点で大きな違いがあります。
Scratch ブロックのみ MakeCode JavaScript と Python(ライブラリの追加は基本的に不可) も可能 mBlock Python も可能で、ブロックからPythonに変換したソースコードの閲覧が可能で、Pythonエディターにすることでライブラリの追加も可能(要PCとの接続)
単純に使用したい言語という観点だけで見ると、下記の表となりそうです。Pythonにおいて、MakeCodeが括弧付けになっているのは、mBlockはサードパーティーのライブラリの使用が可能ですが(要PCとの接続)、MakeCodeは基本的に既存のライブラリのみの使用となるためです。
使いたい言語 | 活用できるソフトウェア |
---|---|
ビジュアルプログラミング(ブロックタイプ) | Scratch, MakeCode, mBlock |
JavaScript | MakeCode |
Python | mBlock, (MakeCode) |
また、オンラインとオフラインでの使用はすべてのソフトウェアで両方対応していますが、それぞれに制限がありますので、表1の※印の注釈を確認の上、選定する方が良いでしょう。
特に、プロキシ認証に関しては、すべてのソフトウェアで制限がありますのでご注意ください。こちらに関しては各社、なんとかクリアして欲しいところです。案外、プロキシ認証をしている学校現場は多いですから・・・。
特徴
簡単に各ソフトウェアの特徴を一言で表すとこんな感じではないでしょうか。
Scratch 超入門編で情報量も豊富。micro:bit との簡単な連携も可能。
MakeCode micro:bit での IoT や STEAM教育をやりたいならとりあえずこれ!
mBlock 超入門から高度な応用的なことまで可能! IoT や STEAM教育に強み!!
ソフトウェア | 特徴 |
---|---|
Scratch | ・プログラミングの入門編として有名で、情報量が豊富 ・「スプライト」と呼ばれるアプリ上のオブジェクトを制御することが可能 ・拡張機能を追加することでmicro:bitとの連携が可能※1 ・MicrobitMore※2を活用することでmicro:bitの連携が増える |
MakeCode | ・micro:bitを用いたプログラミングでの2020年度のデファクトスタンダードで、情報量が豊富 ・micro:bitの付属センサーだけでなく、拡張機能を追加することでサードパーティーの拡張センサーの制御が可能 ・Minecraftのプログラミングとしての使用も可能 ・デバイス間連携が容易に可能 ・シュミレーターで動作の確認が容易 |
mBlock | ・mBotやHalocode、CyberPiといったmakeblock社のロボットやマイクロコンピュータの制御がメイン(micro:bitも一部可) ・「スプライト」と呼ばれるアプリ上のオブジェクトを制御することが可能 ・センサーやマイクロコンピュータの制御を「デバイス」として「スプライト」と同様の単位で制御することが可能で、各スプライトやセンサー・マイコンをメッセージを用いて連携することが可能 ・デバイス間連携が容易に可能であり、STEAMロボット「mBot2」の制御も可能 ・mBuild で容易にセンサー等の拡張が可能(電子工作の手間が少ない) ・サードパーティーの拡張センサーの制御も一部可能 ・Google Workspaceなどのクラウドサービスとの連携が可能 ・ライブモードで動作の確認が容易 ・Python エディター があり、サードパーティーのライブラリの使用も可能※3 |
※1 要ScratchLink。
※2 “教育向けプログラミング環境 Scratch (スクラッチ)で micro:bit (マイクロビット)を使えるようにする拡張機能です。Scratch に付属する micro:bit 拡張よりも高機能で、micro:bit に備わっているセンサーや LED などの機能をすべて利用できます。” Yengawa Labより
※3 サードパーティーのライブラリを使用する場合には、アップロードではなくライブモードである必要があります(要PCとの接続)。
まとめ
これまでの情報を踏まえて、各ソフトウェアの強み・弱みを一覧表にしてみました。
ソフトウェア | プログラミング入門 | IoT・STEAM | クラウドサービス | AI | テキストプログラミング | 情報量 |
---|---|---|---|---|---|---|
Scratch | ◎ | △ | △ | ○ | × | ○ |
MakeCode | ○ | ○ | △ | ○ | ◎ | ○ |
mBlock | ◎ | ○ | ○ | ○ | ○ | △ |
これは私も驚いたのですが、音声認識や画像認識のAI機能に関しては、各ソフトウェア対応してきているようで、日々進化しているようです(あるふ は Scratch と mBlock 以外はまだ未実施)。
今後も様々な機能が追加されていくことが見込まれます。
それでは、各ソフトウェア毎に簡単に特徴等をまとめていきましょう。
Scratch
- ビジュアルプログラミング(ブロックタイプ)言語を用いてスプライトを制御することができるプログラミングの超入門用のソフトウェア。
- micro:bitとの簡単な連携であれば容易に可能。
- 情報量豊富。
- デバイス間連携やクラウドサービスとの連携には工夫が必要で、難易度が上がる。
MakeCode
- ビジュアルプログラミング(ブロックタイプ)言語を用いて主にmicro:bitを制御することができる。
- micro:bit内蔵の各センサー等を制御できるのはもちろんのこと、様々な企業が提供しているサードパーティーのセンサーを拡張して制御することも可能。
- テキストプログラミング言語であるJavaScriptとPythonでの制御が可能であり、ブロックからの変換・編集もできる。
- Pythonでの制御は、既存ライブラリでのみが可能。
- Minecraftでの使用が可能。
- 情報量豊富。
mBlock
- Scratchベースのビジュアルプログラミング(ブロックタイプ)言語を用いており、基本的にScratchでできることはmBlockにおいても可能であるため、超入門用としても活用できる。
- ネットワーク接続が強みであり、デバイス間連携(双方向通信も可能)やクラウドサービスとの連携(要mBlockアカウントでのログイン)が比較的容易に可能。
- mBuildと言われる拡張センサー等の拡張が容易。
- テキストプログラミング言語であるPythonでの制御が可能であり、ブロックからPythonに変換したコードを参照することが可能(一部不可)。
- Pythonエディターを用いることで、サードパーティーのライブラリの使用が可能(要PCとの接続)。
- 情報量が少ない。
mBlockを推す理由
今回はあくまでソフトウェアに注目して比較してみました。
その中で、あるふ が mBlock を推す理由を最後に挙げさせていただきます。まさに「これだ!」と思った製品です。
- 超入門~高度な応用までに活用できる
- ネットワーク接続に強みがあり、特にクラウドサービスとの連携ができる
- オープンデータの読み込みや取得したデータの吐き出しが比較的容易に可能で、探究活動にまで利用できる
- 双方向通信が比較的容易に可能
- 拡張センサー等の拡張が容易で電子工作の手間が減る
- 高校情報の授業で電子工作が始まってしまうと、本来やりたいことができない(中学校技術や小学校理科であれば電子工作をカリキュラムに含めてしまうのはアリだとは思います)
- テキストプログラミング言語のライブラリを追加することができる
- AIやオープンデータ・ビッグデータといったキーワードはもちろんのこと、生徒がそれぞれの課題に対してプログラミングを用いて探究をしていくことになっていった場合、こうした拡張性があることが望ましい(ただし、ライブラリを追加した場合には要PCとの接続)
正直、まだすべてのブロックに対してPythonの変換コードが参照できなかったり、MakeCodeと違ってブロックとテキストプログラミング言語の変換・編集が一気にできなかったりと、痒い所に手が届いていない点はあります。
しかし、メーカー(makeblock社)の方から直接伺ったお話だと、開発も日々改善修正をしており、進化し続けているようなので、今後に期待しているといった点も含めて推しています。
あとは情報量が増えれば・・・。
コミュニティサイトは優秀そうなので、そちらが活発になっていけばさらに面白くなってくるのではないかと期待しています(残念ながら日本語はまだ非対応。。そちらも流行っていけばいつかは・・・)。
先日、CyberPiで制御するSTEAMロボット「mBot2」発売のニュースもありましたしぜひ流行っていって欲しい!
本サイトではCyberPiとmBlockについてプログラミング初学者でもわかるような動画を紹介しております。ぜひ良ければのぞいていってみてください。 CyberPi・mBlock
コメント