mruby入門 ~組込みソフト開発を効率アップ~ · mruby入門...
Transcript of mruby入門 ~組込みソフト開発を効率アップ~ · mruby入門...
Rubyとmruby● Ruby
– オブジェクト志向プログラム言語ISO30170 / JIS X 3017
– Webアプリケーション開発では標準的な言語● mruby
– Rubyの仕様に従って,軽量化した言語– 実行時に必要なリソースを少なくする
質問 - 2● 組込みシステムの開発費内訳
– (1) (2) (3) に入るのは?
(1)
(2)
(1)(3)
システム開発費
その他共通費用
A :ハードウェア(電子系)B :ハードウェア(機構系)C :ソフトウェア
IPA 「組込みソフトウェア産業の現状と課題」より抜粋
Rubyが使われる理由● ソフトウェア開発がしやすい
– 開発者のためのプログラム言語である(まつもとゆきひろ氏)
● プログラムの可読性が高い– 自分のプログラム,他人のプログラムを
理解しやすい● 多くのライブラリが用意されている
質問 - 3Rubyのプログラム
● 次のプログラムの振る舞いを推測できますか?
ary = [1, 2.3, "abc", [1,2]]
for data in ary do p data*2end
◯ ×
mruby開発へ● Rubyの特徴(開発者に優しい)を
組込みソフト開発へ導入する
● 経済産業省地域イノベーション創出研究開発事業「軽量Rubyを用いた組込みプラットフォームの研究・開発」
● 2010年~2012年
mrubyのその後● コミュニティによる開発が継続
● NPO法人 軽量Rubyフォーラムmrubyのリリース,技術情報開発方針,ツール開発
http://www.mruby.org/
http://forum.mruby.org/
(参考)動的とは?
ary = [1, 2.3, "abc", [1,2]]
for data in ary do p data*2end
この「*2」の具体的な実装はどうする?実行される時まで,実行内容はわからない
意義あり!
(参考)動的とは?● 先の例は, C++の仮想関数でも実現できる● では以下のようなプログラムは?
def func(n) return n+1end
if rand(1..2)==1 then def func(n) return n*2 endend
p func(5)
頑張ればできると思うが...
gems● mrubyで利用できるライブラリ● mrubyVMの機能を追加できる● (例) socketを使いたいIIJが github で公開している gem を入れる次の1行を「build_config.rb」に追加する
conf.gem :github => 'iij/mruby-socket'
(OSのsocketシステムコールのwrapper)
質問 - 6● 最後に,私からの質問です.● もっとも期待するのはどれですか?
(1つだけ)A :開発環境
コンパイラや書き込みツールなどB :評価ボードの入手
実際に試してみたいC :技術情報や事例紹介
検証したい,情報が必要D :コンサルティング
自社の製品・サービスに適用できるか?