「mruby/c」の利用事例
Shimane IT Open-innovation Center
2017年11月17日
しまねソフト研究開発センター ITOC
(公益財団法人しまね産業振興財団)
専門研究員 東 裕人
しまねソフト研究開発センター(ITOC)
Shimane IT Open-Innovation Center
Shimane IT Open-innovation Center
ITを活用する企業の
支援と研究開発の
拠点
島根県・しまねソフト研究開発センターは
IoT・AIを活用したサービスの創出に向けて
取り組んでいます
Shimane IT Open-innovation Center
島根発の製品・
サービスの創出へ
教育機
関 国・自治
体
研究機
関
しまねソフト研
究開発センター
島根県
組織体制・顧問
Shimane IT Open-innovation Center
センター長
((公財)しまね産業振興財団
副理事長)
顧問
研究プロジェクト
チーム
技術AD
事務局 研究員
須藤 修
(東京大学大学院情報学環 教授)
森 正弥
(楽天株式会社執行役員 楽天技術研究所代表)
正村 勉
(日本郵政株式会社 執行役)
塚本 昌彦
(神戸大学大学院工学研究科 教授)
佐藤 一郎
(国立情報学研究所 副所長 アーキテクチャ科学研究系
教授)
鹿島 久嗣
(京都大学大学院情報学研究科 教授)
まつもとゆきひろ
(一般財団法人Rubyアソシエーション理事長)
経済産業省商務情報政策局
情報産業課
自己紹介
しまねソフト研究開発センター ITOC
専門研究員 東 裕人(ひがしひろひと)
1992 年、県内大手製造業に就職。2004年、IT企業に転職
2015年ITOC開所時より現職
組込 み系のハード、ソフトウェア、およびネットワークについての
経験
過去 、Rubyを利用した「組み込み向けアプリケーションフレーム
ワーク Alone」の研究開発に取り組む
その 改良版が評価され、第7回フクオカRuby大賞(2015年3月)で
は優秀賞を受賞
Shimane IT Open-innovation Center
内容
1. なぜ組込にmruby, mruby/cを
使うのか
2. 適用性の高い分野
3. 採用事例
4. mruby/cの利用方法
Shimane IT Open-innovation Center
Shimane IT Open-innovation Center
なぜ、組込にmruby, mruby/cを使うのか
昔 現在
アセンブラ(機械語) アセンブラ(機械語)
C言語
MPU MPU
マイコンが 提供するレジスタ・メモリモ
デルを、人が直接操作していた
開発効率 が悪い
構造化 プログラミングが可能になった
開発効率 が向上した
レジスタモデルが 隠蔽された
メモリモデルはポインタとして 残った
Shimane IT Open-innovation Center
なぜ、組込にmruby, mruby/cを使うのか
現在 未来
アセンブラ(機械語) アセンブラ(機械語)
C言語
MPU MPU
構造化 プログラミングが可能になった
開発効率 が向上した
レジスタモデルが 隠蔽された
メモリモデルはポインタとして 残った
 オブジェクト指向プログラミングが可能に
 開発効率がさらに向上
 メモリモデルも隠蔽
