0041 号 巻頭言

Rubyの20年を振り返って

Rubyist Magazine 第 41 号をお届けする。

今号は Ruby の 20 周年に合せた Ruby 2.0 リリースと同時刊行ということもあり、久々の大量の記事が寄せられた。 まず最初は、貴重な Windows コミッターの一人、たるいさんをお招きしての Rubyist Hotlinks 【第 31 回】 樽家昌也さん、 そしてついに公開された Ruby 2.0 の総力特集として、概要とメッセージを集めた冒頭の Ruby 2.0.0 リリース特集、 リリースの経緯がリリースマネージャの遠藤さんによって明かされる Ruby 2.0.0 リリースを振り返って、 キーワード引数について遠藤さんが紹介する Ruby 2.0.0 のキーワード引数、 Enumerable#lazy について原さんが紹介する 無限リストを map 可能にする Enumerable#lazy、 Refinements について前田修吾さんが紹介する Refinementsとは何だったのか、 DTrace について Aaron Patterson さんが紹介する Ruby 2.0.0 の DTrace の紹介、 GC の改善について nari さんが紹介する Ruby 2.0.0 の GC 改善、 require の高速化について樽家さんが紹介する Ruby 2.0.0 の require、 その他の細かい改良について、ささださんなるせさん yhara さんが紹介する Ruby 2.0.0 の注意点やその他の新機能、 そして今後の安定版のメンテナンスについて usa さんが紹介する Ruby 安定版の今後の保守の見通し と、これだけでも普段を超えたボリュームではないかと思わせるほどの充実した特集となった。

さらに特集以外の記事としても、 ursm さんによる Rails アプリケーションの「不吉な匂い」とその対策を具体例とともに解説する Ruby on Rails: The Bad Parts、 前号の須藤さんのコメントに咳さんが返答する Ruby コードの感想戦 【第 2 回】 WikiR、 なんと 2 年近くの時を経て、ついに続きが掲載されたささださんによる YARV Maniacs 【第 11 回】 最近の YARV の事情、 昨年 6 月に行われた EuRuKo 2012 を角谷さんがレポートする Euroko 2012 参加レポート、 昨年 12 月に行われた RubyConf Taiwan 2012 を hsbt さんがレポートする RubyConf Taiwan 旅行記、 また Regional RubyKaigi レポートとしては、今年 1 月に開催された東京 Ruby 会議 10 を 6 名の方々によりレポートする RegionalRubyKaigi レポート (33) 東京 Ruby 会議 10 と、20 周年を祝福するにふさわしい、圧倒的なボリュームでお届けする。


1993 年 2 月 24 日、この日が Ruby の命名日であると言われている。 そして、「Ruby は名前ができたときが誕生日」というルールにより、 Ruby の誕生日はこの 1993 年 2 月 24 日である、というのが公式見解である。 Ruby のすべては、この日に始まった。

そして、2013 年 2 月 24 日をもって、Ruby が 20 周年を迎えた。 あらためて、Ruby の発展に尽力された非常に多くの方々に、 心からお礼を申し上げたい。本当にありがとうございます。 この佳き日に、Ruby のこれまでを振り返ってみたい。

最近、日本の技術が大きく評価されたものとしては、 3 年前に地球に帰還し、小惑星イトカワのサンプル入手に 成功した小惑星探査機はやぶさの偉業が思い起こされる。 そのはやぶさは、そのミッションの詰め込み度とその素晴らしさを表現するために、 「ミッション達成度」として、全部できたら「100 点満点で 500 点」 という、すごい指標で採点され、そして最終的に 500 点を獲得した1

はやぶさのような世界的な記録が多々あるプロジェクトと比べるのは若干無理がある気もするが、 気持ちとしてははやぶさが 500 点なら Rubyも 500 点くらいとりたい。ということで、 Ruby が 20 年を費やして達成してきた「ミッション達成度」なるものを考えてみた。 はやぶさにならって、5 つのトピックに分けてご紹介したい。

