0025 号 巻頭言

前に進むために

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

今号は、 とうとうリリースされた Ruby 1.9.1 について、ネット上から関連情報を拾い集めた Ruby 1.9.1 の歩き方、 1.9 の目玉の一つとも言える M17N 対応について様々な角度から解説を試みた Ruby M17N の設計と実装、 1.8 と 1.9 とのベンチマーク結果の比較から、速度と言語の関係を考える Ruby 1.9 で Web アプリを想定したベンチマークをとってみた、 同じくベンチマーク結果である「The Great Ruby Shootout」の翻訳記事である Ruby 仮想マシン・ガチンコバトル (2008 年 12 月版)、 GC について初心者向けのアルゴリズムの説明から最近の Ruby の GC のトピックまで手広く紹介する レアでアレなGCの話、 様々な活動を行っている RBC について、中の人が紹介する Ruby ビジネス・コモンズ(RBC) および主催勉強会の紹介、 Ruby に関する学会での発表を紹介する 学術会議とRuby、 毎度お馴染み、詳細な前回の解説がうれしい るびまゴルフ 【第 5 回】、 少々時間があいてしまったが、RubyConf2008 の模様を報告する Ruby Conference 2008 レポート、 また、最近も開催が相次いでいる地域 Ruby 会議の報告として RegionalRubyKaigi レポート (02) 札幌 Ruby 会議 01RegionalRubyKaigi レポート (03) 関西 Ruby 会議 01、 最近なぜか Ruby 本の新刊ラッシュで各出版社様にご協力をいただいて、もろもろプレゼントさせていただくことになった 0025 号 読者プレゼント、 そして Ruby 関連ニュースRuby 関連イベント といった、幅広いラインナップとなった。


既報の通り、ついに、Ruby 1.9.1 がリリースされた。 このるびまの編集やその他の仕事もこなしながら YARV の開発にいそしみ、 Ruby 本体のコアを置き換えることに成功した笹田さん、 難しい判断をこなしながら、安定して使えるようになるまで リリースを先導したリリースマネージャの Yugui さん、 そしてもちろん、長い間いろんな方からいろんな叱咤激励を受けつつ、 最近では Ruby の開発以外の様々な仕事が増えているようにも見受けられる中、 開発を続けられてきたまつもとさんを始め、何度も開発者会議を行いながら 仕様の検討とコードの改良にいそしんでいたコミッターの方々や、 バグ報告やパッチ提供をされた多くの方々の尽力により、 新しい Ruby を広く利用できるようになった。 リリースに至るまでに関わった多くの方々の努力に、心からの感謝の言葉を捧げたい。 本当に、本当におつかれさまでした。

新井素子の初期の長編に『扉を開けて』という作品がある。 これは 1980 年に発表されたもので、一時は入手困難だったが、2004 年に新装版が刊行されている。新装版はイラストが羽海野チカになっており、彼女の作品に対する思い入れの深さは本人のblogに記されている

話の基本線はオーソドックスな異世界ファンタジー、と言ってよいだろう。 主人公の女子大生と、大学の友人達(ちょっと超能力を持っていたりする)が、 ひょんな時空の歪みから現代とはまったく異なるファンタジーの世界に飛ばされ、 そこで戦いに巻き込まれながらも、成長を果たす。……今となってはありがちな物語と言えるかもしれないが、1980 年の少女小説界ではそれなりに目新しいものであった。

さて、物語は終盤、ミステリ的な謎解きの要素も交えながら核心に迫る。 そこで主人公達が見出すのは、多くの人を巻き込みながらも、 変わることをやめた世界に再び変化を起こそうとする、一人の人間の思いだった。

 「そんな……治にいて乱をわざわざ望まなくても……」
  声がかすれていた、あたし。
 「治? 眠り続けることが? ほどほどの満足にひたりきることが? 何もしないことが?
 【略】もっと平和的ないい方法があったのかも知れません。けれど――ことの是非はおいて、
 私は扉を開けたかった。前へ進みたかった。眠り続けるのは嫌だった」
  (新井素子『扉を開けて』より)

彼は主人公たちを巻き込むことを含め、全てを意図した人物だった。 彼の行動の結果、永く停滞していた歴史は再び動き出した。が、その彼の思惑の成就のために、数多くの罪もない人々の血が流された。

  思い出していた。ディミダの台詞。明日は今日と違う日だから明日なのだ。違う日だから……
 「あたしが……【略】、あなたを許さないと言ったら? あなたの論理はある面で正しいかも
 知れない。けれど――あなたが歴史の扉を開ける為に使ったのは、生きている人間よ」
 「そう。歴史は生きている人間が動いてできるのです」
 「どうして……」
  声がふるえる。
 「どうしてそんなことが言えるの! あなた、人間を何だと思ってるのよ! 生きるって
 何だと思ってるのよ!」
 「前に進むことです」
  (同上)

