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

Similar documents
軽量Rubyのご紹介と 軽量Rubyフォーラムのご案内

ルネサス半導体セミナースケジュール

C言語によるアルゴリズムとデータ構造

01-introduction.ppt

IntroductionForGR-PEACH.pptx

SWEST 17 mruby の現状と事例紹介 九州工業大学情報工学部田中和明 RubyAssociation 軽量 Ruby フォーラム

組込みシステムにおける UMLモデルカタログの実践研究

プログラミング基礎

2015 TRON Symposium セッション 組込み機器のための機能安全対応 TRON Safe Kernel TRON Safe Kernel の紹介 2015/12/10 株式会社日立超 LSIシステムズ製品ソリューション設計部トロンフォーラム TRON Safe Kernel WG 幹事

課題情報シート テーマ名 : 動画中継ラジコンカーの製作 担当指導員名 : 土山博剛実施年度 : 25 年度施設名 : 四国職業能力開発大学校課程名 : 専門課程訓練科名 : 電子情報技術科課題の区分 : 総合制作実習課題学生数 : 1 時間 : 12 単位 (216h) 課題制作 開発のポイント

TopSE並行システム はじめに

プログラミング実習I

C C UNIX C ( ) 4 1 HTML 1

目次 はじめに 4 概要 4 背景 4 対象 5 スケジュール 5 目標点 6 使用機材 6 第 1 章 C# 言語 7 C# 言語の歴史 7 基本構文 8 C 言語との違い 9 Java 言語との違い 10.Netフレームワーク 10 開発資料 10 第 2 章 Mono 11 Monoの歴史 1

2 概要 市場で不具合が発生にした時 修正箇所は正常に動作するようにしたけど将来のことを考えるとメンテナンス性を向上させたいと考えた リファクタリングを実施して改善しようと考えた レガシーコードなのでどこから手をつけて良いものかわからない メトリクスを使ってリファクタリング対象を自動抽出する仕組みを

24th Embarcadero Developer Camp

コンピュータ工学講義プリント (7 月 17 日 ) 今回の講義では フローチャートについて学ぶ フローチャートとはフローチャートは コンピュータプログラムの処理の流れを視覚的に表し 処理の全体像を把握しやすくするために書く図である 日本語では流れ図という 図 1 は ユーザーに 0 以上の整数 n

SpeC記述のC記述への変換 (SpecCによるソフトウェア記述の実装記述への変換)

Microsoft PowerPoint - ●SWIM_ _INET掲載用.pptx

Javaの作成の前に

製品開発の現場では 各種のセンサーや測定環境を利用したデータ解析が行われ シミュレーションや動作検証等に役立てられています しかし 日々収集されるデータ量は増加し 解析も複雑化しており データ解析の負荷は徐々に重くなっています 例えば自動車の車両計測データを解析する場合 取得したデータをそのまま解析

スライド 1

10-vm1.ppt

組込みLinuxシステムに関する調査研究

ハード・ソフト協調検証サービス


Microsoft Word - openmp-txt.doc

次に示す数値の並びを昇順にソートするものとする このソートでは配列の末尾側から操作を行っていく まず 末尾の数値 9 と 8 に着目する 昇順にソートするので この値を交換すると以下の数値の並びになる 次に末尾側から 2 番目と 3 番目の 1

Using VectorCAST/C++ with Test Driven Development

RL78開発環境移行ガイド R8C/M16C, H8S/H8SXからRL78への移行(統合開発環境編)(High-performance Embedded Workshop→CS+)

