Webサービスの分野などで人気を博してきたオブジェクト指向のプログラミング言語「Ruby」に2012年4月、組み込み向けの軽量版「mruby」が登場した。生みの親であるまつもとゆきひろ氏へのインタビュー、第2回を掲載する。(聞き手=進藤 智則)
次に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で)そこまでやるモチベーションは考えにくいですね。