mrubyの概要と
webrubyで遊んでみた顛末
kishima

Aug 28, 2013 kawasaki.rb
1
自己紹介
@kishima
メーカーで組み込みソフト周辺?の研究
的なことしています。
でも最近はJavaを触ることが多いよう
な。
Tokyu.rbでお肉を食べたり、あみだくじ
を引いていたりします。

2
mrubyとは
・組み込み向けのruby
➡
小さい実装
移植しやすい
メモリをあまり食わない
などの特徴を持ったRubyです
Rubyと同様に
GC、VMを持っており、その上で動作します

3
組み込み?
・アプリ組込み
・デバイス組込み
の2つの流派があります
mrubyはどちらにも使えます

4
特徴
・必要最小限の機能を選択できるようにmrbgem
という仕組みがあります
普通のgemと違ってコンパイル時に静的にリンクさ
れます
特にデバイス組込みにはありがたい機能です

5
どのくらいの大きさ?

資料が準備できてないので、
以前書いたブログを参照…
http://d.hatena.ne.jp/machaut/20120624/1340547112

6
応用例
IIJさんのルータや、mrubyボード
Apacheへの組み込み
などなど
IIJさんの取り組み:
http://www.iij.ad.jp/company/development/tech/activities/mruby/

変わったものとしては
LEGO MINDSTORMで動かした例など…
http://www.youtube.com/watch?v=I8opMZyJNZI

7
webrubyとは
ブラウザの上でRubyが使える!
$(document).ready(function() {
var src = "5.times { puts 'Ruby is awesome!' }";
var w = WEBRUBY();
w.run_source(src);
w.close();
});

趣味の範囲で作られているようなので、仕事
で使うには色々問題あると思います
8
webrubyの仕組み
LLVMを使ってmrubyをjsにコンパイル!

http://qiezi.me/talks/rubykaigi2013/index.html#/
より

9
デモ
6月に行われたTokyuRubyKaigi06
で試してみました

10
TokyuRubyKaigi06 抽選の仕組み
抽選スクリプト.rb

webruby (mruby)

compiled by
LLVM/emscripten

描画スクリプト.js on Enchant.js
JavaScript
描画周りはスプライトが使いやすかったので、
enchant.jsで描画しています
24fpsでjsからmrubyをコールバックして、
jsがその結果を受けて画面を更新しています。
11
ハマったこと
・オブジェクトを引数にしてjsからmrubyに
コールバックすると、そのうち
スタックオーバフローしてしまう
・splitで正規表現が使えない
・日本語が文字化けする?

12
おしまい

13

Introduction of mruby & Webruby script example