💡
【M5coreS3】開発環境の検討
結論
今のところplatformioでC/C++を使って開発するのが最良という結論に至っています。
画面の作成には、UIFlowを使ってレイアウト、X座標や幅などの数値を確認するといった補助的な使い方をしています。
個人的に開発環境に必要な機能
must機能
- コード補完
- パッケージ管理
- バージョン管理
want機能
- UIをリアルタイムに確認しながら編集できること
- 書き込みや実行が容易であること
一般的にC/C++はメモリ管理ができるとか速度を厳密に制御できるから優れていると主張する人がいますが、今まで開発してきてそれらが問題になったことはないです。(というか中途半端にいじるくらいなら、micropythonが裏で良しなに処理してくれたほうが良いです)
理論や理屈よりも製作を重視する私としては、早く快適に開発できるmicropythonが好みです。
Micropython系
Micropython CLI
- コード補完、パッケージ管理、REPLといった個人的に必要な機能が全て使える。
(なので、ESP32やラズパイpicoでは、基本micropython-cliで開発しています。) - ただしコード補完はstubが利用できる前提。M5については適当なstubがなく、コード補完の恩恵に預かれない(5年以上前に作成されたよくわからないstubはありましたが、コード補完は機能しませんでした)
- 致命的なのは、M5stackへの書き込みができないこと。これではどうしようもありません。
Thonny
- 初心者のためのエディタであり、Lチカやサーボモーターをちょこちょこ動かすようなプログラムを書くのが精一杯。
- コード補完が使えないのが致命的
- M5stackの開発環境においては、選択肢にも入れませんでした
UIFlow
- スクラッチのようなブロックを並べてプログラムを作成するツール
- ブロックプログラムは可読性が非常に悪く編集もしづらいので、サイボウズみたいなノーコード系企業に洗脳されている日本人でもない限り好きこのんで使う人はいないでしょう。
(なんとか頑張って理解しようとしましたが、1時間で音を上げました) - 裏ではmicropythonが動いていて、一応コードエディタで編集はできますが、コード補完もなく使えたものではありません。
C/C++系
Arduino IDE(v2)
- 悪評の多いv1から一新され、めちゃくちゃ見やすく使いやすくなりました。コード補完ができるようになったのが嬉しい。
- インタプリタ型のmicropythonではREPLが使えますが、C/C++系ではどうしても動かす前にコンパイルする必要があります。
- 正確に言うとArduino IDEはc++ではなくarduino言語で書きます(なのでファイルは.cppではなく.inoです)。
そのためビルド時にはc++に変換してコンパイルするのですが、これが数十秒ほどかかります。
これはさすがにかかりすぎ。動作確認をしながら開発するのに、いちいち数十秒も待ってられません。
platformio
- Arduino IDEのv1がクソだったため、platformioを使って開発していた人も多いのでは?
- コード補完、パッケージ管理、バージョン管理といった必要機能は全て使える。
(M5coreS3のコード補完が効くのが嬉しい!) - c++で書くため、書く量は増えます(.hと.cppを両方書くのは正直かなり面倒です・・・)。
- コンパイル&書き込みは10秒程度。micropythonのREPLには及びませんが、前述のArduino IDEと比べるとまだマシ。
- UIを確認しながら作成できないのは難ですが、そこはUIFlowを使いつつ作成しています
- M5stack core s3の場合、書き込みのたびにブートボタンを長押しする必要があります。面倒なので解決したいですが、有効な方法が見つかっていません
その他
Node-red
- フローコーディングと言うのかな。Difyなどと同じような処理の流れを書いていくツール
- 使えたら便利なんでしょうが、環境依存性が非常に大きいです。xs-devを設定していく途中で、PCのpython環境をぶっ壊してくれたこともあり、あまり良い印象は持っていません
(やるならラズパイのようないつでもリセットできる環境でセットアップするのが良さそう) - 今回はnode-redのバージョンが4になったのをきっかけに再チャレンジしてみましたが、結局私のMacbook air(m2コア)ではnode-red mcuの書き込みでエラーが出て進みませんでした。
まとめ
というわけで、記述量を減らしたい主義の私でも、今のところはM5stackはc++で開発するのが良いと思っています。
次回はM5stackで複数画面を操作できるようなアプリケーションを作成します。
Discussion