Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

軽量Ruby『mruby』について

5,856 views

Published on

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

  • Be the first to comment

軽量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)

×