SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Downloaden Sie, um offline zu lesen
2018/7/3 M5Stack user meeting 2
@kishima
で始めるM5Stack
 &mrubyスクリプト開発
自己紹介
@kishimaといいます
メーカーで組み込み系の研究開発してます
最近趣味で電子工作はじめました
M5Stack:私の求めていたもの
ネットに繋がって、画が出せて、音も出る
 これをコンパクトに! それを待っていた!
自分で作るとたいへん・・・(楽しいけど)
今日はRuby(mruby/c)を使った、M5Stack
の開発環境の話をします
RubyのパパであるまつもとさんもM5Stack購入され
たようですね
開発環境はどんなの使ってますか?
・Arduino IDE
・PlatformIO
・ESP-IDF
・M5Clould
・その他
スクリプトで開発したい欲
● Rubyの勉強会などでよくWeb系の方ともお話す
る機会があります
● 電子工作的なものに興味持ってるけど・・・
○ 「はんだ付けできない」
○ 「C言語は触りたくない」
○ など
● こんな方にも触ってほしい。
● M5Stack with スクリプト言語はとてもよさそう
M5Stack(ESP32)で使える言語
● 標準だと、↓でしょうか?
○ C/C++(Arduino,ESP-IDF)
○ MicroPython(M5Cloud)
○ Lua(M5Cloud)
● ESP-IDFでビルドできて、ROMとRAMが足りれば
他の言語も動くはず
Pythonでたりるのでは?
確かに入門環境としては事足りてますよね
でも・・・
Rubyも使いたい!
理由:
好きだから
mruby、いけます
● ESP32用のポーティングがあります
○ https://github.com/mruby-esp32/mruby-esp32
mruby?
● Rubyを作ったまつもとさん(Matz)が手がけている
組み込み向けRuby
○ 「組み込み」には、ハードウェア組み込み、アプリケーション組
み込みを含みます
● Rubyよりもコンパクトに、組み込みのしやすさを考
慮して実装されている
● Rubyコード→コンパイル→バイトコード→VMで実
行、という形で動いて、VMを分離可能
mrubyでも大きすぎる?
● 400KB程度RAMがほしいらしい
○ HelloWorldさせるだけならもっと少なくても動きますが
● ESP32のRAMは520KBなので、ある程度長い
コード走らせるには、ちょっと余裕がなさすぎかもし
れません。
● どうしよう・・・
そんなあなたのために
mruby/cというのもあります
● 特徴
○ Mrubyのバイトコードを実行するコンパクトな処理系
■ コンパクトな分、使えない機能がある
● 例外、moduleなど
○ RAMの使用量が少ない
■ 速度よりもRAMを少なくすること重視
○ OSなしでもマルチタスク処理が可能
やりたいこと
● コードをPC上で打つと、M5StackのFlashへの書
き込みなしに、即実行できるようにする
○ PC上ではmirbというアプリがあります
● 面倒な書き込み待ちもなくてすぐ結果をみられ
る!
○ mruby&ESP32での実装例はありますが、今
回はこれを、mruby/cを使ってやってみます
ふつうのmirb
PC
mrib
mruby parser
mruby VM
Byte code
script
● 打ち込んだスクリプトは1命
令単位でパーサーでバイト
コードに変換
● 変換されたバイトコードを
mruby VM(バーチャルマシ
ン)で実行
● これを繰り返す
やってみたこと:
Remote-mribを作ってみた
PC
remote-mrib
M5Stack
mruby parser
mruby/c VM
extension
M5lib Arduino lib
Byte code
Byte code
via WiFi
script
● バイトコードをTCPでM5Stackへ転送
● M5Stackでは、M5Stack用のライブラリのAPIに対応させたmruby/cのVMを動
かして、受け取ったBytecodeを逐次実行
デモ動画
使用したサンプルコードはgithubにあげています。
PC側:
https://github.com/kishima/mruby/tree/rmirb
M5Stack側:
https://github.com/kishima/mrubyc_for_ESP32_Arduino
今後のこと
● まだ実用には程遠いので安定させる
● mruby/c VMからの応答を受け取れるようにする
● M5StackとESP32のAPIのバインディングの拡張
● WiFi経由の静的なバイトコード書き込み
● もっと使用メモリ減らす
● 技術書典5にmruby/c本出す

