2021年6月7日月曜日

Blocklyをカスタマイズ

 おじさん、microbitを買ってみました。

プログラムをどうやってコンパイルするのかと思ったら、ブラウザでなんか適当にブロックをおいてダウンロードするだけ。

どうやってmicrobitにプログラムを書き込むのかと思ったら、USBメモリみたいに見えるフォルダにダウンロードしたファイルを置くだけでした。


このボードだけあれば、ほかに何にインストールしなくても動くようになってるのね。

さすがイギリス製、イタリア製のArduinoと違い本当によくできている。

LEDが25個あるから文字も表示できるのでデバッグも簡単だし。



ScratchとかMicrobitとかいろんな会社からいろんなロボットキットが発売されているので、こういうような教材をおじさんが個人でも作れるのか調べてみました。



UIはBlocklyというJSのライブラリで作れるのね。

https://developers.google.com/blockly



BlocklyのライブラリがJavaScriptやLUAのコードを生成してくれるらしい。

LUAのインタープリタはC言語でマイコンで実行できるので、それをマイコンに転送して実行すればよいのね。

なんだ意外と簡単じゃん。


でも、おじさん、C/C++じゃないと嫌なんだよね。

どうやったら、C/C++出力ができるのか考えてみました。



JavaScriptの出力で文字列とかのシングルコート「'」を「"」で出力すれば、C++言語とほぼ同じなので、あとvarをintに置換すればコンパイラでコンパイルしてラズパイとかでもBlocklyを動かせるんじゃない?


ということで、blocklyのJSの'\''の部分を'\"'に置換して、C++を出力するblocklyを作ってみました。

なんかソースコードに、「Googleのコーディング規約で文字列はシングルクォートじゃないとだめだからシングルクォート」と書いてある。

おじさん的にはダブルクォートにしてくれるほうがいいと思うんだけどなぁ。

まぁその部分を3か所修正するだけ。できた!


blocklyのカスタマイズって楽しいね。

こうやってblocklyを使ってロボット教材を作れるのね。