ある人「あなたのやりたいことはなんですか?」
僕「複数あるWebサーバソフトウェアの拡張記述を統一したいです」
ある人「(それはさすがに無理だろ…)」
という感じで始まったmod_mrubyやngx_mrubyの開発ですが、今ではそれも夢では無い所まできています。当時は「mod_mrubyを作ってみようか」という記事からmod_mrubyの開発ははじまりました。
朧げにあったアイデアでは、「どうやって統一するのか?どんな言語にするのか?どうやって組み込むのか?え?そもそもそんな事無理では?」という感じでしたが、1年前に運良くmrubyがGitHubで公開されて以来、色々なアイデアのピースがはまっていき、いつの間にかそのアイデアが形になろうとしてきています。
GoogleでWebのパフォーマンスを研究・開発している超有名なIlya Grigorikさんに、以下のように言ってもらえたり、
mmmm..mruby everywhere: http://t.co/2VWTE2tp – awesome presentation by @merbist. mod_mruby looks awesome!
— Ilya Grigorik (@igrigorik) October 12, 2012
Apache httpd のmod_luaの中の人であるDaniel Grunoさんには以下のようなメールを頂いたり(参考:mod_mrubyをevent及びworker MPM(マルチスレッドモデル)に対応させた)、
やぁ、松本
mod_mrubyすごい面白そうだね。ベンチマーク結果もRubyって遅いはずなのにすごい早いじゃん。なんで?スライドとかブログを英語で書いてよ。それみて勉強するからさ。
ところで、preforkだと動くんだけど、workerやevent MPMじゃsegfault起こして落ちちゃうよ?スレッドセーフじゃないの?これからApache2.4とか2.5使う人は大概それらのスレッド型のMPMを使うだろうから、そっちをサポートして欲しいなぁ。
もしそれができたら、mod_luaと共存しつつ代替手段としてApache HTTP Serverに取り込むのも歓迎だよ。
ついでにApacheCon NAでmod_luaのこと話すから、ついでにmod_mrubyのことも話しておくよ。もし見に来てくれたら、Lua JIT版のmod_luaがいかに爆速か見せてあげるよ!
それにしても、ApacheConまでにスレッドセーフにしてくれないかなぁ、早くベンチマークとって比較したいぜ!
ダニエル
そして、mod_mrubyをevent及びworker MPM(マルチスレッドモデル)に対応させたで一応マルチスレッドに対応させて、ApacheCon NA 2013ではmod_luaとmod_mrubyの比較までして頂けました。
つい先日出た「まつもとゆきひろ直伝 組込Ruby「mruby」のすべて 総集編」というMatzさんの本でも、mrubyの応用例として紹介して頂きました。
RubyKaigi2013のbovi氏によるmrubyのセッションでも、最初にmod_mrubyを紹介して頂けたりと、最初は全くの無謀なアイデアだったものが、徐々に形になり、日本という枠を超えて、少しずつではありますが広がりつつあります。
このように、最初は全く見通しを立てることのできていなかった単なるアイデアが、あるきっかけで一気に形になっていくという流れの中に身を置けていることは非常に幸せだと思っています。
これから、さらに、VarnishやApache Traffic Server等にもmod_mrubyの仕様をベースに、できるだけ同じ記述でWebサーバの機能を拡張できるようにしていきたいと考えています。
そして、それぞれの「mrubyによるWebサーバ拡張インターフェイス」は、もちろん各サーバソフトウェアのコアにいつかは入れてもらえる所まで頑張りたいです。そして、それが今後のインターネットに貢献するまでには至らなくとも、何か爪あとぐらいは残すことはできるんじゃないかと思っています。
mod_mrubyやngx_mrubyのように、0だったものを1にすることは僕1人でもできたかもしれませんが、それをさらに100、1000とするためには、このプロジェクトに賛同していただける方々とみんなで協力してやっていく必要があると思っています。
Apache httpd、nginx、VarnishやApache Traffic Server等、Webサーバ技術に興味のある方は、一緒にGitHubの開発に参加してみませんか?そこからさらにmrubyの知識を得ることで、言語処理系や組み込み技術、さらには英語、GitHub、OSSコミュニティに関する知識も増えて、そのまま世界デビューすることができるかもしれません。
mod_mrubyも含めてOSの基本的な事からWebサーバ、そしてインターネットに関する研究をしたい人(特に学生)がいたら、いつでも研究室でお待ちしております。是非一緒にこういうわくわくするような研究をしましょう。
このプロジェクトが本当にインターネットに爪あとを残せるかどうかはわかりませんが、いつか各Webサーバソフトウェアのコアにこの技術がマージされ、それを使う人が増え、インターネットは自分のコードで動いているんだと孫に伝えられるような日を夢見て、共に開発してくれる人をGitHubでお待ちしております。