まつもとゆきひろ氏が開発したプログラミング言語「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周年というようなイベントが大好きなんですよ。「イベント駆動開発」などと呼んでいます。もちろん、本来の意味と違いますよ(笑)。

この先は会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら