軽量Rubyを考える

先日、福岡に帰省した際に、「軽量Rubyセミナー」に参加してきました。

九工大の田中さん、福岡CSKの三牧さんをはじめ4つの軽量Rubyの事例が発表されました。まつもとゆきひろさんも出席されていました。*1

私の理解では、軽量RubyはRiteVMを中核にしたミニマムセットのRubyコンパイラ/ライブラリ(mRuby)です。コンパクトさが売りと思いますが、フットプリントが如何ほどなのか、スケーラビリティがどの程度柔軟のかは、残念ながら講演からは推測できませんでした。

ちょっとびっくりしたのは、組込み用途をターゲットとしているにも関わらず、「実行速度がCに比べ一桁以上遅い」「割り込みが使えない」「リアルタイム性がない」という点です。FA業界でどっぷりとハードリアルタイムな世界に浸っている身としては、頭の中が疑問符だらけです。

尤も、登場した当時は箸にも棒にも掛からなかった組込みLinuxや組込みJavaが、今やCE LinuxAndroid、携帯Java(?)、Dalvik etc.となって立派に組込み用途で活躍していることを考えると、キラーアプリが見つかれば軽量Rubyもブレークするかもと期待を膨らませています。

事例発表ではバイオ系の計測ツール、ICカードリーダー、ルーターLEGO MINDSTORMSが紹介されました。MINDSTORMSを除くと、いずれもソフトリアルタイムな用途と言えます。Rubyは使ったことがなく、外しているかも知れませんが、スマートグリッドなどのデータロガーなんかに活用するのがしっくりするのではないでしょうか。

軽量Rubyにもう少し手を入れるとすれば、私なら

  1. 割り込みにコールバックルーチン(クロージャ?)をバインドする仕組み
  2. 時間制約が強いブロックを指定する仕組み(ディスパッチ/GC禁止)
  3. 各種OSの通信プリミティブ(セマフォ、イベントフラグ、メッセージキューetc)のラッパーライブラリ

を追加したいなと思います。

また、軽量Rubyを使うとクロスコンパイル不要でターゲットなしでも開発ができるとの説明がありました。でも、それってハードシミュレータがあることが前提ですよね。ホスト上に信頼できるハードシミュレータがあれば、Cを含むどんな言語でもターゲットなしで開発できるかと...。現場に身を置く一人として、完璧なハードシミュレータの作成が困難なため、みんな困っているのではと思います。例えば、RubyVerilog/VHDLのシミュレータと簡単に繋がれば、一筋の光明が見えるかも知れませんね。暇ができれば考えてみようかな。

あれこれ辛口なコメントをしましたが、「軽量Ruby」おもしろそうです。公開されたら触ってみようと思います。


*1:小心者故お話はしませんでしたが