まつもとゆきひろ顧問

mruby/cの安定版1.0リリースに先立ち、Rubyおよびmrubyの開発者で、ITOCの顧問でもあるまつもとゆきひろさんに、mruby/cプロジェクトへの期待、今後の方向性などについて東専門研究員とともにお話いただきました。

(インタビュー日:2016年12月12日)


― 本日はよろしくお願いいたします。

ITOCではmruby/cSciRubyなどRubyに関連した研究開発に取り組んでいます。Rubyを利用されることの多い県内企業の皆さんからはRubyやITOCの研究開発に多くの期待が寄せられています。

まつもとさんは国内外で多数講演され、多くの方とお話される機会をお持ちだと思いますが、国内外でのRuby、mrubyの拡がりについてどのように感じていらっしゃいますか?

 

まつもと:Rubyは、すでに多くのユーザーに利用されており、今更、新たに拡がりを感じるレベルではないですね。

mrubyは、海外では積極的に関わってくれる人、エバンジェリストのような活動をしてくれている人が日本ほどいない。日本に比べると知名度も注目度もまだイマイチかなと思っていますね。
そういったなかで、ShopifyというECサイトを運営しているアメリカの企業が社内でmrubyを使っていると言っています。

Hackeroneというバグを修正したら懸賞金をもらえるサイトがあるんですが、Shopifyがmrubyに懸賞をかけてくれて、ここ一ヶ月ですごい数のバグレポートが上がってきました。まあ、プルリクエストを当てるだけっていうのもたくさんあったんですけどね。最近すごくmrubyを手直ししました。

 

― mrubyが色々使われているという実感はありますか?

 

まつもと:そうですね。関心を持ってもらって、質を高めるということが重要だなと思っているところです。

Shopifyについて言うと、mruby-engineという名前でmrubyのサンドボックスのようなものを作ろうとしていて、それがオープンソースで公開されています。サーバーサイドでmrubyが動いていて、そこでセキュリティ上の問題があるというレポートがたくさん送られてきたんですよね。

 もともとmrubyは組込みの環境で、入力も出力も管理された状態で実行されることを想定していたので、敵対的な入力っていうものをあまり考えていなかったんです。こういうサンドボックス的な使い方をすることは想定していなかった。少なくとも通常のmrubyプログラムを動かした状態で、敵対的入力があった場合にシステム全体が落ちるようなことがあってはいけないという観点でたくさんレポートが来ています。そこまで考え作っていなかったなと思いながらバグを直していましたね。

 

― 当初想定されていなかった使い方がmrubyで出始めているということですね。日本国内での使われ方の拡がりはどう見ていらっしゃいますか?

 

まつもと:そうですね、アプリケーションの組込みとして使っている人がそれなりにいますね。mod_mrubyやngx_mrubyのようにサーバーサイドに入れるケースが増えてきたことがひとつ。それも元々のデバイスに組込むというのとは違う領域ですよね。

 もうひとつは、mruby-cliというRubyでつくったアプリケーションをシングルバイナリにするツールがあります。それを使ってシングルバイナリとしてWindows、Linux、MacOSのツールをコンパイルできる。そのファイルだけコピーすれば使えますよというようなやり方を便利に使っている人たちもいます。そのユースケースとして、例えばMitamaeというChefのmruby版のようなものがあります。

 

― そういったお話を聞いていると日本でのmrubyの使い方も幅が拡がっている感じがしますね。

 

まつもと:そうですね、あとはIoTデバイスのシミュレータを作っていたりしますね。サーバーサイドはWEBアプリケーションだからAPIを提供すればいい。でも、多数のデバイスからのアクセスは、実際にたくさんデバイスを用意するのは大変だし、そうでなくても仕様が変更されることもあったり、ハードウェアが完成しないこともあったりします。それでテストが出来ませんというのでは悲しいのでシミュレータを作っています。mruby-cliのシングルバイナリをたくさんのホストにばら撒いて同時に1,000デバイスからアクセスするというテストをしている人もいましたね。

 

― 今の時代ならでは領域のような気がしますね。

 

まつもと:そう、それらも含めて当初想定していなかった領域での使われ方が増えていますね。電子百葉箱や、魚の養殖での水温・養分チェックなどのデバイスで使われている例もありますけど、それよりもソフトの中に組込むという利用が意外に多いですね。

 

― そういった状況でmruby/cという新しいVMの開発をITOCと九州工業大学で行っているのですが、mruby/cの特徴、目指すところや開発状況などはどうでしょうか?

 

:mruby/cは、オープンソース版のmrubyよりもさらに小さいリソース、具体的に言えばRAMのメモリ容量が64KBでも動かせるVMの開発を目指すプロジェクトです。今の開発状況は、基本的動作の実装ができており、よく使うClassも用意できています。そこで安定版を1月末にリリースし、ユーザーから色々なフィードバックが得られればと考えています。

 

まつもとゆきひろ顧問1 まつもと顧問と東研究員2

― まつもとさん、mruby/cの利用領域について期待するところはありますか?

 

まつもと:mrubyもメモリを使いすぎだとよく聞くので、少ないメモリでの利用が要求される領域だと役に立つ気がしますね。

 

― 先ほどのIoTの話もありますけど、実際にこんなところで使ってみてはどうかといったアドバイスはありますか?
 

まつもと:いやぁ、ちょっとね、未来は予測できないですよね。

mrubyを作り始めた2010年には、5年経ったらデバイスはもっとリッチになっていると思って作ったけど、意外とそちらの方には進んでないというのもあるので。

mruby/cについては、現時点でmrubyでも大きすぎで困るというのをカバーできるんじゃないかなと思っています。mrubyは組込み向けで小さめの実装だと言いつつもメモリをそれなりに使うので、小さなリソースでも動くmruby/cの価値があるように思います。たぶんmrubyよりもっとデバイス寄りで利用されると思うけど、そこがどこまで伸びるのか現時点では未知数ですね。

使われ方として今のように割り込みでVMを立ち上げて使うような方法も当然あるだろうし、その他にも使い方は色々とあるので、そこをmruby/cでどう実装するのか興味深いですし、工夫して作って欲しいですね。 

 

― 今のまつもとさんのお話を聞いて、開発者としては、利用者にこんなところで使って欲しい、こんな使い方もある、というような思いがありますか?

 

:そうですね、ひとつ言えることはどんなに半導体プロセスが発展しても、全体のプロセッサーのスケール感というのは変わらないだろうということです。小さいものは小さいもので需要がある、大きいものは大きいもので需要がある。そこで、少し大きめのところで動くmrubyと、小さいところで動くmruby/cがお互いに補完できるのではないのでしょうか。

 それから、小さいプロセッサーだと、想像も出来ないほど小さい電力で動くこともあるので、例えばエナジーハーベストのような環境下でも高級言語であるmruby/cは使えるのではないかなと思います。
高級言語を使えるとプログラマの間口が広がりますよね。それほど経験を積んでいないプログラマでも、ある程度は実戦に投入することができるでしょうし。

たくさんのデバイスを配布して、たくさんのデータを収集したいという世の中の流れが出来てきていますし、そういった場面でもっと使ってもらいたいなと開発者としては思いますね。


― mruby/cは省メモリ・省電力で動くという特徴を活かして、まつもとさんのお話しのように様々なところで使ってもらう中から我々の予想しなかったような使われ方がどんどん出てくるのではないかなとお話を聞いて感じました。

(後半に続く)


後半は、Ruby3.0の開発の方向性、mruby/cプロジェクトに対するアドバイスなどをお話いただきました。(近日中に公開予定です)

〈mruby/c関連リンク〉