Weitere ähnliche Inhalte

Was ist angesagt?

20150204 イタンジプログラミング講座テキスト第一回
20150204 イタンジプログラミング講座テキスト第一回20150204 イタンジプログラミング講座テキスト第一回
20150204 イタンジプログラミング講座テキスト第一回Yusuke Yokozawa
 
20150227 イタンジプログラミング講座テキスト第4回
20150227 イタンジプログラミング講座テキスト第4回20150227 イタンジプログラミング講座テキスト第4回
20150227 イタンジプログラミング講座テキスト第4回Yusuke Yokozawa
 
20150212 イタンジプログラミング講座テキスト第2回
20150212 イタンジプログラミング講座テキスト第2回20150212 イタンジプログラミング講座テキスト第2回
20150212 イタンジプログラミング講座テキスト第2回Yusuke Yokozawa
 
20150717 これからプログラミングを勉強する人へ
20150717 これからプログラミングを勉強する人へ20150717 これからプログラミングを勉強する人へ
20150717 これからプログラミングを勉強する人へSEED310
 
ランダムフォレスト回帰
ランダムフォレスト回帰ランダムフォレスト回帰
ランダムフォレスト回帰隆介 小野
 
あらためてWorld Wide Web
あらためてWorld Wide WebあらためてWorld Wide Web
あらためてWorld Wide WebRyo Nagai
 
非同期系統の基礎
非同期系統の基礎非同期系統の基礎
非同期系統の基礎segayuu
 
プログラミング初心者の壁の越え方
プログラミング初心者の壁の越え方プログラミング初心者の壁の越え方
プログラミング初心者の壁の越え方Yuichi Kato
 
MCEdu2016 NeverClear LT
MCEdu2016 NeverClear LTMCEdu2016 NeverClear LT
MCEdu2016 NeverClear LTNever Clear
 
Blenderソースコードリーディング
BlenderソースコードリーディングBlenderソースコードリーディング
BlenderソースコードリーディングTetsuo Mitsuda
 

Was ist angesagt? (13)

20150204 イタンジプログラミング講座テキスト第一回
20150204 イタンジプログラミング講座テキスト第一回20150204 イタンジプログラミング講座テキスト第一回
20150204 イタンジプログラミング講座テキスト第一回
 
20150227 イタンジプログラミング講座テキスト第4回
20150227 イタンジプログラミング講座テキスト第4回20150227 イタンジプログラミング講座テキスト第4回
20150227 イタンジプログラミング講座テキスト第4回
 
20150212 イタンジプログラミング講座テキスト第2回
20150212 イタンジプログラミング講座テキスト第2回20150212 イタンジプログラミング講座テキスト第2回
20150212 イタンジプログラミング講座テキスト第2回
 
20150717 これからプログラミングを勉強する人へ
20150717 これからプログラミングを勉強する人へ20150717 これからプログラミングを勉強する人へ
20150717 これからプログラミングを勉強する人へ
 
ランダムフォレスト回帰
ランダムフォレスト回帰ランダムフォレスト回帰
ランダムフォレスト回帰
 
[2013_04]新入生用スライド
[2013_04]新入生用スライド[2013_04]新入生用スライド
[2013_04]新入生用スライド
 
あらためてWorld Wide Web
あらためてWorld Wide WebあらためてWorld Wide Web
あらためてWorld Wide Web
 
Programming school 02
Programming school 02Programming school 02
Programming school 02
 
非同期系統の基礎
非同期系統の基礎非同期系統の基礎
非同期系統の基礎
 
プログラミング初心者の壁の越え方
プログラミング初心者の壁の越え方プログラミング初心者の壁の越え方
プログラミング初心者の壁の越え方
 
Blenderとコード
BlenderとコードBlenderとコード
Blenderとコード
 
MCEdu2016 NeverClear LT
MCEdu2016 NeverClear LTMCEdu2016 NeverClear LT
MCEdu2016 NeverClear LT
 
Blenderソースコードリーディング
BlenderソースコードリーディングBlenderソースコードリーディング
Blenderソースコードリーディング
 

