• 検索結果がありません。

2014 年 11 月 20 日 ET2014 スペシャルセッション C-2 mruby プログラム言語 Ruby による組込みソト開発 九州工業大学田中和明 軽量 Ruby フォーラム Ruby アソシエーション

N/A
N/A
Protected

Academic year: 2021

シェア "2014 年 11 月 20 日 ET2014 スペシャルセッション C-2 mruby プログラム言語 Ruby による組込みソト開発 九州工業大学田中和明 軽量 Ruby フォーラム Ruby アソシエーション"

Copied!
29
0
0

読み込み中.... (全文を見る)

全文

(1)

mruby

プログラム言語Rubyによる組込みソト開発

九州工業大学

田中 和明

2014年11月20日

ET2014 スペシャルセッション C-2

(2)

講演の内容

mruby概要紹介

九州工業大学, 田中 和明

mrubyデバッガ紹介

福岡CSK, 三牧 弘司

NPO法人 軽量Rubyフォーラムの紹介

NPO法人軽量Rubyフォーラム, 石井 宏昌

事例紹介: mrubyを使ったWebサーバの機能拡張

京都大学, 松本 亮介

(3)

自己紹介

田中 和明(たなか かずあき)

九州工業大学 情報工学部 機械情報工学科

(4)

研究室運営の悩み

組込みソフトウェアの開発環境の習得に

相当の時間がかかる

研究対象のデバイスごとに環境が異なる

新しいデバイスが登場して,昨年までの開発環境を

うまく動かせない

本当にやりたいのは,アルゴリズムの実装

デバイスに対する要求はそれほど高くない

(5)

こんな事ができると嬉しい

ハードを作ったので,動かしたい

I/Oを簡単に制御したい

(Arduinoもあるけどもう少し複雑なことをしたい)

ロボットを動かしたい

モータ制御が目的ではなく,

センサ取得〜アクチュエータ駆動の仕組みを作りたい

試行錯誤しながらシステムを開発したい

システムを設計したい

アルゴリズムを書きたい

(6)

組込みシステムの課題

組込みシステムはソフト+ハードで構成される

近年の高機能化・高付加価値化により,

ソフトウェアは複雑・大規模になっている

コストの問題

開発期間の問題

(7)

組み込みシステム開発のイメージ(1)

ソフトウェア+ハードウェア

開発者はソフト+ハードの両方を知っていること!

(例) エンジンコントローラの実装

エンジンのサイクルに同期した制御

厳密なタイミングによる制御

確かに,

ソフト+ハードを

熟知している

必要がある

(8)

組み込みシステム開発のイメージ(2)

ソフトウェアの領域が広がっている

(例) NC工作機械のUIを変更する

複雑な変更ではない

ライン全体を考慮するものではない

現状はこのようなソフトウェアでも相当なコストがかかる

(C言語で記述し,他の部分と密に結合する)

本当にやりたいのは一部分であるが,

システム全体の変更を伴う

多くは部分的な

開発(変更)で

十分である

(9)

組込みシステムの開発の

効率を高めたい

「エンジンコントローラの実装」

「NC工作機械のUI変更」

(10)

なぜRubyを使うのか?

可読性が高い

プログラムが書きやすい

プログラムが読みやすい

抽象化により,アルゴリズムが明確になる

プログラムの行数が少ない

不具合の埋め込みが少なくなる

(11)

ちょっとだけRubyのコード(1)

#include <stdio.h> int main(void) { int i; int n = 0;

for( i=1 ; i<=100 ; i++ ){ n = n + i; } printf("sum = %d\n", n); return 0; } n = 0 for i in 1..100 do n = n + i end puts "sum = #{n}" n = (1..100).inject(:+) puts "sum = #{n}"

(12)

ちょっとだけRubyのコード(2)

配列をソートして,値が大きい順に3つ出力する

def top3(ary) p ary.sort.reverse[0..2] end top3( [2,4,6,1,3,5] ) top3( [2.1, 4.2, 6.3, 1.4, 3.5, 5.6] )

top3( ["apple", "orange", "banana", "melon", "kiwi", "grape" ] )

(13)

参考

ISO/IEC 30170 の Introduction

JIS X 3017 の 序文

Ruby is an object-oriented scripting

language designed to be

developer-friendly, productive and intuitive.

Ruby言語は,開発者の利便性を高めることを最大の目的

として設計されており,言語仕様自体の簡潔さ及び処理

系実装の簡便さより,アプリケーション開発における開

発効率及び直感的な動作記述が優先されている.

(14)
(15)
(16)

Rubyを組込み機器で使いたい

しかし,

従来のRubyは多くのメモリが必要

Hello, world でも数メガ

OS,ファイルシステムが必要

RTOSでは動かすのも一苦労

ソースコード丸見え

(17)

mruby(軽量Ruby)

経済産業省

