SlideShare a Scribd company logo
軽量Ruby『mruby』について


              第3回 松本勉強会
        ファーストサーバ ネットワークG
                   津崎 善晴
mruby とは?
■開発
  Rubyの生みの親であるまつもとゆきひろ氏が中心となって開発(国産)
■特徴
  Embeddable Rubyの略
  RiteVM : Ruby Lightweight VM
      2010年度の経済産業省の地域イノベーション創出事業で開発
  小規模なRuby言語処理系
  機能はほぼRuby標準規格を満たす最小限
  実装はLuaを意識
■ターゲット
  ゲームの組み込みスクリプト
  デジタル家電のソフトウェア開発
  組み込み機器やロボットの非リアルタイム制御
■githubで公開中
  (URL) https://github.com/mruby/mruby
コンパイラ       と   インタプリタ
■コンパイラ(Compiler)とは
  マシン語のプログラムに一括変換してから実行
  (利点)実行速度が速い、単独で動作する
  (欠点)中身がわからない、変更が容易でない
  (主な言語)C、C++等
■インタプリタ(Interpreter)とは
  実行可能なプログラムに変換しながら実行
  (利点)人間にわかりやすく記述できる、変更が容易である
  (欠点)実行速度が遅い、個別にインタプリタシステムが必要である
  (主な言語)Ruby、Perl、PHP、Python等
■JITコンパイラ(Just-In-Time Compiler)とは
  実行時にコードのコンパイルを行い実行速度の向上を図る
  (利点)プラットフォームに依存しない形式で配布、コンパイラ同等の速度
  (欠点)実行時に変換分の時間が必要である、メモリ使用量が大きい
  (主な言語)JavaScript、Lua等
mruby と Ruby の違い
■mruby
  最初からRiteVM
  行数 : 約9万行(ヘッダ含む) ... 4/20時点




  移植性が高くあらゆるプラットフォームで動作
  組み込みに特化


■Ruby
  1.8までインタプリタ方式、1.9からRiteVM
  行数 : 約17万行(拡張ライブラリ等含めず)
  Unix-like/POSIX互換プラットフォーム上で動作
サンプル(Cからmruby実行)
#include <stdlib.h>
#include <stdio.h>

/* Include the mruby header */
#include <mruby.h>
#include <mruby/proc.h>
#include <mruby/data.h>
// to be replaced by #include <mruby/compile.h>
#include <mruby/compile.h>

int main(void)
{
  struct mrb_parser_state *p;
  mrb_state *mrb = mrb_open();               ←mrubyの初期化
  char code[] = "p 'hello world!'";          ←実行するコード記述
  printf("Executing Ruby code from C!n");

    p = mrb_parse_string(mrb, code);       ←コードから構文木作成
    int n;
    n = mrb_generate_code(mrb, p->tree);   ←コード生成
    mrb_run(mrb, mrb_proc_new(mrb, mrb->irep[n]), mrb_top_self(mrb));   ←実行!!
    if (mrb->exc) {
               mrb_p(mrb, mrb_obj_value(mrb->exc));
    }
    return 0;
}
今後の展望
■組み込み系言語の選択肢が増える
 Lua、Squirrelにとって代わる時代が来るかもしれない・・・


■Rubyと同等の作業を組み込みで実現できる
 基本的な実装は踏襲されているのでRubyベースで記述できる
 様々な分野で応用されそう(参考のURL参照)
 開発の敷居が下がる・開発効率が上がる


■まだまだ発展途上
 新しい使われ方が生み出される可能性がある
 今後も注目が集まること間違いなし!
参考
■github(mruby)
     (URL) https://github.com/mruby/mruby

■軽量Ruby「mruby」技術紹介
  (URL) http://www.tjsys.co.jp/page.jsp?id=2998

■軽量Rubyへの取り組み
  (URL) http://www.iij.ad.jp/company/development/tech/activities/mruby/

■ついに軽量Rubyの「mruby」のソースコードが公開!
  (URL) http://el.jibun.atmarkit.co.jp/rails/2012/04/rubymruby-2004.html

■(動画)Matz "mruby - Minimalistic Ruby and Its Possibility" 1
   (URL) http://www.youtube.com/watch?v=n7XRYWclYDY

■Matzにっき(2010/11/14)

More Related Content

What's hot

