M5UnifiedとPicoRubyで楽しむM5シリーズ
by
Katsuhiko Kageyama
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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的な仕組みが必要