書式に示すように表示したい文字列をダブルクォーテーション (") の間に書けば良い ダブルクォーテーションで囲まれた文字列は 文字列リテラル と呼ばれる プログラム中では以下のように用いる プログラム例 1 printf(" 情報処理基礎 "); printf("c 言語の練習 "); printf

メディプロ1 Javaプログラミング補足資料.ppt

Microsoft PowerPoint ppt

Jude を DSL エディタとして使う -Jude API 活用法 年 11 月 14 日稚内北星学園大学東京サテライト校浅海智晴 本日のテーマ Why Jude API What Jude API How Jude API 1

Microsoft PowerPoint - 【最終提出版】 MATLAB_EXPO2014講演資料_ルネサス菅原.pptx

Microsoft PowerPoint - 計算機言語 第7回.ppt

利用者

Microsoft PowerPoint - 01_Vengineer.ppt

エンジニアリング・サービスから見たMBD導入の成功・失敗

5-3- 基統合開発環境に関する知識 1 独立行政法人情報処理推進機構

arduino プログラミング課題集 ( Ver /06/01 ) arduino と各種ボードを組み合わせ 制御するためのプログラミングを学 ぼう! 1 入出力ポートの設定と利用方法 (1) 制御( コントロール ) する とは 外部装置( ペリフェラル ) が必要とする信号をマイ

SimulinkによるReal-Time Test環境の構築

情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤

Microsoft PowerPoint pptx

PowerPoint プレゼンテーション

Arduino をドリトルから 制御する教材の試行 鈴木裕貴 1

演算増幅器

TFTP serverの実装

PowerPoint プレゼンテーション

Microsoft Word - Training10_プリプロセッサ.docx

memo

PNopenseminar_2011_開発stack

OS

slide5.pptx

Slide

TOPPERS活用アイデア・アプリケーション開発

PowerPoint プレゼンテーション

本研修について mruby 概要 mruby IoT フレームワーク Plato mruby ポーティング mruby ポーティング環境への Plato の適用 2

2

CSPの紹介

Microsoft PowerPoint - OS07.pptx

CodeRecorderでカバレッジ

第 1 章 : はじめに RogueWave Visualization for C++ の Views5.7 に付属している Views Studio を使い 簡単な GUI アプリケーションの開発手順を紹介します この文書では Windows 8 x64 上で Visual Studio2010

論文誌用MS-Wordテンプレートファイル

個人依存開発から組織的開発への移行事例 ~ 要求モデル定義と開発プロセスの形式化 による高生産性 / 高信頼性化 ~ 三菱電機メカトロニクスソフトウエア ( 株 ) 和歌山支所岩橋正実 1

V8.1新規機能紹介記事

White Paper 高速部分画像検索キット(FPGA アクセラレーション)

Windows Embedded Community Day 第 5 回 - IoT がもたらす新しい社会と変化 - ドライバ開発から Azure 接続まで - Windows Embedded Community Day 株式会社デバイスドライバーズ日高亜友

C#の基本

Windowsユーザでも 手軽に作れるiPhoneアプリ

改訂履歴 改訂日付 改訂内容 2014/11/01 初版発行 2017/01/16 Studuino web サイトリニューアルに伴う改訂 2017/04/14 Studuino web サイトリニューアルに伴うアクセス方法の説明変更 2018/01/22 Mac 版インストール手順変更に伴う改訂

Microsoft PowerPoint - ID005(R02).pptx

Microsoft PowerPoint - ruby_instruction.ppt

<4D F736F F F696E74202D E9197BF C A F B A834C C A5F C52E B8CDD8AB B83685D>

1 現コンフィギュレータの問題点 1.1 独自言語 TOPPERS カーネル開発者 ( 特に TOPPERS カーネルのポーティングを行う者 ) は 現コンフィギュレータが提供する tf を使用する必要がある しかし tf は TOPPERS の独自言語であり 初めて TOPPERS カーネルを開発

PowerPoint Presentation

新技術説明会 様式例

Microsoft PowerPoint - ca ppt [互換モード]

トレーサビリティとインパクト分析 2011 年 7 月 13 日 海谷治彦 1

Microsoft PowerPoint - A1-2_株式会社ネクスト_藤澤正通_S _005.pptx

DVIOUT

駅すぱあとWebサービス for Unityを使った 交通機関情報の活用 竹田龍介 株式会社ヴァル研究所 1

ブート ~OS が起動されるまで~

Presentation Title

Microsoft Word - RefApp7インストールガイド.doc

Microsoft Word - CygwinでPython.docx

Microsoft Word - toppers-contest-2014_NTB.doc

#include<math.h> 数学関係の関数群で sin() cos() tan() などの三角関数や累乗の pow() 平方根を求める sqrt() 対数 log() などがあります #include<string.h> 文字列を扱う関数群 コイツもまた後日に 4. 自作関数 実は 関数は自分

スキル領域 職種 : ソフトウェアデベロップメント スキル領域と SWD 経済産業省, 独立行政法人情報処理推進機構

PowerPoint プレゼンテーション

memo

8051 개발보드 메뉴얼

3 無線 / 有線接続で制御 メガローバー Ver2.0 は Wi-Fi / BLE / Bluetooth Classic の 3 種の無線通信と 有線の USB シリアル通信に対応しています 指定のコマンドを用いることで PC やタブレットなど 様々なデバイスからメガローバー Ver2.0 を制

論文番号 分 2-2 平成 24 年度全国情報技術教育研究会第 41 回全国大会 ( 新潟大会 ) Xbee を活用した無線通信の研究 期日平成 24 年 8 月 9 日 ( 木 )~10 日 ( 金 ) 場所長岡市シティホールプラザ アオーレ長岡 香川県立三豊工業高等学校 電子科 本行

PowerPoint プレゼンテーション

組込み用Linuxボード,BeagleBone Blackにおける RTミドルウェアの動作と開発支援ツール

講習会 Arduino

Microsoft PowerPoint RT講習会(送付用)_ [互換モード]

Infor 10 ERP Enterprise Overview

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdiu.h> #define InFile "data.txt" #define OutFile "surted.txt" #def

Transcription:

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

講演の内容 mruby 概要紹介 九州工業大学, 田中和明 mruby デバッガ紹介 福岡 CSK, 三牧弘司 NPO 法人軽量 Ruby フォーラムの紹介 NPO 法人軽量 Ruby フォーラム, 石井宏昌 事例紹介 : mruby を使った Web サーバの機能拡張 京都大学, 松本亮介

自己紹介 田中和明 ( たなかかずあき ) 九州工業大学情報工学部機械情報工学科 情報で機械を動かす教育 研究

研究室運営の悩み 組込みソフトウェアの開発環境の習得に相当の時間がかかる 研究対象のデバイスごとに環境が異なる 新しいデバイスが登場して, 昨年までの開発環境をうまく動かせない 本当にやりたいのは, アルゴリズムの実装 デバイスに対する要求はそれほど高くない

こんな事ができると嬉しい ハードを作ったので, 動かしたい I/O を簡単に制御したい (Arduino もあるけどもう少し複雑なことをしたい ) ロボットを動かしたい モータ制御が目的ではなく, センサ取得 アクチュエータ駆動の仕組みを作りたい 試行錯誤しながらシステムを開発したい システムを設計したい アルゴリズムを書きたい

組込みシステムの課題 組込みシステムはソフト + ハードで構成される 近年の高機能化 高付加価値化により, ソフトウェアは複雑 大規模になっている コストの問題 開発期間の問題

組み込みシステム開発のイメージ (1) ソフトウェア + ハードウェア 開発者はソフト + ハードの両方を知っていること! ( 例 ) エンジンコントローラの実装 エンジンのサイクルに同期した制御 厳密なタイミングによる制御 確かに, ソフト + ハードを熟知している必要がある

組み込みシステム開発のイメージ (2) ソフトウェアの領域が広がっている ( 例 ) NC 工作機械の UI を変更する 複雑な変更ではない ライン全体を考慮するものではない 現状はこのようなソフトウェアでも相当なコストがかかる (C 言語で記述し, 他の部分と密に結合する ) 本当にやりたいのは一部分であるが, システム全体の変更を伴う多くは部分的な開発 ( 変更 ) で十分である

組込みシステムの開発の効率を高めたい エンジンコントローラの実装 NC 工作機械の UI 変更 後者のソフトウェア開発の効率を高めたい

なぜ Ruby を使うのか? 可読性が高い プログラムが書きやすい プログラムが読みやすい 抽象化により, アルゴリズムが明確になる プログラムの行数が少ない 不具合の埋め込みが少なくなる

ちょっとだけ 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}"