組込みシステムでIoTへの扉を開こう! mruby on LEGO Mindstorms EV3 (R)
組込みシステムでIoTへの扉を開こう! mruby on LEGO Mindstorms EV3 (R)組込みシステムでIoTへの扉を開こう! mruby on LEGO Mindstorms EV3 (R)
組込みシステムでIoTへの扉を開こう! mruby on LEGO Mindstorms EV3 (R)
Takehiko YOSHIDA
 
最速C# 7.x
最速C# 7.x最速C# 7.x
最速C# 7.x
Yamamoto Reki
 
ZynqMP勉強会
ZynqMP勉強会ZynqMP勉強会
ZynqMP勉強会
Hidemi Ishihara
 
Rubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつりRubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつり
Yuya Rin
 
C#で速度を極めるいろは
C#で速度を極めるいろはC#で速度を極めるいろは
C#で速度を極めるいろは
Core Concept Technologies
 
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPCZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
Yoshifumi Kawai
 
hubot-slack v4移行時のハマりどころ #hubot_chatops
hubot-slack v4移行時のハマりどころ #hubot_chatopshubot-slack v4移行時のハマりどころ #hubot_chatops
hubot-slack v4移行時のハマりどころ #hubot_chatops
knjcode
 
RustによるGPUプログラミング環境
RustによるGPUプログラミング環境RustによるGPUプログラミング環境
RustによるGPUプログラミング環境
KiyotomoHiroyasu
 
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
Yoshifumi Kawai
 
SDNアプローチによるBGP経路監視の提案
SDNアプローチによるBGP経路監視の提案SDNアプローチによるBGP経路監視の提案
SDNアプローチによるBGP経路監視の提案
Toshiki Tsuboi
 
【関東GPGPU勉強会#2】OpenCVのOpenCL実装oclMat
【関東GPGPU勉強会#2】OpenCVのOpenCL実装oclMat【関東GPGPU勉強会#2】OpenCVのOpenCL実装oclMat
【関東GPGPU勉強会#2】OpenCVのOpenCL実装oclMat
Yasuhiro Yoshimura
 
hooks riverpod + state notifier + freezed でのドメイン駆動設計
hooks riverpod + state notifier + freezed でのドメイン駆動設計hooks riverpod + state notifier + freezed でのドメイン駆動設計
hooks riverpod + state notifier + freezed でのドメイン駆動設計
Shinnosuke Tokuda
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
ThinReports
 
Rubyとプログラミング言語の潮流
Rubyとプログラミング言語の潮流Rubyとプログラミング言語の潮流
Rubyとプログラミング言語の潮流
Kazuhiko Kato
 
Rubyボードハンズオンテキスト
RubyボードハンズオンテキストRubyボードハンズオンテキスト
Rubyボードハンズオンテキスト
三七男 山本
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろうKota Mizushima
 
Ruby Extended Library
Ruby Extended LibraryRuby Extended Library
Ruby Extended Library
Akio Tajima
 
Introduction to JIT Compiler in JVM
Introduction to JIT Compiler in JVMIntroduction to JIT Compiler in JVM
Introduction to JIT Compiler in JVM
Koichi Sakata
 
OpenCV 百聞は一見にしかず
OpenCV 百聞は一見にしかずOpenCV 百聞は一見にしかず
OpenCV 百聞は一見にしかず
mq_nakamura
 
Mrubyについて 第16回 岡山ruby, ruby on rails勉強会
Mrubyについて   第16回 岡山ruby, ruby on rails勉強会Mrubyについて   第16回 岡山ruby, ruby on rails勉強会
Mrubyについて 第16回 岡山ruby, ruby on rails勉強会
Masaya Konishi
 

What's hot (20)

組込みシステムでIoTへの扉を開こう! mruby on LEGO Mindstorms EV3 (R)
組込みシステムでIoTへの扉を開こう! mruby on LEGO Mindstorms EV3 (R)組込みシステムでIoTへの扉を開こう! mruby on LEGO Mindstorms EV3 (R)
組込みシステムでIoTへの扉を開こう! mruby on LEGO Mindstorms EV3 (R)
 
最速C# 7.x
最速C# 7.x最速C# 7.x
最速C# 7.x
 
ZynqMP勉強会
ZynqMP勉強会ZynqMP勉強会
ZynqMP勉強会
 
Rubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつりRubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつり
 
C#で速度を極めるいろは
C#で速度を極めるいろはC#で速度を極めるいろは
C#で速度を極めるいろは
 
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPCZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
 
