軽量Rubyを考える
先日、福岡に帰省した際に、「軽量Rubyセミナー」に参加してきました。
九工大の田中さん、福岡CSKの三牧さんをはじめ4つの軽量Rubyの事例が発表されました。まつもとゆきひろさんも出席されていました。*1
私の理解では、軽量RubyはRiteVMを中核にしたミニマムセットのRubyコンパイラ/ライブラリ(mRuby)です。コンパクトさが売りと思いますが、フットプリントが如何ほどなのか、スケーラビリティがどの程度柔軟のかは、残念ながら講演からは推測できませんでした。
ちょっとびっくりしたのは、組込み用途をターゲットとしているにも関わらず、「実行速度がCに比べ一桁以上遅い」「割り込みが使えない」「リアルタイム性がない」という点です。FA業界でどっぷりとハードリアルタイムな世界に浸っている身としては、頭の中が疑問符だらけです。
尤も、登場した当時は箸にも棒にも掛からなかった組込みLinuxや組込みJavaが、今やCE Linux、Android、携帯Java(?)、Dalvik etc.となって立派に組込み用途で活躍していることを考えると、キラーアプリが見つかれば軽量Rubyもブレークするかもと期待を膨らませています。
事例発表ではバイオ系の計測ツール、ICカードリーダー、ルーター、LEGO MINDSTORMSが紹介されました。MINDSTORMSを除くと、いずれもソフトリアルタイムな用途と言えます。Rubyは使ったことがなく、外しているかも知れませんが、スマートグリッドなどのデータロガーなんかに活用するのがしっくりするのではないでしょうか。
軽量Rubyにもう少し手を入れるとすれば、私なら
- 割り込みにコールバックルーチン(クロージャ?)をバインドする仕組み
- 時間制約が強いブロックを指定する仕組み(ディスパッチ/GC禁止)
- 各種OSの通信プリミティブ(セマフォ、イベントフラグ、メッセージキューetc)のラッパーライブラリ
を追加したいなと思います。
また、軽量Rubyを使うとクロスコンパイル不要でターゲットなしでも開発ができるとの説明がありました。でも、それってハードシミュレータがあることが前提ですよね。ホスト上に信頼できるハードシミュレータがあれば、Cを含むどんな言語でもターゲットなしで開発できるかと...。現場に身を置く一人として、完璧なハードシミュレータの作成が困難なため、みんな困っているのではと思います。例えば、RubyがVerilog/VHDLのシミュレータと簡単に繋がれば、一筋の光明が見えるかも知れませんね。暇ができれば考えてみようかな。
あれこれ辛口なコメントをしましたが、「軽量Ruby」おもしろそうです。公開されたら触ってみようと思います。
*1:小心者故お話はしませんでしたが