実用的なプログラミング言語の開発

何を措いても重要なことは、Ruby が実用に耐えうるプログラミング言語となったことである。 もっとも、何が「実用」かは議論があるところで、実際、2000 年ごろには、Ruby は「実用」になるのか、 あるいは「Ruby (を含めたスクリプト言語)は仕事に使えるのか」、といった話題が出るくらいであった。 もっとも、そのような議論ができるくらいには実用にも使える言語にはなっていた、と言えるだろう (また、20 世紀末の時点でも、業務の一環で Ruby 製のツールを使っている、といった事例は数多くあった)。

もちろん、Ruby も最初はそこまで実用的であったわけではない。 変わった挙動を直したり、基本的なライブラリを整えたり、落ちる不具合を修正したりといった 地道な作業の繰り返しの中から、少しずつ実用性を高めてきた。 その長い継続があったからこそ、現在の Ruby の形がある。 まず最初に、この点を大きな達成と評価したい。

開発コミュニティの運営

次に重要な達成は、開発コミュニティを作り上げることができた、という点である。 これは、まつもとさんのリーダーシップ、コミュニティ運営能力と、 そこに集まった人々、とりわけコミッターの方々や、 コミッターではないにしてもその周囲で支えてきた人々の努力の賜物であると言える。

Ruby の開発コミュニティは Ruby の開発最初期から作られている。 Ruby のソースが最初に公開された 1995 年には ruby-list メーリングリストが 作られているし、それ以前にもクローズドな形で Ruby のα版を 試す ML もあった、とまつもとさんが語っている。

さらに、バージョン管理システムとして CVS が使われはじめたのが 1998 年、 Subversion に移行したのは 2006 年ごろのことだった。現在では github などを 使ってバージョン管理を行うのは当たり前、という風潮もあるが、 当時ではサーバの環境も自前で構築・運用する必要もあり、まだまだ苦労があった。 これにより、まつもとさん以外の方が開発に参加するための障害が大きく減ってきた。

また、ライブラリに関しても、単なるリンク集である Ruby Application Archive が公開された のが 1998 年ごろ、ホスティングも行う RubyForge ができたのが 2003 年、 さらに現在も広く使われるパッケージ管理システムの RubyGems の開発がはじまったのが 2004 年のことだった。

これらはライブラリの話であるが、Ruby 本体の開発の重要なところにもまつもとさん以外の方が参加 されるようになる。2007 年には Ruby の VM としてささださんが開発した YARV が本体にマージされた。 2008 年にはリリースマネージャとして Yugui さんが Ruby のリリースを統括することになった。

このように、まつもとさん以外の方の力が Ruby に加わることにより、Ruby の発展が加速された ことは間違いない。そのような「場」を作り上げることに成功したことも、 Ruby 開発コミュニティが成し得た大きな「達成」であると言える。

世界的な普及

そして上記 2 点を踏まえてできた達成として、広く世界に Ruby が普及させることができたことがある。

世界に広まったきっかけは、なんといっても 2000 年の Dave Thomas and Andy Hunt『Programming Ruby』 の刊行にある。しかもこの書籍は全文がネットで公開された。これにより、日本国外にも Ruby の存在が知れ渡った。その翌年、Ruby の初の国際カンファレンス、Ruby Conference 2001 が 行われたり、非営利団体である Ruby Central が発足するなどの動きも、この書籍から始まった 動きと言えるだろう。

Ruby が少しずつ広まっていく中で、もうひとつの大きなきっかけが生まれる。言うまでもなく、 2004 年に公開が開始された Ruby on Rails である。この Web アプリケーションフレームワークから、 Ruby が知る人ぞ知る言語から、誰もが当たり前のように知っている言語へとその位置を変えた。 それ以降の発展は、多くの方の知るところだろう。

