軽量Ruby『mruby』について

5,518 views

Published on

第3回 松本勉強の資料です。津崎さん発表分。

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,518
On SlideShare
0
From Embeds
0
Number of Embeds
1,026
Actions
Shares
0
Downloads
24
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

軽量Ruby『mruby』について

  1. 1. 軽量Ruby『mruby』について 第3回 松本勉強会 ファーストサーバ ネットワークG 津崎 善晴
  2. 2. mruby とは?■開発 Rubyの生みの親であるまつもとゆきひろ氏が中心となって開発(国産)■特徴 Embeddable Rubyの略 RiteVM : Ruby Lightweight VM 2010年度の経済産業省の地域イノベーション創出事業で開発 小規模なRuby言語処理系 機能はほぼRuby標準規格を満たす最小限 実装はLuaを意識■ターゲット ゲームの組み込みスクリプト デジタル家電のソフトウェア開発 組み込み機器やロボットの非リアルタイム制御■githubで公開中 (URL) https://github.com/mruby/mruby
  3. 3. コンパイラ と インタプリタ■コンパイラ(Compiler)とは マシン語のプログラムに一括変換してから実行 (利点)実行速度が速い、単独で動作する (欠点)中身がわからない、変更が容易でない (主な言語)C、C++等■インタプリタ(Interpreter)とは 実行可能なプログラムに変換しながら実行 (利点)人間にわかりやすく記述できる、変更が容易である (欠点)実行速度が遅い、個別にインタプリタシステムが必要である (主な言語)Ruby、Perl、PHP、Python等■JITコンパイラ(Just-In-Time Compiler)とは 実行時にコードのコンパイルを行い実行速度の向上を図る (利点)プラットフォームに依存しない形式で配布、コンパイラ同等の速度 (欠点)実行時に変換分の時間が必要である、メモリ使用量が大きい (主な言語)JavaScript、Lua等
  4. 4. mruby と Ruby の違い■mruby 最初からRiteVM 行数 : 約9万行(ヘッダ含む) ... 4/20時点 移植性が高くあらゆるプラットフォームで動作 組み込みに特化■Ruby 1.8までインタプリタ方式、1.9からRiteVM 行数 : 約17万行(拡張ライブラリ等含めず) Unix-like/POSIX互換プラットフォーム上で動作
  5. 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. 6. 今後の展望■組み込み系言語の選択肢が増える Lua、Squirrelにとって代わる時代が来るかもしれない・・・■Rubyと同等の作業を組み込みで実現できる 基本的な実装は踏襲されているのでRubyベースで記述できる 様々な分野で応用されそう(参考のURL参照) 開発の敷居が下がる・開発効率が上がる■まだまだ発展途上 新しい使われ方が生み出される可能性がある 今後も注目が集まること間違いなし!
  7. 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)

×