hubot-slack v4移行時のハマりどころ #hubot_chatops
hubot-slack v4移行時のハマりどころ #hubot_chatopshubot-slack v4移行時のハマりどころ #hubot_chatops
hubot-slack v4移行時のハマりどころ #hubot_chatops
 
RustによるGPUプログラミング環境
RustによるGPUプログラミング環境RustによるGPUプログラミング環境
RustによるGPUプログラミング環境
 
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
 
SDNアプローチによるBGP経路監視の提案
SDNアプローチによるBGP経路監視の提案SDNアプローチによるBGP経路監視の提案
SDNアプローチによるBGP経路監視の提案
 
【関東GPGPU勉強会#2】OpenCVのOpenCL実装oclMat
【関東GPGPU勉強会#2】OpenCVのOpenCL実装oclMat【関東GPGPU勉強会#2】OpenCVのOpenCL実装oclMat
【関東GPGPU勉強会#2】OpenCVのOpenCL実装oclMat
 
hooks riverpod + state notifier + freezed でのドメイン駆動設計
hooks riverpod + state notifier + freezed でのドメイン駆動設計hooks riverpod + state notifier + freezed でのドメイン駆動設計
hooks riverpod + state notifier + freezed でのドメイン駆動設計
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
Rubyとプログラミング言語の潮流
Rubyとプログラミング言語の潮流Rubyとプログラミング言語の潮流
Rubyとプログラミング言語の潮流
 
Rubyボードハンズオンテキスト
RubyボードハンズオンテキストRubyボードハンズオンテキスト
Rubyボードハンズオンテキスト
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろう
 
Ruby Extended Library
Ruby Extended LibraryRuby Extended Library
Ruby Extended Library
 
Introduction to JIT Compiler in JVM
Introduction to JIT Compiler in JVMIntroduction to JIT Compiler in JVM
Introduction to JIT Compiler in JVM
 
OpenCV 百聞は一見にしかず
OpenCV 百聞は一見にしかずOpenCV 百聞は一見にしかず
OpenCV 百聞は一見にしかず
 
Mrubyについて 第16回 岡山ruby, ruby on rails勉強会
Mrubyについて   第16回 岡山ruby, ruby on rails勉強会Mrubyについて   第16回 岡山ruby, ruby on rails勉強会
Mrubyについて 第16回 岡山ruby, ruby on rails勉強会
 

Viewers also liked

第2回 松本勉強会 2012 05 25 - apache2.4とmod_lua
第2回 松本勉強会 2012 05 25 - apache2.4とmod_lua第2回 松本勉強会 2012 05 25 - apache2.4とmod_lua
第2回 松本勉強会 2012 05 25 - apache2.4とmod_lua
Ryosuke MATSUMOTO
 
組込み向けスクリプト言語mrubyをEV3で動かしてみよう
組込み向けスクリプト言語mrubyをEV3で動かしてみよう組込み向けスクリプト言語mrubyをEV3で動かしてみよう
組込み向けスクリプト言語mrubyをEV3で動かしてみよう
Takuya Azumi
 
スタートアップがスマホアプリゲームをAzureのサービスで運用した話
スタートアップがスマホアプリゲームをAzureのサービスで運用した話スタートアップがスマホアプリゲームをAzureのサービスで運用した話
スタートアップがスマホアプリゲームをAzureのサービスで運用した話
Kiyoaki Tsurutani
 
Rubyの仕事で食べていくために僕らは!
Rubyの仕事で食べていくために僕らは!Rubyの仕事で食べていくために僕らは!
Rubyの仕事で食べていくために僕らは!
Ouka Yuka
 
Ruby everywhere
Ruby everywhereRuby everywhere
Ruby everywhere
yukihiro_matz
 
Unity入門講座その3
Unity入門講座その3Unity入門講座その3
Unity入門講座その3
spi8823
 
Unity入門講座その2
Unity入門講座その2Unity入門講座その2
Unity入門講座その2
spi8823
 
Generating unique id numbers in Azure
Generating unique id numbers in AzureGenerating unique id numbers in Azure
Generating unique id numbers in Azure
Takekazu Omi
 
Unity入門講座その1
Unity入門講座その1Unity入門講座その1
Unity入門講座その1
spi8823
 
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜 リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
Yugo Shimizu
 
Imprementation of realtime_networkgame
Imprementation of realtime_networkgameImprementation of realtime_networkgame
Imprementation of realtime_networkgame
Satoshi Yamafuji
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
Toru Takahashi
 