平成22年度 地域イノベーション創出研究開発事業

軽量Rubyを用いた組込みプラットフォームの研究・開発

福岡CSK,ネットワーク応用通信研究所,九州工業大学

東芝情報システム,福岡県

成果

– mruby (オープンソースとして公開) – mrubyの適用領域についての調査 – mrubyチップ化の検討(FPGAによる試作)

(18)

軽量Ruby 完成しました

「軽量Rubyを用いた組込みプラットフォームの研

究・開発」

事業計画書では,16MBで動作するソフトウェア

できたものは,400KBで動作した!

予想していたよりも,幅広く使えそう

オープンソースとして公開

(19)

mrubyが目指すもの

組込みソフトのうち,

簡単に変更できる(変更したい)部分に適用する

試作

カスタマイズ

ユーザインターフェース

通信関連

限られた資源で動作する

メモリ

さまざまな環境で動作する

(20)

Ruby/mrubyの仕組み

Rubyプログラム mrubyプログラム プログラムの解析・解釈 プログラムの実行 プログラムの解析・解釈 mrubyバイトコード プログラムの実行 すべて実行環境で 処理される 多くの資源が必要 開発環境 実行環境

(21)

mrubyのツール

mrubyプログラム

プログラムの解析・解釈

mrubyバイトコード

(22)

mrubyVM

mrubyVMが

コンパイル済みのバイトコードを逐次実行する

mrubyVM

ハードウェア

mrubyアプリケーション

(バイトコード)

ドライバなど

mrubyアプリケーション

(バイトコード)

mruby

コンパイラ

mrubyアプリケーション

(ソースコード)

(23)

mruby VMの特徴

さまざまな環境で動作する

Cコンパイラが動けば良い

→ 組込み環境のほとんどすべてで使える

機能の拡張が容易

→ ハードウェアに依存する機能を追加できる

(24)

mruby VM 拡張の例

mruby学習キット,ILC社(広島)

EAPL-Trainer mruby

mrubyVM (オープンソース) GUI部品 ドライバ液晶 マイコン用ドライバ ルネサス社 SAKURAボード

mrubyVMの拡張

mrubyによるマイコン開発が可能となる

ILC社が 持っている 技術 開発するmrubyアプリケーション

(25)

研究成果の一部(1)

led_red = 0 while true do lum = 0 while lum <= 255 do pwm led_red, lum delay adc() lum += 1 end lum = 0 while lum <= 255 do pwm led_red, 255-lum delay adc() lum += 1 end end

mrubyVM

ハードウェア

mrubyアプリケーション

(バイトコード)

ドライバなど

pwm

delay

adc

(26)

研究成果の一部(2)

start

loop do

trace

right

trace

left

trace

right

end

mrubyVM

ハードウェア

mrubyアプリケーション

(バイトコード)

ドライバなど

start

trace

right

left

(27)

ちょっと待て!?

mrubyVM

ハードウェア

mrubyアプリケーション

(バイトコード)

ドライバなど

mrubyアプリケーション

(バイトコード)

mruby

コンパイラ

mrubyアプリケーション

(ソースコード)

start

trace

right

left

コンパイルできるのか?

デバッグできるのか?

(28)

答え

コンパイルできるのか?

コンパイル時は,関数呼び出しの解決をしない

実行時に関数名で解決する

デバッグできるのか? 解1

デバッガ

デバッグできるのか? 解2

PC用のVMを作っておく

VMにデバイスと同じ関数を用意して,実行する

(29)

GET mruby !

NPO法人 軽量Rubyフォーラム から

GitHub から

http://forum.mruby.org/

http://forum.mruby.org/download/source/mruby-1.1.0.tar.gz

https://github.com/mruby-Forum/mruby

参照

関連したドキュメント

医薬保健学域 College of Medical,Pharmaceutical and Health Sciences 薬学類 薬学類6年生が卒業研究を発表!.

&amp; NIKKOL GROUP Cosmos Technical Center Co., 4 Research Institute

ポートフォリオ最適化問題の改良代理制約法による対話型解法 仲川 勇二 関西大学 * 伊佐田 百合子 関西学院大学 井垣 伸子

関東総合通信局 東京電機大学 工学部電気電子工学科 電気通信システム 昭和62年3月以降

土肥一雄は明治39年4月1日に生まれ 3) 、関西

 文学部では今年度から中国語学習会が 週2回、韓国朝鮮語学習会が週1回、文学

令和4年3月8日(火) 9:00 ~ 9:50 10:10 ~ 11:00 11:20 ~ 12:10 国  語 理  科 英  語 令和4年3月9日(水) 9:00 ~ 9:50 10:10 ~

九州大学工学部  学生会員 ○山下  健一  九州大学大学院   正会員  江崎  哲郎 九州大学大学院  正会員    三谷  泰浩  九州大学大学院