Rubyの開発は、大きく2つの版に分けて行われている。1つは、現在広く使われているVer.1.8系で、もう1つが、積極的に機能の改良や仕様変更などが行われる「次世代版」である。次世代版については、以前からまつもとが「Rite」という名前で呼んでいた完成イメージがあり、これが次期バージョンという意味で「Ruby 2.0」と呼ばれてきた。Riteは、Rubyの進化形として大いに期待を集めていたが、しかし、そのすべて実装するにはなお時間がかかりそうな情勢になってきたため、Riteを目指して開発されているものをある程度のところで取りまとめてリリースしようという機運が高まってきた。それが「Ver.1.9.1」と呼ばれるものである。
一方、現行のVer.1.8系も、機能追加はせずにバグフィックスのみを行う「安定版」と、Ver.1.8系としての互換性を維持したまま、有用な機能は追加、拡張していく「開発版」という2つの流れがある。今回の「禅譲」によって、Ver.1.8の安定版、開発版にそれぞれリリースメンテナーが就任し、まつもとは次世代版の開発に専念できることになった。
なお、Rubyの安定版は、これまでVer.1.6、Ver.1.8のように2番目の数字として偶数が当てられてきたが、Ver.1.9からはそのポリシーが変更され、奇数も利用されることになる。すなわち、Ver.1.9.1がリリースされれば、それが、Ver.1.8に代わって広く使われることを想定された「現行バージョン」となる。
―― 来年のクリスマスにリリースされる次期バージョンというのは、「2.0」になるかどうかは、まだ分からない?
まつもと なるかもしれないし、ならないかもしれない。まだ分かりません。今のままだとVer.1.9.1としてリリースするつもりです。ただ、周囲から「現在1.9.1と呼んでいるものを2.0にして、これまで2.0といってきたものを3.0にした方が良いのではないか」といわれて心が動いているところです。1.8から1.9への変更はそれなりに大きいので、2.0と呼びたい人の気持ちも分かります。とはいえ、これまでずっと「2.0」という名前でもっと違うものを出すという話をしてきているので、理屈としては分かるんだけど、心理的な抵抗が……(笑)。まぁ、まだ先のことだから、もう少し考えてみようと思っています。
―― その「心理的な抵抗」というのは、あまりバージョン番号を上げたくないということ?
まつもと それもあるんだけど、やっぱり、いままでずっといい続けてきたこと(Ver.1.9とVer.2.0)をあっさり覆しちゃうことに対する抵抗ということですよね。
―― オープンソースソフトウェアの開発者は、バージョン番号をむやみに上げたがらず、小刻みなバージョン番号に固執するような傾向があるように思うのですが、これはどうしてでしょうか? 例えば毎年Ver.2、Ver.3、Ver.4と上げていっても、別に構わないと思うのですが。
まつもと うーん、どうなんでしょうね……。確かに、Ver.はじめからVer.2にするような場合は何か大きなことをしないといけないなというような、プレッシャーのようなものはあるかもしれません。ただオープンソースソフトウェアの場合、コマーシャル製品とは違って、新しいものであることをことさらに強調するマーケティング的なプレッシャーはないので、バージョン番号をガンガン上げるニーズがないということもあります。
―― なるほど。
まつもと Rubyの場合は別の理由もあります。僕は、Rubyのバージョンは1桁にしかしないと宣言しているんですよ。
―― ということは、Ruby Ver.10というのは、あり得ない?
まつもと ないです。バージョン番号は2桁にはしないと宣言したので。そのためRubyの場合、バージョン番号は実は有限のリソースなんです。だからバージョン番号は大事に使わないと(笑)。
―― 2桁にしないというのは、どうしてですか?
まつもと 2桁以上を許してしまうと、バージョン番号をアルファベット順でソートしたときに、Ver.1.1の次が、Ver.1.2ではなく、Ver.1.10になってしまうので(笑)。ということで、Rubyで用いるバージョン番号は1桁にすると宣言しているわけです。
―― なるほど。
まつもと プログラミング言語というものは、一般にほかのソフトウェアに比べて寿命はかなり長くて、10年経ってやっとみんなに知られるようになりました……というようなペースですから、寿命の長さを考えると、バージョン番号を浪費することには抵抗があります。普通のアプリケーションだと、例えば4、5年もすれば「次世代のプロジェクトにしましょう」という話になったりしてバージョン番号を消費しやすいでしょうけど。
Copyright © ITmedia, Inc. All Rights Reserved.