まつもとゆきひろ氏が開発したプログラミング言語「Ruby」は2013年2月24日、開発を始めて20周年のタイミングで、バージョン2.0がリリースされた。Ruby2.0の実現までこぎ着けた、これまでの取り組みと、今後の期待について聞いた。

(聞き手は安東 一真=日経Linux


生誕20周年で、Ruby2.0がついにリリースされました(関連記事:Ruby 2.0正式リリース、20周年を記念する5年ぶりのメジャーバージョン)。最新版にあえて点数を付ければ何点でしょうか。

 「90点」ぐらいだと思います。90点なら合格点でしょう。

 何でもそうですが、80点まではすぐ行くものです。Rubyも、1996年にリリースしたバージョン1.0で80点を取れていたと思います。しかし、それを90点に上げていくのはかなり大変で、どんどん難しくなっていきます。実際、Rubyは20年掛かりました。

 Ruby2.0の主要な新機能に、(ラベルで引数を指定できる)「キーワード引数」、(クラスの拡張を容易にする)「Module#prepend」、「Refinement」という3つがあります。この3つはぜひ提供したいと思っていたのですが、その意思を表明したのは10年前のRuby国際会議「Ruby Conference 2003」が最初でした。10年掛けて、ようやくそれが実現できました。

 現在の90点を100点に近づけていくのは、もうほとんど不可能な領域じゃないかな。言語仕様としては、特にそう思います。Rubyがこれだけ普及して、互換性が最重要視されていますし。それでも改良をやめると言語は死んでしまいます。今後は、主に実装面の改善を続け、実行速度を高速化したり、マルチCPUへの対応を強化したりしていく予定です。

20周年というきっかけが新機能を実現させた

言語をそこまで完成させていく難しさはどこにあるのでしょうか。

 言語が実際に利用され、一定の規模を超えると、とても1人では開発できなくなります。オープンソースソフトウエア(OSS)として成功するには、コミュニティーを機能させていく必要があり、実際、Rubyはコミュニティーの力でここまで成長してきました。

 しかし1人で開発できないということは、1人では決められないし、勝手に新機能を実装するわけにもいかないということです。そもそもRubyのコミュニティーは誰でもフェアーに参加できることを基本原則としています。言語のデザインって本当に楽しい。皆に参加してほしいのです。

 Rubyの場合、バージョン1.8までは僕が実装の隅々まで理解していて、新機能を入れるなら、どこを直せばいいというのが想像できました。しかし、(2007年にリリースした)1.9では、新しい仮想マシン(VM)として笹田君が開発した「YARV」を採用するなど、自分では中に手を付けられなくなった。そこは大きかったですね。

 自分で手を出せないということは、人に作ってもらわないといけない。モチベーションを持ってもらうことが大事なのです。

今回の新機能を実現できたモチベーションは何だったのでしょう。

 20周年の今年、2.0をリリースすると2011年に僕が宣言したのが、大きなモチベーションになりました。ずっとバージョン1.XだったRubyを2.0にするのです。どんな機能を入れるべきかという議論が起こり、実際のアイデアと実装がパタパタっと出てきました。

 実際、2.0の3つの新機能は、それぞれ僕以外の違う人が開発しました。Rubyのコミュニティーは20周年というようなイベントが大好きなんですよ。「イベント駆動開発」などと呼んでいます。もちろん、本来の意味と違いますよ(笑)。