【 #Unity会 】このUnityがすごい2015年版
【 #Unity会 】このUnityがすごい2015年版【 #Unity会 】このUnityがすごい2015年版
【 #Unity会 】このUnityがすごい2015年版
ui nyan
 
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
mametter
 
ルールベースから機械学習への道 公開用
ルールベースから機械学習への道 公開用ルールベースから機械学習への道 公開用
ルールベースから機械学習への道 公開用
nishio
 
実戦投入する機械学習
実戦投入する機械学習実戦投入する機械学習
実戦投入する機械学習
Takahiro Kubo
 
「機械学習 By スタンフォード大学」勉強会 2015.09.11
「機械学習 By スタンフォード大学」勉強会 2015.09.11「機械学習 By スタンフォード大学」勉強会 2015.09.11
「機械学習 By スタンフォード大学」勉強会 2015.09.11
Minoru Chikamune
 
ICTutorialOverlay : A utility for making "Overlay Tutorial"
ICTutorialOverlay : A utility for making "Overlay Tutorial"ICTutorialOverlay : A utility for making "Overlay Tutorial"
ICTutorialOverlay : A utility for making "Overlay Tutorial"
Ichito Nagata
 
機械学習の理論と実践
機械学習の理論と実践機械学習の理論と実践
機械学習の理論と実践
Preferred Networks
 
機械学習によるデータ分析まわりのお話
機械学習によるデータ分析まわりのお話機械学習によるデータ分析まわりのお話
機械学習によるデータ分析まわりのお話
Ryota Kamoshida
 

Viewers also liked (20)

第2回 松本勉強会 2012 05 25 - apache2.4とmod_lua
第2回 松本勉強会 2012 05 25 - apache2.4とmod_lua第2回 松本勉強会 2012 05 25 - apache2.4とmod_lua
第2回 松本勉強会 2012 05 25 - apache2.4とmod_lua
 
組込み向けスクリプト言語mrubyをEV3で動かしてみよう
組込み向けスクリプト言語mrubyをEV3で動かしてみよう組込み向けスクリプト言語mrubyをEV3で動かしてみよう
組込み向けスクリプト言語mrubyをEV3で動かしてみよう
 
スタートアップがスマホアプリゲームをAzureのサービスで運用した話
スタートアップがスマホアプリゲームをAzureのサービスで運用した話スタートアップがスマホアプリゲームをAzureのサービスで運用した話
スタートアップがスマホアプリゲームをAzureのサービスで運用した話
 
Rubyの仕事で食べていくために僕らは!
Rubyの仕事で食べていくために僕らは!Rubyの仕事で食べていくために僕らは!
Rubyの仕事で食べていくために僕らは!
 
Ruby everywhere
Ruby everywhereRuby everywhere
Ruby everywhere
 
Unity入門講座その3
Unity入門講座その3Unity入門講座その3
Unity入門講座その3
 
Unity入門講座その2
Unity入門講座その2Unity入門講座その2
Unity入門講座その2
 
Generating unique id numbers in Azure
Generating unique id numbers in AzureGenerating unique id numbers in Azure
Generating unique id numbers in Azure
 
Unity入門講座その1
Unity入門講座その1Unity入門講座その1
Unity入門講座その1
 
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜 リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
 
Imprementation of realtime_networkgame
Imprementation of realtime_networkgameImprementation of realtime_networkgame
Imprementation of realtime_networkgame
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
【 #Unity会 】このUnityがすごい2015年版
【 #Unity会 】このUnityがすごい2015年版【 #Unity会 】このUnityがすごい2015年版
【 #Unity会 】このUnityがすごい2015年版
 
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
Ruby を用いた超絶技巧プログラミング(夏のプログラミングシンポジウム 2012)
 
ルールベースから機械学習への道 公開用
ルールベースから機械学習への道 公開用ルールベースから機械学習への道 公開用
ルールベースから機械学習への道 公開用
 
実戦投入する機械学習
実戦投入する機械学習実戦投入する機械学習
実戦投入する機械学習
 
「機械学習 By スタンフォード大学」勉強会 2015.09.11
「機械学習 By スタンフォード大学」勉強会 2015.09.11「機械学習 By スタンフォード大学」勉強会 2015.09.11
「機械学習 By スタンフォード大学」勉強会 2015.09.11
 
