====================================================================== セッションs2-c テーマ:mrubyによる組込み開発のメリット 講師:田中 和明 氏(九州工業大学,軽量Rubyフォーラム 理事) 日時:2013/8/23 9:00〜10:20 参加人数:43名(終了時) ====================================================================== ○概要 ・アジェンダ ○自己紹介 ○mrubyの概要 ○デモ ○まとめ ○質疑応答 ・発表者自己紹介 九州工業大学情報工学部,軽量Rubyフォーラム所属 ・これまでは組込みシステムはハードウェアのアクセスなどの理由からC/C++が よく使われている(約8割) 少数派でJava,Ruby,COBOLなど これは本当に最適なのか? そこでRubyを軽量化し組み込み開発で利用できるように ・C/C++とRubyとmrubyの比較 C/C++は実行速度が速く,少ないメモリで動作できるが,開発コストが 大きく,検証が難しい Rubyは実行速度が遅く,多くのメモリを必要とするが,開発効率が高い 開発しやすさからwebサービス(twitterや楽天)によく使われる Rubyではメモリは自動で管理 −手間はかからないが,実行時にGC(ガーベジコレクション) が行われるためRubyプログラムの実行が一時停止する mrubyは軽量化することで,少ないメモリで動作しながら開発効率が高く, コードも読みやすいので検証しやすい このようにmrubyは組込みシステムで要求される制約を満たす ※組込み開発で要求される制約 1. 動作速度…リアルタイム性が重要(高速に動作することよりも重要) 2. 実行時に使用するメモリ…実行時に使用可能なメモリが少ない, Rubyは性質上C/C++より多くのメモリが必要 ・mrubyの動作 プログラムの解析を行い,実行要素(命令単位)に分割し,RiteBinaryを生成する このRiteBinaryより実行するためVMがあればどのような環境でも実行できる 製品がなくてもソフトウェアテストが可能でハードウェア開発と並列に 開発できる開発効率の向上につながる バイトコードはデバイスに非依存なのでクロス開発が不要になる ・教育用教材 1.MobiRuby…軽量Rubyによるモバイルアプリケーション開発ツール 2.enzi(仮称)…福岡CSKが開発したmRubyボード,http://enzi.cc/参照 ・今後の展望 特定非営利活動法人「軽量Rubyフォーラム」 −成果物(軽量Ruby)の管理,ライブラリ等の開発支援, 著作権管理,普及活動 mrubyのチップ化 関数呼び出しがボトルネックとなっている (オブジェクト指向特有,関数を様々なスコープで探す問題) ここをFPGAを使ってアクセラレートすることで高速化 フィボナッチ数列で8%,文字列処理で20%の性能向上 Rubyのプログラムの変更は不要 ○発表・展示状況 ・mrubyのデモ(それぞれ実際にファイルの中身を表示,実行) 1オーバライドのプログラムの実行 2ラムダ関数(Cのポインタに近い) 3fiber(コルーチン) ・mrbgems Cの関数をmrubyに追加 ・構成ファイルの表示 著作権の変更も可能会社で使うときにも便利 クロスコンパイルなどに利用 ・実用例 ルータのスクリプトをRubyで ○質疑応答 <質問者1> rubyはインフラが充実しているが,mrubyでどれぐらい充実しているか? 組込みツールはどれぐらいあるか? <回答> A:Ethernetなど80程度のライブラリをネット上に用意することで充実 させている <質問者2> 初心者にもやさしいプロジェクトは今後あるのか? <回答> enzi(仮称)が該当 オンラインでチュートリアルを用意(http://enzi.cc) <質問者2> 軽量rubyフォーラムでの今後の課題は? <回答> 大きく2つあり,デバッガの実装とバージョンの問題 ・デバッガの実装 開発コストが大きくなかなか実装できない ・バージョンの問題 更新が早すぎて統一しづらい(早いときは数時間ごと) リモートで確認するときバージョンの違いでエラーすることもある 出版依頼が来ているが,バージョンを固定できずに執筆できない 以上。