Scratch ふうな Arduino プログラミングまとめ

(更新

MIT Scratch-like visual programming on Arduino (survey).

以前に、こんな記事を書かせていただきました。

今回は、前回に引き続き Scratch(スクラッチ)ふうなビジュアルプログラミング(ブロックプログラミング)環境のまとめです。

調べていくと、実に多くの方が似たような試みをされていることが分かりました。そこで、これらプロジェクトを紹介する上で、少し条件を絞り込んでみることにしました。

  • お子さんが利用することを前提としていること
  • 一般の Arduino 製品上で Scratch ふうのプログラミングができること(ある企業のハードウェア製品限定でないこと)
  • 無料であり、できたらソースコードが提供されていること

いつもの長い前書き(TL; DR)

もう一つ。なぜ多くのプロジェクトが試みられながら、業界標準の決定打的なものがないのか、考えてみました。私なりの理解としては、「Arduino 製品」上でのブロックプログラミングを実現する上で障壁となるのは、次のようなことではないかと思います。

  • 「Arduino 製品」と一口に言っても、ハードウェアが非常に多岐にわたること
    Arduino の名前を冠した、いわゆる標準製品だけでも、Arduino Uno、Arduino Zero、Arduino Micro、Arduino MKR など多数で、搭載している MCU も、AVR マイコンから SAMD21 マイコンなど、さまざまです。
  • Arduino ユーザーが利用しているシールド製品、センサ製品も多岐にわたること
    例えば、温度センサを I2C インターフェイスで接続したとします。多くの I2C センサがサードパーティの Arduino 用ライブラリでサポートされていますが、それらライブラリ全てにビジュアルプログラミング用のブロック、またその機能まで設計して提供するのは、至難の業です。

結局、どこかで妥協する必要があるため、これら Scratch ふうプログラミング環境の開発者は、自分が想定している利用シーンを限定し、ある程度絞り込むことになります。結果として、どんな利用シーンでも、どんな Arduino 製品でも、どんなシールド製品、センサ、アクチュエータ等にも対応したブロックプログラミング環境というものは無く、プロジェクトが多岐にわたってしまった、ということではないでしょうか。

それでもいくつか試してみました

まずはこちらから行きましょう。

MPY Blockly

ウェブサイトはこちらです。このプロジェクトでは、ハードウェアのターゲットを ESP32 に絞り、また、実際には Arduino ではなくて MicroPython ベースの設計になっています。ESP32 を搭載した多くのマイコンボードに対応し、ディスプレイやセンサ製品への対応も、かなり充実しています。

ま、MicroPython でもいいかな、と思ったので、以下にその他の特徴をまとめておきます。

  • 提供形態: 無償の PC アプリケーション
  • 対応 OS: Windows のみ
  • ソースコードの提供: 不明
  • 対応マイコンボード: 各種 ESP32

Ardublockly

いくつかのフォーク(派生プロジェクト)があるようですが、オリジナルはこちらのようです。以下、特徴です。

  • 提供形態: 無償の PC アプリケーション
  • 対応 OS: Windows, macOS, Linux
  • ソースコードの提供: あり(GitHub
  • 対応マイコンボード: Arduino IDE が標準サポートしているものの多く

この Ardublockly は実際に試してみました(バージョン 0.1.2)。macOS 版は、シリアルポートの選択ができないという問題で動きませんでしたが、Windows 版は動作しました。確認した Arduino IDE は 1.8.19 で、ボードは Arduino Uno です。注意点として、Arduino IDE の言語設定が英語(English)になっていないとダメなようです。

以下がフォークのプロジェクト例です。

BlocklyDuino

これも多くのフォークがあるようですが、オリジナルはこれだと思います。

  • 提供形態: ウェブアプリケーション + Python サーバー
  • 対応 OS: Windows, macOS, Linux
  • ソースコードの提供: あり(GitHub
  • 対応マイコンボード: Arduino IDE が標準サポートしているものの多く

Python サーバーを手元の PC で動作させておくと、Arduino IDE を背後で動かして、プログラムを自動的にボードに書き込むことができるようです(これは、Ardublockly に似ている)。

なお、Python サーバーによる自動書き込み機能を使わなくても、出力される Arduino スケッチコードをコピペして Arduino IDE で動作させる、という使い方もできます。これならば、Arduino IDE で対応のボードのほとんど(ESP32 など、非標準マイコンを含む)で動作するのではないかと思います。ある意味、非常に割り切ったシンプルな設計です。

フォークとしては、このようなものがあります。

  • NeilFraser/BlocklyDuino
  • makewitharduino/BlocklyDuino: これは日本人の方が改良なさっているもので、日本語(ひらがな版を含む)による操作が可能です。こちらに詳しい説明があります。
  • Blockly@rduino: こちらに詳しい説明があります。かなり凝った設計のようですが、Arduino Create Agent と呼ばれるエージェントをインストールしたり、ブラウザのプラグインをインストールしたりする必要があるようで、ちょっとハードルが高いかな、という印象です。

mBlock(バージョン 3 までのもの)

最後の紹介はこちらです。この mBlock は、上で紹介してきたものと少し異なり、Scratch 2.0 ベースとなっています。つまり、ActionScript、Adobe Flash ベースとなっており、現在はちょっと使いづらい状態です。

  • 提供形態: 無償の PC アプリケーション
  • 対応 OS: Windows, macOS, Linux, ウェブバージョン
  • ソースコードの提供: あり(GitHub
  • 対応マイコンボード: 不明

ちなみにこちらの mBlock はバージョン 5 から商用製品となっていて、Makeblock という企業が、ハードウェアとソフトウェアを合わせて、子供の教育ビジネスを展開しています。(たぶん、ソースコードの提供はないと思います。)

ま、ビジネスになるのは喜ばしいことだと思うのですが、一般利用者が手軽に触れるのは難しくなってしまったようで、個人的にはちょっと寂しいです。

今日はここまで。

後記(2022年11月20日)

また続きを書きました。Arduino プログラミング環境(Sketch)ではなく、JavaScript ベースのものと、MicroPython ベースのものです。いずれもしっかりしたツールで、お試し頂く価値があると思います。御参考ください。

お問い合わせはお気軽に!

お問い合わせを頂いた後、継続して営業活動をしたり、ニュースレター等をお送りしたりすることはございません。
御返答は 24時間以内(営業時間中)とさせて頂いております。必ず返信致しますが、時々アドレス誤りと思われる返信エラーがございます。返答が届かない場合、大変お手数ではございますが別のメールアドレスで督促頂けますと幸いです。