Webサービスの分野などで人気を博してきたオブジェクト指向のプログラミング言語「Ruby」に2012年4月、組み込み向けの軽量版「mruby」が登場した。生みの親であるまつもとゆきひろ氏へのインタビュー第2回は、mrubyのライブラリ構成やコンフィギュレーションについて聞いた。(聞き手=進藤 智則)

(第1回の記事はこちら

 なお、日経エレクトロニクスの最新号(2012年6月11日号)において、軽量Ruby「mruby」の解説記事「『組み込み』に進出するプログラミング言語Ruby 」を掲載しております。ぜひ併せてご一読下さい。

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

――次にmrubyのライブラリについてお聞きします。mrubyでは(1)ミニマル、(2)スタンダード、(3)フル、という3種類のライブラリを規定しています。このうちまずミニマルの範囲については、何かカッチリとした定義はあるのでしょうか。

 まず状況から説明しますと、現在公開しているmrubyにはミニマルのライブラリしかありません。それ以外のライブラリについては未実装です。

 ミニマルの定義についてですが、確かにあんまりキッチリとした定義はありません。これがないとRubyとは言えないだろうという最低限のところというイメージです。例えば、「文字列処理もないのにRubyなのか」とか、「配列もないのにRubyか」とか、そうした疑問が呈されそうなところがミニマルです。

 スタンダードは、Rubyの国際規格である「ISO/IEC 30170:2012」の範囲プラス・アルファです。今、githubで公開しているmrubyにはISO規格で定義されてないものも若干、含まれています。ISO規格の範囲内だけでは実現できないものもありますので、プラス・アルファというわけです。

 3種類のライブラリは、表形式でキレイに整理できるような形には(現状では)なっていないですね。ミニマルでもISO規格からはみ出したりしています。

 時間関連のクラス「Time」については「ないと困る」という声が多くありましたので入れました注)。幸い、TimeについてはOSにそれほど依存しない形で実装できましたので、ミニマルに含めています。将来、逆に「Timeがあると困る」というようなことが発生してくれば、付け外しできるようにするかもしれません。

――フルの定義については、どうでしょう。これは将来的に実装されることもあり得るのでしょうか。

 現状では分かりません。当然、フルの範囲までを実装するとなるとコストが掛かりますので、そのコストを誰が負担するかという話になっていくと思います。

 オープンソースとして細々と開発している内に、フルにまで到達しましたというのは、遠い未来にはあるかもしれませんが、現時点では(mrubyで)そこまでやるモチベーションは考えにくいですね。

――そのあたりは軽量Rubyのコミュニティが形成されて、開発がどこまでドライブされるか次第であると。