@IT編集部の西村賢がRuby/Rails関連を中心に書いています。

ついに軽量Rubyの「mruby」のソースコードが公開!

»

 Rubyの生みの親、まつもとゆきひろさんが、ついに新しいRuby実装である「mruby」のソースコードをGitHub上で公開しました! 2012年4月20日です。ライセンスは、MITライセンスとなっています。

 以下にまつもとさんがmrubyについて語るインタビュー動画を貼り付けます。18分30秒のあたりからどうぞ。インタビューは昨秋の時点でのものです。

 公開されたmrubyのレポジトリから、Readmeの一部を引用します。

mrubyはISO規格に準拠したRuby言語を様々な環境で動作可能となるように軽量化したものです。モジュール構成によりインタプリタ実行形式やコンパイル&VM実行形式でも動作させることができます。

2010年度の経済産業省の地域イノベーション創出事業により開発されました。

MRI(Matz Ruby Implementation)版との互換性

以下要修正
+ シンプルな文法
+ 普通のオブジェクト指向機能(クラス,メソッドコールなど)
+ 特殊なオブジェクト指向機能(Mixin, 特異メソッドなど)
+ 演算子オーバーロード
+ 例外処理機能
+ イテレータとクロージャ
+ ガーベージコレクタ
+ ダイナミックローディング (アーキテクチャによる)
+ 移植性が高い.多くのUnix-like/POSIX互換プラットフォーム上で
動くだけでなく,Windows, Mac OS X,BeOSなどの上でも動く
cf. http://redmine.ruby-lang.org/wiki/ruby-19/SupportedPlatformsJa

 要修正とありますが、イテレータやクロージャ、例外処理、GC、クラス、MixinなどRubyの基本機能は、すでに入っているようです。Cや、それに類する言語で開発するのと比べれば、ずいぶん生産性が上がりそうですよね。GCやVMは、本家Rubyが使っているものとは違うようで、GCは「Tri-color Incremental Garbage Collection」、VMはRiteVMという名称です。

Mruby

 早速手元の32ビット環境のUbuntu上でコンパイルして動かしてみましたが、ごく簡単なコードはふつうにRubyっぽく動いているように見えます。拡張ライブラリのディレクトリは空っぽで本体のソースコードだけという感じです。テストコードも見当たりません(コード内にifdefでテストコードが存在していました)。コード行数はヘッダを含めても9万244行。コンパイル後のバイナリは1.6MBほどでした。最新版のRuby 2.0(開発版)は、エンコーディングや拡張ライブラリをのぞいても17万行程度あるので、やはりmrubyが小さいことが分かります。

 mrubyはフットプリントが小さいのが特徴でしょう。POSIXやそれに類するAPIを前提としたUnixサーバやPC向けに開発されたRubyとは違い、最初から搭載メモリなどでリソースに制約のある機器をターゲットとしています。デバイスへの組み込みや、モバイルアプリのSDKの一部として、あるいはゲームのスクリプティング用としての利用などが期待されます。デバイスというのは、スマートフォンはもちろん、組み込み市場が対象なので、クルマやテレビ、デジタル家電、ロボットというところでしょうか。福岡のまつもとさんの研究室(福岡県Ruby・コンテンツ産業振興センターにあります)にはロボットアームが置いてあったりして、「これ何のためにあるんですか?」とお聞きしたら「これをRubyで動かすんですよ」という答えで、私はかすかに驚いたりしました。

 現在、モバイル向けアプリのSDKという利用目的だとLuaやMono(.NETのOSS実装)が人気です。いずれもアプリ自体に処理系を付加してアプリと一緒に配布してしまえるのが特徴で、mrubyでも、すでに増井雄一郎氏による「MobiRuby」がアナウンスされています。

Mobiruby

 Webアプリの世界では、Pythonにやや遅れてRailsとともに欧米へ普及したRubyですが、Pythonに拮抗するほど普及しました。一部のスタートアップ文化ではRubyが圧倒するとも言われていますが、それと似たようなことが、Lua vs. mrubyでも起こるのか、非常に興味があるところです。今後、成長が見込まれる市場ですし、日本の製造業と手を携えてmruby旋風が起こるといいですよね。

 Luaの成功は、程よい抽象度とポータビリティの高さにあったのでしょう。しかし、まつもとさんに言わせると、Luaは文法的にはイケてないということなので(例えばLuaではオブジェクト指向的な書き方ができるものの「内臓が見える感じ」(まつもと氏)という話です)、Rubyのときと同じように、もしRubyの使いやすさを開発者が認めるなら、今からでもmrubyの普及は大いにあり得るのではないでしょうか。

Comment(0)

コメント

コメントを投稿する