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

33
「mruby/c」の利用事例 Shimane IT Open-innovation Center 20171117しまねソフト研究開発センター ITOC (公益財団法人しまね産業振興財団) 専門研究員 裕人

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

「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