もっとも、Ruby そのものは当初から世界に向かって開かれていた。 Ruby のホームページも 1997 年の時点ですでに存在し、リファレンスマニュアルにも 英語版があった。ソースコードのコメントも(少なかったとはいえ)日本語はなく、 英語のみになっていた。だからこそ、Dave Thomas が Ruby を発見できたとも言えるだろう。 その苦労が 10 年の歳月を経て大きく実った、ということもできる。

多様な処理系の実装

この辺りから 5 つに絞るのが難しくなってくるのだが、 Rails 以降の動きとして重要な達成として、 Ruby の処理系の実装が複数現れたことを挙げたい。

Java で動く JRuby が開発されている、という話は以前からあり、互換性はまだ低い、実用的な速度では動かない、 とも言われていた。あるいは Java で実装する以上、Java との親和性を重視するなら、 ruby との互換性はある程度犠牲にするのはやむを得ないのかもしれない。そんな風に思っていたところ、 メンテナーの変遷を経て、Charles Oliver Nutter と Thomas Enebo が開発を行うようになり、 次第に Ruby としての互換性を高め、ついには Rails までもそのまま動くようになった、 というニュースには驚愕の一言だった。

そして JRuby 以外にも、Rubinius や MacRuby、あるいは MagLev などが生まれ、 ruby が「CRuby」「MRI」などと呼ばれるようになるとは、とても考えられないことだった。

この「達成」のポイントは、まつもとさんや CRuby 開発者とは直接関係のないところで達成されたというところにある。 しかし、それはまつもとさん達の活動の評価を下げるものではない。 むしろ、そこまでしても自分の求める形で「Ruby」を使いたい、というところに、 Ruby の影響力の大きさが感じることができる。 実際、他の Ruby 処理系の実装において、CRuby との互換性の維持に多大な努力が払われている(ように見える)ことは、その傍証と言えるのではないか。

標準化と「官」との連携

最後に、これまで挙げてきたこととは少し変わった点として、 「官」の世界にまで Ruby が広がったことを挙げてみたい。

2006 年、まつもとさんが住む松江市が「Ruby City MATSUE プロジェクト」を立ち上げ、 「Ruby の街」としての地域ブランドの創出を目指す、というニュースは、 多くの Rubyist に驚きをもたらした。 それまでオープンソースソフトウェアが行政にコミットメントする、というのは、 例えば何かのソフトウェアがその行政機関に導入されるといったことくらいだった。 ソフトウェアを使った地域ブランドの創出、というのは聞いたことがなかった。 その先行きを心配したものだが、実際には目覚ましい活動を繰り広げ、 松江オープンソースラボの活用、 Ruby アソシエーションの発足と一般財団法人化、RubyWorld Conference の開催と、 現在に至るまで継続的な活動を展開している。

また、近年の大きな動きとしては、昨年まで行われた標準化作業がある。 もっとも、標準化の動機の一つとして、 官公庁や企業での入札要件として標準化されていることが大きなメリットになる、ということでもあった。

この動きは、まず 2008 年の、IPA による「Ruby の国際標準化に関する調査の請負契約」の公募があった。 そこから、原案の作成とレビューを経て、 2011 年に JIS X 3017 プログラミング言語 Ruby として JIS 規格が制定され、 さらに 2012 年、ISO/IEC 30170 として承認された。

これは技術的な成果とは異なるかもしれないが、 一つのオープンソースソフトウェアが、産官学を巻き込んだ大きな動きを作り上げた、 という意味で、これも大きな達成の一つとして取り上げておきたい。

 

以上、Ruby の達成したことを 5 つほどあげた。 もちろん、Ruby の業績はここに挙げたものにとどまるものではない。 そしてまた、今後もさらに大きな達成をなしうることも確信している。 これまでの Ruby を支えてきたまつもとさん、コミッターのみなさまを始めとする多くの方々に 心から感謝を示しつつ、今後の発展をともに楽しんでいきたい。

20 周年、おめでとうございます。これからもよろしくお願いいたします。

(るびま編集長 高橋征義)


  1. http://www.isas.jaxa.jp/j/enterp/missions/hayabusa/scenario.shtml