主人公たちは反発を覚えながらも、彼の思いには共感していく。 彼女らはみな、元の(通常の)世界では、自分たちの能力の異端さ故に不利益を被っていた。 けれども、その能力をおおっぴらにすることはなく、 隠れて生きることを望み、世間と折り合いをつけていこうとしていた。 しかし、踏み込んでしまった異世界で、同じく異端でありながら、 けれどもそれを打ち破ろうとあがく人々と出会った。出会ってしまった。 その体験は、主人公たちを少しずつ、けれども確実に変えていく。

Ruby 1.9.1 がリリースされた。1.9.1 は、「1.8」から「1.9」へと、単にマイナーバージョンが 一つ増えただけに見えるかもしれない。が、それはあまり適切な理解ではない。 1.9 系の Ruby は、「2.0」に含めようとした機能を先取りしたというか、 むしろ「2.0」に取り入れようとした機能の一部をとりこめなかったために 1.x という名前になったとも言うべき、1.8 系までとは大きく異なる、新しい Ruby である。

そのため、一部機能については互換性がなく、自動で移行できる仕組みも提供されていない。 そこまで準備する労力を割けなかった、ということの結果でもあるが、 その提供を省いたとしても、1.9 系をリリースすることに意味があるという 判断がなされている、とも言えるだろう。

けれども、少なくない既存 Ruby ユーザ、とりわけ Ruby アプリケーションのユーザが期待しているのは、 互換性を保ちながら、そのまま早くなったり効率が良くなったり便利な機能が増えているような Ruby だろう。 バージョンを上げたため動かなくなったアプリケーションに施す修正作業は、 あまり生産的な仕事をしているようには思いがたい。 ただでさえメモリと計算速度が日々向上し、 ハードを変えれば相対的に効率化するように思われる現在、 互換性を犠牲にしてまで大きく変えることを好まないという意見もあるだろう。

まつもとさんはよく、オープンソースをサメにたとえて、泳ぎ続けないと死んでしまう、 といった言い方をしている。しかし、それはおおむね開発者のことで、 ユーザはそこまで泳ぎたい、と思っていないかもしれない。 であれば、1.9 系のリリースにあたっては、 ユーザから見た「変わり続けることの価値」を考える必要がある。 それは何か。

細かな理由はいくつもある。 YARV や M17N、 Enumerable の整理やメモリ効率など、そして数えきれないほどの 細かい改善が 1.9 には含まれている。 ただ、その背後にある新しい Ruby の意義をあえて一言でまとめるならば、「前へ進む」ということだろう。

Ruby がこれからもプログラミングに楽しさをもたらす言語としてあり続けるのであれば、 過去のユーザだけではなく、未来のユーザに対しても開かれていなければならない。 それは、既存ユーザは使い慣れていても、新しい発想のもとでこれから始めるユーザに とっては使いづらいものや、 他の新しい言語や環境で生まれた動きを追いかけるユーザにとって障害になるものを 取り除くべきだということである。たとえそれが互換性を損ねたとしても、である。 それは内部的な実装についても同じ様に当てはまる。 光栄なことに、他の言語も Ruby を参考にするようになった今日、 Ruby に求められる「たのしさ」「使いやすさ」のハードルはさらに高くなっている。 新しい Ruby が目指そうとしているゴールは、そのハードルを越えたところにある。

前に進むこと。

新しい何かを望むこと。

そして、そこに今までのもの以上の価値があることを信じて、進むこと。

変えるべきではないものある。 けれど、変えるべきと判断したならば、 変えることを望むのであれば、 そこから得られるものは、既存のままでは得られることのできなかった、なにものかに違いない。

まだ 1.9 では動かないライブラリの山を前にすると、 現状の 1.9 では、いますぐにメリットを享受できる人は少ないかもしれないと思ってしまいがちになる。 けれども、その先にある未来に出会えるであろうメリットは、 十分に大きいことは期待してもいいはずだ。その未来こそが、ユーザにとっての Ruby 1.9 系の価値である。

  うん、あたしも。起きてみようかと思う。前へ進んでみたいと思う。扉を開けてみせる。
 今日と違った明日を手に入れる。
  (同上)

ついに、Ruby 1.9.1 がリリースされた。リリースに至るまでに尽力された方々に敬意を表しつつ、 私たちも、1.9 を使い始めようかと思う。前に進むために。今日と違った明日を手に入れるために。

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