PR

本家のRuby 1.9もメドが付いてきて、より次世代のテーマにリソースを割けるようになってきた、という面もあるのでしょうか。

 それもありますね。Ruby 1.8のころは、それこそ上から下まで全部私が作ったものが骨格でした。ですので、私自身が(開発の)面倒を見なければならないところがたくさんありました。

 Ruby 1.9になって、(VMなどの)コア部分は他の人が作ったものになりましたし、必ずしも私でなくともRubyに対して貢献できる部分はどんどん増えていきました。

 結果として、デザインのディシジョンを最終的にするといったように、私自身がプログラマーとして手を動かすことは、本家Rubyに対しては以前より少なくなってきていました。そういう意味で、軽量版のmrubyのようなものに取り組む余裕が出てきたというのは確かですね。

そういう意味では、福岡県とのつながりは、ちょうとタイミングが良かったと。

 そうですね。タイミングは良かったですね。

mrubyの用途として、スマートフォンのアプリへの組み込み、ゲーム・ソフトウエアへの組み込み、組み込みソフトウエアでの利用などを挙げられています。ご自身としては、どの領域が最もフィットすると思われていますか。

 難しいところではありますが、「組み込み」という言い方をすると非常に範囲が広い。ですので、「組み込み向けRuby」というと、誤解を招きかねない表現であるとは自分でも思ってはいます。政治的、マーケティングな狙いもあります。

 私自身がmrubyのターゲットだと考えているは、「組み込み」といわれているところでも、かなり上の方(の領域)です。例えば、情報家電のGUIであるとか、薄型テレビで番組表やメニューを出したりするところであるとか。あとはゲーム・ソフトウエア、スマートフォンなど各種アプリへの組み込みを最初のターゲットと考えています。

 OSについても、恐らくはLinuxか、ゲーム・コンソールの場合はコンソールのOSなどになるでしょう。つまりプログラミング環境としては、十分確立しているところが対象です。モニターなど、低レベルな(環境しかない)領域は、当初のターゲットとしては難しいかと思っています。

 組み込みって、昔はソフトウエアで制御する部分が少しだけあるという領域だったのが、最近ではどんどん規模が増えています。組み込みに使われているCPUも性能が良くなっていって、ARMコアにLinuxを載せたなんていうと、システム的にはほとんどPCと変わらない。

 そうなると、(組み込みソフトウエアといっても)普通のPCみたいにソフトウエアを開発しても別にいいわけですよね。組み込みだからといって、旧態依然とC++などで開発を続ければ、生産性や掛けるコストに折り合わなくなってしまう可能性があります。

軽量版のmrubyを開発したまつもと氏(写真:新関 雅士)
軽量版のmrubyを開発したまつもと氏(写真:新関 雅士)
[画像のクリックで拡大表示]

 ただ、そうはいっても、組み込みですので、何Gバイトもメモリを搭載するという訳にはいきません。省リソースは必須ということで、今回のようなmrubyが出てくる余地があると思っています。

 もう一つは、組み込みはどちらというと、あるプラットフォームの上で一つの大きなアプリがあって、それが全体をコントロールするといった形態が多い。けれど、今のCRubyでは「Rubyでアプリを記述し、C言語で機能拡張」という、Rubyが中心に座るアーキテクチャを割と言語として強制してしまいます。

 それよりも「一つのアプリの中で特定の部分だけRubyで記述し、そのモジュールはC言語などで記述した他のプログラムから呼び出す」というアーキテクチャ。こちらの方が組み込み用途には適しています。mrubyは、まさにそんなAPIを持たせた処理系なのです。