Ähnlich wie mruby/cで始めるM5Stack &mrubyスクリプト開発

RubyとRのおいしい関係
RubyとRのおいしい関係RubyとRのおいしい関係
RubyとRのおいしい関係sady_nitro
 
ネットワーク超入門
ネットワーク超入門ネットワーク超入門
ネットワーク超入門xyzplus_net
 
Nespのコード生成
Nespのコード生成Nespのコード生成
Nespのコード生成Kouji Matsui
 
みくみくまうすについて&Unity で使えるコーディングノウハウ
みくみくまうすについて&Unity で使えるコーディングノウハウみくみくまうすについて&Unity で使えるコーディングノウハウ
みくみくまうすについて&Unity で使えるコーディングノウハウtorisoup
 
小学生3年生から使えるRubyのビジュアルプログラミングエディタ「スモウルビー」と、それを活用した任意団体「Rubyプログラミング少年団」[第7回フクオカ...
小学生3年生から使えるRubyのビジュアルプログラミングエディタ「スモウルビー」と、それを活用した任意団体「Rubyプログラミング少年団」[第7回フクオカ...小学生3年生から使えるRubyのビジュアルプログラミングエディタ「スモウルビー」と、それを活用した任意団体「Rubyプログラミング少年団」[第7回フクオカ...
小学生3年生から使えるRubyのビジュアルプログラミングエディタ「スモウルビー」と、それを活用した任意団体「Rubyプログラミング少年団」[第7回フクオカ...宏治 高尾
 
Introduction to Quantum Programming Studio
Introduction to Quantum Programming StudioIntroduction to Quantum Programming Studio
Introduction to Quantum Programming StudioSatoyuki Tsukano
 
20130202 ドメイン駆動設計読書会at名古屋のお誘い
20130202 ドメイン駆動設計読書会at名古屋のお誘い20130202 ドメイン駆動設計読書会at名古屋のお誘い
20130202 ドメイン駆動設計読書会at名古屋のお誘いRyo RKTM
 
Tokyurubykaigi05
Tokyurubykaigi05Tokyurubykaigi05
Tokyurubykaigi05yamanekko
 
西区勉強会用スライド
西区勉強会用スライド西区勉強会用スライド
西区勉強会用スライドHiromi Kai
 
とある Perl Monger の働き方
とある Perl Monger の働き方とある Perl Monger の働き方
とある Perl Monger の働き方Yusuke Wada
 
業務系WebアプリケーションがStrutsから旅立つ日
業務系WebアプリケーションがStrutsから旅立つ日業務系WebアプリケーションがStrutsから旅立つ日
業務系WebアプリケーションがStrutsから旅立つ日Mitsuru Ogawa
 
Kaggle の Titanic チュートリアルに挑戦した話
Kaggle の Titanic チュートリアルに挑戦した話Kaggle の Titanic チュートリアルに挑戦した話
Kaggle の Titanic チュートリアルに挑戦した話y-uti
 
iMulvery -Mulveryの新機能のご紹介-
iMulvery -Mulveryの新機能のご紹介-iMulvery -Mulveryの新機能のご紹介-
iMulvery -Mulveryの新機能のご紹介-Daichi Teruya
 
ブラウザで動く準同型暗号
ブラウザで動く準同型暗号ブラウザで動く準同型暗号
ブラウザで動く準同型暗号MITSUNARI Shigeo
 
OSS奨励賞受賞プレゼン 活動紹介
OSS奨励賞受賞プレゼン 活動紹介OSS奨励賞受賞プレゼン 活動紹介
OSS奨励賞受賞プレゼン 活動紹介Hiromu Yakura
 
ET2016 小さなRubyボード GR-CITRUSの紹介
ET2016 小さなRubyボード GR-CITRUSの紹介ET2016 小さなRubyボード GR-CITRUSの紹介
ET2016 小さなRubyボード GR-CITRUSの紹介三七男 山本
 

Ähnlich wie mruby/cで始めるM5Stack &mrubyスクリプト開発 (20)

RubyとRのおいしい関係
RubyとRのおいしい関係RubyとRのおいしい関係
RubyとRのおいしい関係
 
ネットワーク超入門
ネットワーク超入門ネットワーク超入門
ネットワーク超入門
 
Electron を知る
Electron を知るElectron を知る
Electron を知る
 
Nespのコード生成
Nespのコード生成Nespのコード生成
Nespのコード生成
 
QtとBuildrootの紹介
QtとBuildrootの紹介QtとBuildrootの紹介
QtとBuildrootの紹介
 
みくみくまうすについて&Unity で使えるコーディングノウハウ
みくみくまうすについて&Unity で使えるコーディングノウハウみくみくまうすについて&Unity で使えるコーディングノウハウ
みくみくまうすについて&Unity で使えるコーディングノウハウ
 
小学生3年生から使えるRubyのビジュアルプログラミングエディタ「スモウルビー」と、それを活用した任意団体「Rubyプログラミング少年団」[第7回フクオカ...
小学生3年生から使えるRubyのビジュアルプログラミングエディタ「スモウルビー」と、それを活用した任意団体「Rubyプログラミング少年団」[第7回フクオカ...小学生3年生から使えるRubyのビジュアルプログラミングエディタ「スモウルビー」と、それを活用した任意団体「Rubyプログラミング少年団」[第7回フクオカ...
小学生3年生から使えるRubyのビジュアルプログラミングエディタ「スモウルビー」と、それを活用した任意団体「Rubyプログラミング少年団」[第7回フクオカ...
 
Introduction to Quantum Programming Studio
Introduction to Quantum Programming StudioIntroduction to Quantum Programming Studio
Introduction to Quantum Programming Studio
 
mruby for embedded systems
mruby for embedded systemsmruby for embedded systems
mruby for embedded systems
 
20130202 ドメイン駆動設計読書会at名古屋のお誘い
20130202 ドメイン駆動設計読書会at名古屋のお誘い20130202 ドメイン駆動設計読書会at名古屋のお誘い
20130202 ドメイン駆動設計読書会at名古屋のお誘い
 
Tokyurubykaigi05
Tokyurubykaigi05Tokyurubykaigi05
Tokyurubykaigi05
 
西区勉強会用スライド
西区勉強会用スライド西区勉強会用スライド
西区勉強会用スライド
 
とある Perl Monger の働き方
とある Perl Monger の働き方とある Perl Monger の働き方
とある Perl Monger の働き方
 
業務系WebアプリケーションがStrutsから旅立つ日
業務系WebアプリケーションがStrutsから旅立つ日業務系WebアプリケーションがStrutsから旅立つ日
業務系WebアプリケーションがStrutsから旅立つ日
 
Kaggle の Titanic チュートリアルに挑戦した話
Kaggle の Titanic チュートリアルに挑戦した話Kaggle の Titanic チュートリアルに挑戦した話
Kaggle の Titanic チュートリアルに挑戦した話
 
iMulvery -Mulveryの新機能のご紹介-
iMulvery -Mulveryの新機能のご紹介-iMulvery -Mulveryの新機能のご紹介-
iMulvery -Mulveryの新機能のご紹介-
 
ブラウザで動く準同型暗号
ブラウザで動く準同型暗号ブラウザで動く準同型暗号
ブラウザで動く準同型暗号
 
Net fringejp2016
Net fringejp2016Net fringejp2016
Net fringejp2016
 
OSS奨励賞受賞プレゼン 活動紹介
OSS奨励賞受賞プレゼン 活動紹介OSS奨励賞受賞プレゼン 活動紹介
OSS奨励賞受賞プレゼン 活動紹介
 
ET2016 小さなRubyボード GR-CITRUSの紹介
ET2016 小さなRubyボード GR-CITRUSの紹介ET2016 小さなRubyボード GR-CITRUSの紹介
ET2016 小さなRubyボード GR-CITRUSの紹介
 

Mehr von kishima7

Now is the time to create your own (m)Ruby computer
Now is the time to create your own (m)Ruby computerNow is the time to create your own (m)Ruby computer
Now is the time to create your own (m)Ruby computerkishima7
 
自分だけのデバイスを作るお話
自分だけのデバイスを作るお話自分だけのデバイスを作るお話
自分だけのデバイスを作るお話kishima7
 
オリジナルmrubyデバイス作り
オリジナルmrubyデバイス作りオリジナルmrubyデバイス作り
オリジナルmrubyデバイス作りkishima7
 
mruby VM を調べてみた話
mruby VM を調べてみた話mruby VM を調べてみた話
mruby VM を調べてみた話kishima7
 
Stairway to my Family mruby
Stairway to my Family mrubyStairway to my Family mruby
Stairway to my Family mrubykishima7
 
VMを改めて学んで見る
VMを改めて学んで見るVMを改めて学んで見る
VMを改めて学んで見るkishima7
 
Wio LTEとmruby/cでIoT
Wio LTEとmruby/cでIoTWio LTEとmruby/cでIoT
Wio LTEとmruby/cでIoTkishima7
 
Unityにmrubyを組み込んで抽選をしてみた
Unityにmrubyを組み込んで抽選をしてみたUnityにmrubyを組み込んで抽選をしてみた
Unityにmrubyを組み込んで抽選をしてみたkishima7
 
Introduction of mruby & Webruby script example
Introduction of mruby & Webruby script exampleIntroduction of mruby & Webruby script example
Introduction of mruby & Webruby script examplekishima7
 
Dalvik Source Code Reading
Dalvik Source Code ReadingDalvik Source Code Reading
Dalvik Source Code Readingkishima7
 
Ruby and Android
Ruby and AndroidRuby and Android
Ruby and Androidkishima7
 
Google TV hack
Google TV hackGoogle TV hack
Google TV hackkishima7
 
くみこみからひとことReturns
くみこみからひとことReturnsくみこみからひとことReturns
くみこみからひとことReturnskishima7
 
ネット家電じゃなくて?
ネット家電じゃなくて?ネット家電じゃなくて?
ネット家電じゃなくて?kishima7
 
くみこみからひとこと
くみこみからひとことくみこみからひとこと
くみこみからひとことkishima7
 

Mehr von kishima7 (15)

Now is the time to create your own (m)Ruby computer
Now is the time to create your own (m)Ruby computerNow is the time to create your own (m)Ruby computer
Now is the time to create your own (m)Ruby computer
 
自分だけのデバイスを作るお話
自分だけのデバイスを作るお話自分だけのデバイスを作るお話
自分だけのデバイスを作るお話
 
オリジナルmrubyデバイス作り
オリジナルmrubyデバイス作りオリジナルmrubyデバイス作り
オリジナルmrubyデバイス作り
 
mruby VM を調べてみた話
mruby VM を調べてみた話mruby VM を調べてみた話
mruby VM を調べてみた話
 
Stairway to my Family mruby
Stairway to my Family mrubyStairway to my Family mruby
Stairway to my Family mruby
 
VMを改めて学んで見る
VMを改めて学んで見るVMを改めて学んで見る
VMを改めて学んで見る
 
Wio LTEとmruby/cでIoT
Wio LTEとmruby/cでIoTWio LTEとmruby/cでIoT
Wio LTEとmruby/cでIoT
 
Unityにmrubyを組み込んで抽選をしてみた
Unityにmrubyを組み込んで抽選をしてみたUnityにmrubyを組み込んで抽選をしてみた
Unityにmrubyを組み込んで抽選をしてみた
 
Introduction of mruby & Webruby script example
Introduction of mruby & Webruby script exampleIntroduction of mruby & Webruby script example
Introduction of mruby & Webruby script example
 
Dalvik Source Code Reading
Dalvik Source Code ReadingDalvik Source Code Reading
Dalvik Source Code Reading
 
Ruby and Android
Ruby and AndroidRuby and Android
Ruby and Android
 
Google TV hack
Google TV hackGoogle TV hack
Google TV hack
 
くみこみからひとことReturns
くみこみからひとことReturnsくみこみからひとことReturns
くみこみからひとことReturns
 
ネット家電じゃなくて?
ネット家電じゃなくて?ネット家電じゃなくて?
ネット家電じゃなくて?
 
くみこみからひとこと
くみこみからひとことくみこみからひとこと
くみこみからひとこと
 

mruby/cで始めるM5Stack &mrubyスクリプト開発