Rubyコミュニティの「新人賞」Ruby Prize

Copyright©Ruby Association.
RubyPrize2014 受賞者インタビュー、2014 Prize Winner Interview
  • 柴田 博志/Hiroshi Shibata
  • Pat Shaughnessy
  • 松本 亮介/Ryosuke Matsumoto

「Lua」「mruby」との出会い

松本氏 はい、そうですそうです。で、うぅ〜んと思って、そのあたりで色々調べた時にLuaという言語が昔からあるという話を聞きました。

まつもと はいはい。mod_luaというのは有名ですよね、業界では。

松本氏 ウェブ業界にいる時はLuaというのはほとんど聞いたことがないぐらいでして、僕はたまたまApacheの最新のものを見た時に、そのmod_luaというものがあったんで知ったんです。
そこでLuaという言語があることを知って、その時にちょうど僕が考えているものと似たような方向性のmod_luaというソフトウェアがあったんですけど、いまいちウェブに馴染みがない感じというか。

まつもと そうですね。まぁLuaというのはアプリケーション組み込みの領域では結構有名なプログラミング言語で、ブラジル生まれの言語なんですけれども、確かにウェブアプリケーションを書くのにLuaを使って書く人はあまりいないし、ちょっと、ある意味癖がありますよね。その辺はあまり望ましくなかったと。

松本氏 はい。まぁ好みでもあるんですが、最悪研究で行くならまずはmod_luaの改善から、と思っていたのがちょうど2年半前のmrubyがリリースする4月なので、その2ヵ月前ぐらいですね。
その時に色々ブログなどでもmod_luaのことを書いていて、結構mod_luaを知ってもらえたりしたんですが、やはり皆さんあまりLuaという言語に反応が良くなくて。
その中で気付いたこととして、mod_luaはいまいち僕が想定する速度が出ていなかった。で、うぅ〜んって考えてる時にすごくタイミングよくmrubyが出てきたんです。

まつもと ちょうどオープンソース化したのがその年の4月でしたね。

松本氏 その時にMatzさんのmrubyの経緯の動画を見て、そこにLuaも出てきて、あぁなるほど、あぁもうこれぴったりやわ、と感じたんですよね。

まつもと そうですね。mrubyというのはLuaが使われてるようなところをRubyでできるようにというところがあります。
あと、Luaはちょっとミニマリスティックなので、どんどん機能を拡張するという感じにはなりにくいんですが、Rubyだとクラスをつくりました、ライブラリを追加しました、という感じのオープンエンドなところがあるので、プログラムがどんどん複雑になってる時には優位性が出てくるかなとは思ったんですけども。

松本氏 はい。実際その時にはRubyは全然触っていなくて、どちらかというとPerlばかり書いていた人間なんです。そこで、とりあえずやってみようということで取り組みました。
4月にmrubyがリリースすると、絶対僕と同じようなアイデアを持ってすぐつくる人がいると思ったので、本当に1週間ぐらいで実装しました(実際には次の日)。

まつもと 最初、早かったですよね。

松本氏 4日ぐらいでとりあえず0.01と思って、まず出すことを優先して書きました。
その時は特定のハンドラというか、特定の場所でRubyをフックできるだけなんですけど、まぁまぁ一応内部を制御しているという意味合いではあるので、そこは急いで出すことを優先したというのがありますね。

まつもと nginxもすぐあとに出ましたよね、mod_mrubyだと。

松本氏 そうですね。mod_mrubyを触ってたら、最近nginxも流行っていて、当然みんな同じようなことをしたいという声が出るのも予想してたので、それより早く実装してしまおうと思いました。
mod_mrubyを開発しながらなので、mod_mrubyをまず設計しながら実装して、それをプロトタイプというか、オリジナルの設計として、その内容をどんどんngx_mrubyにも似たような設計で実装していくというスタイルをとったので、ちょっと2ヵ月、3ヵ月ぐらいの差はありましたけど。mod_mrubyをつくって、その設計をどんどん移していって、2ヵ月後ぐらいにngx_mrubyを出しました。