C言語
高級言語 (mruby?)
Shimane IT Open-innovation Center
Cレイヤーの上段には、C++がくるはずだった
Shimane IT Open-innovation Center
Cレイヤーの上段には、C++がくるはずだった
C++?
Shimane IT Open-innovation Center
なぜ、組込にmruby, mruby/cを使うのか
C、C++は罠(できるけどやってはいけないこと)が多い
char *format_value( int n, double v )
{
char buf[100];
sprintf( buf, "%d: %5.2f¥n", n, v );
return buf;
}
int main()
{
int x = 1;
printf( "%d, %d¥n", x++, x++ );
return EXIT_SUCCESS;
}
なぜ、組込にmruby, mruby/cを使うのか
C言語
基本 応用(実用)
© Shimane IT Open Innovation Center
なぜ、組込にmruby, mruby/cを使うのか
C++
基本 応用(実用)
© Shimane IT Open Innovation Center
なぜ、組込にmruby, mruby/cを使うのか
C++には言語仕様として
テンプレート(STL)が
含まれる
© Shimane IT Open Innovation Center
Shimane IT Open-innovation Center
なぜ高級言語を使いたいのか
オブジェクト指向、デザインパターン等、より高度な概念を利用して
開発効率を向上させたい
なぜC++ではイマイチなのか
教育コストがやけに高い
C言語に比べて、罠が減るどころか増えている
なぜmruby, mruby/cを使うのか
Rubyが好きだから
(上記の問題をイイ感じに解決できそうだから)
mruby, mruby/c
すべての• 組み込みプログラムの置き換えは
想定していない。
極度 にプログラムサイズを小さくする場合
厳密 なリアルタイム性能
しかしながら• 、これらは全体の2割以下
それ• 以外は、高級言語(mruby)で!
Shimane IT Open-innovation Center
捨てないで、もったいない
• 今までのC言語の資産は捨てる(書き換え
る)必要はありません。
モノとモノ• 、モノとネットワークを繋ぐ
glueとしてmrubyを使う。
• 今までのC言語レイヤーの上位レイヤーとし
てmrubyを使う。
Shimane IT Open-innovation Center
適用性の高い分野
センサーデバイス IoT
 小さいサイズのマイコンを使いたい
 繰り返し、試作、検証を必要とする
センサーノードで 、いくらかの処理が必要
しきい 値判定
特定 パターン判定
LPF
Shimane IT Open-innovation Center
製品カスタマイズ
製品• の利用ユーザーごとに動作をカスタマイズ
ベースとなる機能 ⇒ C言語
カスタマイズ部 ⇒ mruby, mruby/c
動作• パラメータではなく、スクリプトによる挙動の
変更
柔軟性• が飛躍的に向上
Shimane IT Open-innovation Center
複雑な処理
複数• のセンサ、アクチュエータによる複雑な制御
イマドキのリッチなユーザインタフェース•
PLC• (ラダー言語)の置き換え
Shimane IT Open-innovation Center
mruby/c 採用事例
河川水位・雨量観測システム 実証実験
株式会社 藤井基礎設計事務所 様
Shimane IT Open-innovation Center
河川水位・雨量観測システム
Shimane IT Open-innovation Center
河川水位・雨量観測システム
センサーノード
Shimane IT Open-innovation Center
河川水位・雨量観測システム
センサーノード
Shimane IT Open-innovation Center
河川水位・雨量観測システム
雨量計
Shimane IT Open-innovation Center
河川水位・雨量観測システム
Shimane IT Open-innovation Center
河川水位・雨量観測システム
結果表示
Shimane IT Open-innovation Center
河川水位・雨量観測システム
気温
気圧
Shimane IT Open-innovation Center
河川水位・雨量観測システム
電池電圧
Shimane IT Open-innovation Center
利用方法
ソースコードを• 、Githubで公開(BSD License)
https://github.com/mrubyc/mrubyc
Version• 1.1 RC1のリリースを、10月24日実施
正式• リリースを今月末予定
Shimane IT Open-innovation Center
利用方法1 mrubyc_ide を使う
Shimane IT Open-innovation Center
PC上でIDEを動かす
ターゲットマイコンには、対応するファームウェアを書き込んでおく
ソース編集からコンパイル、書き込みまで一連の流れをサポート
利用方法2 C言語と混在
Shimane IT Open-innovation Center
mrbcコンパイラでコンパイル済み中間コードを生成
既存のC言語プログラム
提供するVM
結合して書き込み
まとめ
• 組み込みにも高級言語のチカラを!
• C言語の世界よりも広いパラダイムを知ろう
• mruby, mruby/c は、そのための良い友人
• Happy Hacking!
Shimane IT Open-innovation Center

ET2017資料: mruby/cの利用事例