M5UnifiedとPicoRubyで楽しむM5シリーズ
by
Katsuhiko Kageyama
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
M5Unifiedと PicoRubyで楽しむ M5シリーズ
Slide 2
Slide 2 text
@kishima 組み込み系エンジニア プレイングマネージャ業 mruby好き 電子工作好き 2
Slide 3
Slide 3 text
2025の流行りはPicoRuby Ruby x マイコンが熱い
Slide 4
Slide 4 text
PicoRubyとESP32とM5Stack PicoRubyは元々、Raspberry Pi Pico がター ゲット @YuuuさんがESP32へ対応 ESP32を使ったM5Stackという 製品がある
Slide 5
Slide 5 text
我が家のM5シリーズ(の一部)
Slide 6
Slide 6 text
M5のなやみ ▸ きれいにまとまったデバイスでかわいい ▸ ふつうはC++で開発 ▸ M5のC++ライブラリを使えば、簡単に画面 描画などもできる ▸ PicoRubyだと自分で C++ライブラリを叩く mrbgemを実装必要!
Slide 7
Slide 7 text
M5Stack向けのライブラリをgem化しよう ● 標準ライブラリ(M5Unified/M5GFX) ○ 画面描画 ○ LED ○ ボタン ○ 電源 ○ IMU ○ スピーカー ○ マイク ○ etc https://docs.m5stack.com/ja/arduino/m5unified/helloworld
Slide 8
Slide 8 text
たくさんのメソッド 描画系(M5GFX)だけで100個以上! バインディングを書く必要あり void drawPixel ( int32_t x, int32_t y, const T& color) void drawCircle ( int32_t x, int32_t y, int32_t r, const T& color) … … … さすがに無理・・・
Slide 9
Slide 9 text
どうやって実装するか CだとFFIが使えるが・・・ ※FFI:Foreign Function Interface Cなどの関数を違う言語から直接呼ぶ仕組み マイコン環境で使うことが難しい・・・ 今回は、Claude Codeにやらせた
Slide 10
Slide 10 text
実装 1. 実装対象の関数をC++ヘッダからスクリプト で抽出 2. 抽出した結果をYAMLにまとめる 3. YAMLからmrubyバインディングのスケルト ン関数を生成 4. スケルトン関数を段階的に実装 作業量が多いので、そのままではAIでも対応できない ◆実装方針
Slide 11
Slide 11 text
中間生成物のYAML
Slide 12
Slide 12 text
現在の結果 描画系 99/180 メソッドを実装 - M5Unified Core: 20/20 (100%) ✅ - M5GFX Color: 12/12 (100%) ✅ - M5GFX Draw: 30/30 (100%) ✅ - M5GFX Fill: 3/13 (23%) - M5GFX Text: 9/31 (29%) - M5GFX Image: 2/13 (15%) - M5GFX Display: 9/29 (31%) - M5GFX Low-level: 4/18 (22%) - M5GFX Utility: 0/13 (0%) https://github.com/kishima/picoruby-m5unified/tree/main
Slide 13
Slide 13 text
できたので、色々動かしてみる 我が家のM5から以下を試す ● M5Stack ● M5StickC Plus2
Slide 14
Slide 14 text
こんな感じで
Slide 15
Slide 15 text
同じコードで動かせる
Slide 16
Slide 16 text
課題 AIですべて実装できたとしても、200を超えるメ ソッドを継続的にメンテするのは難しい・・・ Ruby-FFI的な仕組みが必要