ちょっとだけ 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" ] )

参考 ISO/IEC 30170 の Introduction Ruby is an object-oriented scripting language designed to be developerfriendly, productive and intuitive. JIS X 3017 の序文 Ruby 言語は, 開発者の利便性を高めることを最大の目的として設計されており, 言語仕様自体の簡潔さ及び処理系実装の簡便さより, アプリケーション開発における開発効率及び直感的な動作記述が優先されている.

Trends

Trends, growth

Ruby を組込み機器で使いたいしかし, 従来の Ruby は多くのメモリが必要 Hello, world でも数メガ OS, ファイルシステムが必要 RTOS では動かすのも一苦労 ソースコード丸見え

mruby( 軽量 Ruby) 経済産業省平成 22 年度地域イノベーション創出研究開発事業 軽量 Ruby を用いた組込みプラットフォームの研究 開発 福岡 CSK, ネットワーク応用通信研究所, 九州工業大学 東芝情報システム, 福岡県 成果 mruby ( オープンソースとして公開 ) mrubyの適用領域についての調査 mrubyチップ化の検討 (FPGAによる試作)

軽量 Ruby 完成しました 軽量 Ruby を用いた組込みプラットフォームの研究 開発 事業計画書では,16MB で動作するソフトウェア できたものは,400KB で動作した! 予想していたよりも, 幅広く使えそう オープンソースとして公開

