はじめに
日本語でModdableを解説している技術書である実践Moddableが発売されてから4年が経過しようとしています。
内容としては概ね現在読んでも問題が内容ではありませんが、現在までのModdableはアップデートし続けおり、本記事ではそれに伴う補足について記載していきます。
これから実践Moddableを読んでModdableでの開発を始めようとする方の参考になれば幸いです。
発売当時から現在までのModdableのアップデート内容全般はボリュームが多くなりすぎるため、実践Moddableで取り扱う項目をベースに触れていくことはご了承ください。
発売当時はどんな時
ベースとして紹介されているコミットは79b50f5です。その時点でのコミット数は2632です(現時点では8100コミット)
差異については以降で触れていきます
また、デバイスとしては本文中にも触れられてますが、M5stack core2が発売される少し前ごろで、ESP32で対応しているデバイスはM5stack、M5stick-cなど10種類程度です。
1. Moddable 概説
- TC53が正式に勧告され、Ecma-419に。仕様は以下で公開されています
- 情報源として、2024年4月に日本語翻訳プロジェクトが開始され、現在も翻訳作業は進んでいます
2. Moddableをはじめよう
-
環境構築手順は、Moddableのリポジトリから最新のものを参照しましょう
-
xs-devというModdableおよびESP-IDFなどのツールチェインまで自動的にセットアップするCLIツールが誕生したので、それを使えば環境構築はすぐに完了するようになりました
-
mcconfig
実行時にenv ESPBAUD=1500000 DEBUGGER_SPEED=1500000
を指定していますが、これらは各デバイスごとのmanifest.json
で指定されるようなったため付与は不要になります- 例)M5stick-cのmanifest.json
3. サンプルで理解するModdable
- 3.2でM5Stackのディスプレイ色反転問題の処置方法がありますが、これは自動的に判別して正しい色となるように修正されているため、現在では起きない問題です
- 3.2末の起動音鳴らさないについては、
manifest.json
で制御できるようになっています。config.startupSound
を空文字にしましょう- core2の起動時のバイブレーションも同様に
config.startupVibration
を0
にすると無効になります
- core2の起動時のバイブレーションも同様に
- 3.6、3.7でドライバーを実装していますが、最近ではEcma-419準拠で実装することが多いです
- 3.8、3.9のネットワークス関連機能もEcma-419のものが使えますが、特にHttpリクエストでは
fetch
が使えるようになっています
付録A
- JavaScriptで開発できるIotプラットフォームでは、DeviceScriptやEdison.jsが誕生しています。私はどちらも触ったことがないですが、認識としては遠隔操作方式に該当します
付録B
- npmを使った外部パッケージの追加は、mcpackという新しく追加されたコマンドを使うとできるようになります
- とは言えAPI互換性の問題やコードサイズやメモリ使用量といった課題があることには変わらずです
- Moddableに特化した外部パッケージをnpm経由で追加することもできますが、現時点でそういったモジュールを開発している事例はほとんど見たことがありません
- また、外部モジュールを利用する仕組みとしては、マニフェストファイルに対象gitリポジトリのURLとマニフェストファイルパスを指定する方法も追加されています
おわりに
出版から今までの大きなトピックとしては、著者であるししかわさんが手のひらサイズロボットのスタックチャンの開発が始まります。TypeScriptメインでの実装やModdableの機能をふんだんに盛り込んだソフト構成となっており、スタックチャン駆動でModdableへコントリビューションすることもしばしば。一方で、スタックチャンからModdableに入門したもののキャッチアップする事項が多いことも課題となっており、そこで、アールティ版スタックチャンで始めるModdable入門という駆け足気味の入門記事を書いたりもしましたので、もし興味があればご参照ください。