ICTutorialOverlay : A utility for making "Overlay Tutorial"
ICTutorialOverlay : A utility for making "Overlay Tutorial"ICTutorialOverlay : A utility for making "Overlay Tutorial"
ICTutorialOverlay : A utility for making "Overlay Tutorial"
 
機械学習の理論と実践
機械学習の理論と実践機械学習の理論と実践
機械学習の理論と実践
 
機械学習によるデータ分析まわりのお話
機械学習によるデータ分析まわりのお話機械学習によるデータ分析まわりのお話
機械学習によるデータ分析まわりのお話
 

Similar to 軽量Ruby『mruby』について

mrubyでゲームを書いてみた
mrubyでゲームを書いてみたmrubyでゲームを書いてみた
mrubyでゲームを書いてみた
Yousuke Kuroda
 
RubyConfの話の続きのおはなし
RubyConfの話の続きのおはなしRubyConfの話の続きのおはなし
RubyConfの話の続きのおはなし
yamanekko
 
VMを改めて学んで見る
VMを改めて学んで見るVMを改めて学んで見る
VMを改めて学んで見る
kishima7
 
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Takashi Sogabe
 
Rubinius Under a Microscope
Rubinius Under a MicroscopeRubinius Under a Microscope
Rubinius Under a Microscope
高広 内山
 
Rubyボードハンズオン
RubyボードハンズオンRubyボードハンズオン
Rubyボードハンズオン
三七男 山本
 
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Developers Summit
 
Kansai mrb gr_sakura
Kansai mrb gr_sakuraKansai mrb gr_sakura
Kansai mrb gr_sakura
Kosuga Masakatsu
 
emruby: ブラウザで動くRuby
emruby: ブラウザで動くRubyemruby: ブラウザで動くRuby
emruby: ブラウザで動くRuby
mametter
 
ET2016 小さなRubyボード GR-CITRUSの紹介
ET2016 小さなRubyボード GR-CITRUSの紹介ET2016 小さなRubyボード GR-CITRUSの紹介
ET2016 小さなRubyボード GR-CITRUSの紹介
三七男 山本
 
Tokyo ruby kaigi 10 (sogabe)
Tokyo ruby kaigi 10 (sogabe)Tokyo ruby kaigi 10 (sogabe)
Tokyo ruby kaigi 10 (sogabe)Takashi Sogabe
 
mruby VM を調べてみた話
mruby VM を調べてみた話mruby VM を調べてみた話
mruby VM を調べてみた話
kishima7
 
mruby IoTプラットフォーム
mruby IoTプラットフォームmruby IoTプラットフォーム
mruby IoTプラットフォーム
Hiromasa Ishii
 
Mod mrubyについて
Mod mrubyについてMod mrubyについて
Mod mrubyについて
Ryosuke MATSUMOTO
 
mrubyを使った クラウド連携
mrubyを使った クラウド連携mrubyを使った クラウド連携
mrubyを使った クラウド連携三七男 山本
 
私とRubyの付き合い方 - 岡山Ruby会議02
私とRubyの付き合い方 - 岡山Ruby会議02私とRubyの付き合い方 - 岡山Ruby会議02
私とRubyの付き合い方 - 岡山Ruby会議02
Masaya Konishi
 
mruby搭載ボード GR-CITRUS の新しい開発環境の紹介
mruby搭載ボード GR-CITRUS の新しい開発環境の紹介mruby搭載ボード GR-CITRUS の新しい開発環境の紹介
mruby搭載ボード GR-CITRUS の新しい開発環境の紹介
三七男 山本
 

Similar to 軽量Ruby『mruby』について (20)

mrubyでゲームを書いてみた
mrubyでゲームを書いてみたmrubyでゲームを書いてみた
mrubyでゲームを書いてみた
 
RubyConfの話の続きのおはなし
RubyConfの話の続きのおはなしRubyConfの話の続きのおはなし
RubyConfの話の続きのおはなし
 
VMを改めて学んで見る
VMを改めて学んで見るVMを改めて学んで見る
VMを改めて学んで見る
 
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
 
Rubinius Under a Microscope
Rubinius Under a MicroscopeRubinius Under a Microscope
Rubinius Under a Microscope
 
Rubyボードハンズオン
RubyボードハンズオンRubyボードハンズオン
Rubyボードハンズオン
 
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
 
さくルビー.Net誕生
さくルビー.Net誕生さくルビー.Net誕生
さくルビー.Net誕生
 