mruby が目指すもの 組込みソフトのうち, 簡単に変更できる ( 変更したい ) 部分に適用する 試作 カスタマイズ ユーザインターフェース 通信関連 限られた資源で動作する メモリ さまざまな環境で動作する

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

mruby のツール mruby プログラム プログラムの解析 解釈 mruby コンパイラ mruby バイトコード プログラムの実行 mruby VM( バーチャルマシン )

mrubyvm mrubyvm がコンパイル済みのバイトコードを逐次実行する mruby アプリケーション ( ソースコード ) mruby コンパイラ mruby アプリケーション ( バイトコード ) 開発環境 mruby アプリケーション ( バイトコード ) mrubyvm ドライバなど ハードウェア ターゲットデバイス

mruby VM の特徴 さまざまな環境で動作する C コンパイラが動けば良い 組込み環境のほとんどすべてで使える 機能の拡張が容易 ハードウェアに依存する機能を追加できる

mruby VM 拡張の例 mruby 学習キット,ILC 社 ( 広島 ) 開発する mruby アプリケーション mrubyvm ( オープンソース ) mrubyvm の拡張 GUI 部品 液晶ドライバ マイコン用ドライバ ILC 社が持っている技術 ルネサス社 SAKURA ボード mruby によるマイコン開発が可能となる EAPL-Trainer mruby

研究成果の一部 (1) led_red = 0 while true do lum = 0 while lum <= 255 do pwm led_red, lum delay adc() lum += 1 end end lum = 0 while lum <= 255 do pwm led_red, 255-lum delay adc() lum += 1 end mruby アプリケーション ( バイトコード ) mrubyvm ドライバなど ハードウェア pwm delay adc

研究成果の一部 (2) start loop do trace right trace left trace right end mruby アプリケーション ( バイトコード ) mrubyvm ドライバなど ハードウェア start trace right left

ちょっと待て!? コンパイルできるのか? mruby アプリケーション ( ソースコード ) デバッグできるのか? mruby アプリケーション ( バイトコード ) mruby コンパイラ mruby アプリケーション ( バイトコード ) 開発環境 mrubyvm ドライバなどハードウェアターゲットデバイス start trace right left

答え コンパイルできるのか? コンパイル時は, 関数呼び出しの解決をしない 実行時に関数名で解決する デバッグできるのか? 解 1 デバッガ デバッグできるのか? 解 2 PC 用の VM を作っておく VM にデバイスと同じ関数を用意して, 実行する

GET mruby! NPO 法人軽量 Ruby フォーラムから http://forum.mruby.org/ http://forum.mruby.org/download/source/mruby-1.1.0.tar.gz GitHub から https://github.com/mruby-forum/mruby