Kansai mrb gr_sakura
Kansai mrb gr_sakuraKansai mrb gr_sakura
Kansai mrb gr_sakura
 
emruby: ブラウザで動くRuby
emruby: ブラウザで動くRubyemruby: ブラウザで動くRuby
emruby: ブラウザで動くRuby
 
Hello Ruby
Hello RubyHello Ruby
Hello Ruby
 
ET2016 小さなRubyボード GR-CITRUSの紹介
ET2016 小さなRubyボード GR-CITRUSの紹介ET2016 小さなRubyボード GR-CITRUSの紹介
ET2016 小さなRubyボード GR-CITRUSの紹介
 
Mrubyの始め方
Mrubyの始め方Mrubyの始め方
Mrubyの始め方
 
Tokyo ruby kaigi 10 (sogabe)
Tokyo ruby kaigi 10 (sogabe)Tokyo ruby kaigi 10 (sogabe)
Tokyo ruby kaigi 10 (sogabe)
 
mruby VM を調べてみた話
mruby VM を調べてみた話mruby VM を調べてみた話
mruby VM を調べてみた話
 
mruby IoTプラットフォーム
mruby IoTプラットフォームmruby IoTプラットフォーム
mruby IoTプラットフォーム
 
Mod mrubyについて
Mod mrubyについてMod mrubyについて
Mod mrubyについて
 
mrubyを使った クラウド連携
mrubyを使った クラウド連携mrubyを使った クラウド連携
mrubyを使った クラウド連携
 
私とRubyの付き合い方 - 岡山Ruby会議02
私とRubyの付き合い方 - 岡山Ruby会議02私とRubyの付き合い方 - 岡山Ruby会議02
私とRubyの付き合い方 - 岡山Ruby会議02
 
mruby搭載ボード GR-CITRUS の新しい開発環境の紹介
mruby搭載ボード GR-CITRUS の新しい開発環境の紹介mruby搭載ボード GR-CITRUS の新しい開発環境の紹介
mruby搭載ボード GR-CITRUS の新しい開発環境の紹介
 

More from Ryosuke MATSUMOTO

Saint2012 mod process security
Saint2012 mod process securitySaint2012 mod process security
Saint2012 mod process security
Ryosuke MATSUMOTO
 
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
Ryosuke MATSUMOTO
 
第1回 松本勉強会 2012 05 11 - 公開版
第1回 松本勉強会 2012 05 11 - 公開版第1回 松本勉強会 2012 05 11 - 公開版
第1回 松本勉強会 2012 05 11 - 公開版
Ryosuke MATSUMOTO
 
汎用性の高い大規模共有型Webバーチャルホスティング基盤のセキュリティと運用技術の改善
汎用性の高い大規模共有型Webバーチャルホスティング基盤のセキュリティと運用技術の改善汎用性の高い大規模共有型Webバーチャルホスティング基盤のセキュリティと運用技術の改善
汎用性の高い大規模共有型Webバーチャルホスティング基盤のセキュリティと運用技術の改善
Ryosuke MATSUMOTO
 
スレッド単位で権限分離を行うWebサーバのアクセス制御アーキテクチャ
スレッド単位で権限分離を行うWebサーバのアクセス制御アーキテクチャスレッド単位で権限分離を行うWebサーバのアクセス制御アーキテクチャ
スレッド単位で権限分離を行うWebサーバのアクセス制御アーキテクチャ
Ryosuke MATSUMOTO
 

More from Ryosuke MATSUMOTO (6)

Saint2012 mod process security
Saint2012 mod process securitySaint2012 mod process security
Saint2012 mod process security
 
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
 
20120525 mt websocket
20120525 mt websocket20120525 mt websocket
20120525 mt websocket
 
第1回 松本勉強会 2012 05 11 - 公開版
第1回 松本勉強会 2012 05 11 - 公開版第1回 松本勉強会 2012 05 11 - 公開版
第1回 松本勉強会 2012 05 11 - 公開版
 
汎用性の高い大規模共有型Webバーチャルホスティング基盤のセキュリティと運用技術の改善
汎用性の高い大規模共有型Webバーチャルホスティング基盤のセキュリティと運用技術の改善汎用性の高い大規模共有型Webバーチャルホスティング基盤のセキュリティと運用技術の改善
汎用性の高い大規模共有型Webバーチャルホスティング基盤のセキュリティと運用技術の改善
 
スレッド単位で権限分離を行うWebサーバのアクセス制御アーキテクチャ
スレッド単位で権限分離を行うWebサーバのアクセス制御アーキテクチャスレッド単位で権限分離を行うWebサーバのアクセス制御アーキテクチャ
スレッド単位で権限分離を行うWebサーバのアクセス制御アーキテクチャ
 

軽量Ruby『mruby』について

  • 1. 軽量Ruby『mruby』について 第3回 松本勉強会 ファーストサーバ ネットワークG 津崎 善晴
  • 2. mruby とは? ■開発 Rubyの生みの親であるまつもとゆきひろ氏が中心となって開発(国産) ■特徴 Embeddable Rubyの略 RiteVM : Ruby Lightweight VM 2010年度の経済産業省の地域イノベーション創出事業で開発 小規模なRuby言語処理系 機能はほぼRuby標準規格を満たす最小限 実装はLuaを意識 ■ターゲット ゲームの組み込みスクリプト デジタル家電のソフトウェア開発 組み込み機器やロボットの非リアルタイム制御 ■githubで公開中 (URL) https://github.com/mruby/mruby
  • 3. コンパイラ と インタプリタ ■コンパイラ(Compiler)とは マシン語のプログラムに一括変換してから実行 (利点)実行速度が速い、単独で動作する (欠点)中身がわからない、変更が容易でない (主な言語)C、C++等 ■インタプリタ(Interpreter)とは 実行可能なプログラムに変換しながら実行 (利点)人間にわかりやすく記述できる、変更が容易である (欠点)実行速度が遅い、個別にインタプリタシステムが必要である (主な言語)Ruby、Perl、PHP、Python等 ■JITコンパイラ(Just-In-Time Compiler)とは 実行時にコードのコンパイルを行い実行速度の向上を図る (利点)プラットフォームに依存しない形式で配布、コンパイラ同等の速度 (欠点)実行時に変換分の時間が必要である、メモリ使用量が大きい (主な言語)JavaScript、Lua等
  • 4. mruby と Ruby の違い ■mruby 最初からRiteVM 行数 : 約9万行(ヘッダ含む) ... 4/20時点 移植性が高くあらゆるプラットフォームで動作 組み込みに特化 ■Ruby 1.8までインタプリタ方式、1.9からRiteVM 行数 : 約17万行(拡張ライブラリ等含めず) Unix-like/POSIX互換プラットフォーム上で動作
  • 5. サンプル(Cからmruby実行) #include <stdlib.h> #include <stdio.h> /* Include the mruby header */ #include <mruby.h> #include <mruby/proc.h> #include <mruby/data.h> // to be replaced by #include <mruby/compile.h> #include <mruby/compile.h> int main(void) { struct mrb_parser_state *p; mrb_state *mrb = mrb_open(); ←mrubyの初期化 char code[] = "p 'hello world!'"; ←実行するコード記述 printf("Executing Ruby code from C!n"); p = mrb_parse_string(mrb, code); ←コードから構文木作成 int n; n = mrb_generate_code(mrb, p->tree); ←コード生成 mrb_run(mrb, mrb_proc_new(mrb, mrb->irep[n]), mrb_top_self(mrb)); ←実行!! if (mrb->exc) { mrb_p(mrb, mrb_obj_value(mrb->exc)); } return 0; }
  • 6. 今後の展望 ■組み込み系言語の選択肢が増える Lua、Squirrelにとって代わる時代が来るかもしれない・・・ ■Rubyと同等の作業を組み込みで実現できる 基本的な実装は踏襲されているのでRubyベースで記述できる 様々な分野で応用されそう(参考のURL参照) 開発の敷居が下がる・開発効率が上がる ■まだまだ発展途上 新しい使われ方が生み出される可能性がある 今後も注目が集まること間違いなし!
  • 7. 参考 ■github(mruby) (URL) https://github.com/mruby/mruby ■軽量Ruby「mruby」技術紹介 (URL) http://www.tjsys.co.jp/page.jsp?id=2998 ■軽量Rubyへの取り組み (URL) http://www.iij.ad.jp/company/development/tech/activities/mruby/ ■ついに軽量Rubyの「mruby」のソースコードが公開! (URL) http://el.jibun.atmarkit.co.jp/rails/2012/04/rubymruby-2004.html ■(動画)Matz "mruby - Minimalistic Ruby and Its Possibility" 1 (URL) http://www.youtube.com/watch?v=n7XRYWclYDY ■Matzにっき(2010/11/14)