0019 号 巻頭言

エンタープライズと Ruby

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

今号は、単なる画像描画ライブラリというよりも Display PostScript や Quartz の代替を狙うべく X 向けに開発が進められた Xr がマルチプラットフォーム化したライブラリ cairo と、その Ruby binding である rcairo を紹介する 「cairo: 2 次元画像描画ライブラリ」、 前号に引き続き Ruby/SDL を使い、画面表示や音楽出力なども行う 「Ruby/SDL で始めるゲームプログラミング【後編】」 、今更のように見えても実はつまづきやすいポイントにもなっている正規表現について解説する 「標準添付ライブラリ紹介 【第 12 回】 正規表現 (1)」 、歴史も古くマニアックな言語として知っているひとにはひそかによく知られている APL とその後継のような言語 J を紹介する 「Rubyist のための他言語探訪 【第 12 回】 APL と J」 、Rails のパフォーマンスチューニングについて、なかなか聞けない突っ込んだ解説を行う 「RubyOnRails を使ってみる 【第 10 回】 パフォーマンスチューニング」 に加えて、 「カヤック星人からの (?) プレゼント」 などで構成されている。

なお、創刊以来毎号掲載を続けていた Rubyist Hotlinks は、 残念ながら休載させていただいた。次号での掲載をご期待いただきたい。


エンタープライズなひとびとによる、Ruby へのアプローチが加速している、ような気がしている。 『Java から Ruby へ』を読んでいる人も増えているようだし、 また Java を使っているけれど Ruby に興味がある、という方にお会いする機会も多い。

しかしながら、そういう方々から聞こえてくるのは肯定的な言葉だけではない。 Ruby の現在の実力は認めるにしても、 Ruby の今後の発展についても、不安を隠そうとしない人も少なくない。 とりわけ、Ruby をとりまく体制について、物足りなく感じられているようである。 ようするに、開発体制の基盤が不安定かつ脆弱ではないか、ということだ。

以前にも書いた通り、現在の Ruby の開発のエコシステムは、 外部からの潤沢な資金提供がないまま行われている。 部分的には IPA からの資金が未踏などを通して使われたこともあるが、 あくまで個人に対する支援であり、 Ruby の開発・運用体制そのものへの長期的な基盤ではなかった。

まつもとさん自身については、Ruby の開発に専念できるよう、 NaCl が全面的に協力している (らしい。あんまり詳しくは聞いたことないけど)。 とはいえ、いきなり NaCl が巨大企業にでもならない限り、 まつもとさん以外も含めた Ruby の開発そのものの基盤となることはなさそうに見える。

とはいえ、そのような不安を表明する人も、何か具体的な心配をしているかというと、そういうわけでもないようにも感じる。 要するに Java や C/C++、C# などと比較すると貧弱に見える、という話なのかもしれない。

落ち着いて考えてみる。 あるソフトウェアにとって、企業がその開発の安定した基盤であるには、 単に「そのソフトウェアの開発に必要な資金や雇用を提供する」というだけではなく、 「そのソフトウェアが事業に結びついており、収益が見込まれる」という必要があるのではないか。 そうでなければ、たまたま誰かの思いつきでどこかの企業が多額の支援を行ったとしても、 いつ何がきっかけで止めてしまうかわからない。 それでは単なる任意団体による支援と変わらない。 単なる企業の余芸以上のものが期待されるはずだ。

さらに言えば、ある時点で事業に結びついているというだけではまだ信頼が足りないかもしれない。 最近 Rails に色気を出している大手企業は、 確かに Ruby での開発に対してそれなりのコストをかけることになるだろう。 しかし、そのような企業にとり、Ruby はソリューションの一つでしかない。 上手くいかないことが明らかになれば、他のソリューションにあっさりと鞍替えすれば済む話である。 むしろ、顧客本位の立場を踏まえれば、よりリスクの多いソリューションにコストをかけ続けることは、企業経営上からしても良策とは言えないだろう。

正直なところ、 よく言われる「信頼できる開発体制」というのは、 実際には都合の良すぎる話というか、絵に描いた餅に聞こえなくもない。 せいぜいがすでに動いているものがずっと動き続けさせるといったような、 現状維持のことであり (もちろんそれはそれで重要なことであり、 それを実現するのは非常に困難であることはよくわかるが)、 新興技術としての Ruby に求められる「開発」というのは、 未来に開けているものであることが同時に求められているのだから。 本当にほしいものは、具体的な開発体制のメンバー構成図などより、 「安心感」などといった、漠然としているがしかし手ごたえとして感じられるような、 そんなあいまいなものなのかもしれない。

そのような意味で、 SUN や MS による Ruby の処理系が出てきていることは非常に興味深い。 エンタープライズな分野で馴染みのある大企業が Ruby の処理系に手を出すというのは、Ruby そのものの将来性に対して、 一定以上の「安心感」を醸し出してくれる。 もっと言えば、仮に現状のまつもとさんを中心とした Ruby の開発体制に何かしら問題が生じたとしても、 SUN や MS がなんとかしてくれるに違いない、 というあいまいな安心感さえを演出してくれそうである。

もちろん、これはこれで深刻な問題になりかねない。 このような状況は、端的に言ってしまえば Ruby が分裂しかねない。 現在の Ruby の開発に関わっている人たちにとっても面白くないだろうし、 エンタープライズ向け Ruby を開発している人たちにとっても信頼を損ねる危険性もあり、本意ではないだろう。

だが、場合によっては、エンタープライズ向け Ruby とふつうの Ruby が分裂してもよいのではないか。

例えば、このような棲み分けはどうだろうか。 エンタープライズ向けの Ruby を、現在の C による Ruby ではなく、 JRuby などの別実装の Ruby に特化してしまう、という戦略である。 すなわち、安定版 Ruby を JRuby などの別実装にし、開発版 Ruby を CRuby にする、という位置づけである。 CRuby の中から安定し便利な機能を JRuby に取り込んでいくようにすれば、 Ruby に対して成熟した実装を期待する向きに対しては非常に強力なアピールとなるだろうし、 Ruby に新規の機能を実装を期待する向きにも背かずに済む。

開発コミュニティをひきつけるには、 開発そのものの面白さがなければならない。 単なるメンテナンスのみになってしまえば、 オープンソースでボランティア的に活動する開発者を惹きつけることは難しいだろう。 現在の Ruby の開発に関わっている人々は、明らかに 1.9 や 2.0 といった、 新しい Ruby に向かっている。 その一方で、大規模案件に Ruby を適用したいユーザにとっては、 「今よりちょっと機能が追加され、安定した 1.8 系」という、 開発の先端から見れば「過去」の Ruby に向かっているように見える。

このように、企業内で開発に従事するプログラマと、 オープンソースコミュニティで活動するプログラマとでは、 そのモチベーションの源泉や報酬が異なりすぎている。 であればいっそ、役割を分担してしまうほうがお互い幸せになる可能性もありそうである。

もっとも、このような役割分担は、fork の危険性を避けられない。 JRuby 等にエンタープライズ寄りの独自機能が増えてしまい、 CRuby からの機能の導入が落ち着いてしまえば、 いつの間にがその二つが別物になってしまう危険性があるだろう。 また、エンタープライズ向け Ruby 間での言語仕様の取りまとめも困難だろう。 Java を巡る SUN と MS の対立と分裂は記憶に新しい。 あれの二の舞を演じられて喜ぶ人はいないだろう。

それでも、Ruby の柔軟性があれば、 互換レイヤーなどによる互換性の提供もさほど困難ではないかもしれない。 また、Ruby をベースにした、一種の方言のようなものが生まれることも、 プログラミング言語好きから見れば興味の対象となるものでもある。

個人的には、Rails のような強力なアプリが出てきてしまえば、 Ruby の言語処理系自体の開発は、むしろ停滞することを予想していた。 しかし、現実はその反対で、むしろそのようなアプリの登場が、Ruby 処理系に対する様々な要望を生み出し、 それが Ruby 処理系に関する動きを加速させていくようである。 まだまだ Ruby 界隈はたのしいことが起こりそうであるなどと、 他人事のような顔をして言いたくなった。


最後に、余談ながら。

この文章は、いよいよ開催間近となった日本 Ruby 会議 2007 の会場に近い喫茶店で書き始めた。2 年ほど前に、るびま第 6 号の巻頭言を推敲していた場所である。

2 年の歳月を経て、Ruby はここまでたどり着いたのかと、 Java と Ruby の間を走り抜け、走り去っていった人のことを思い浮かべながら、 この文章を書いている。

もしも今、生きていれば、どんな文章を書いてくれたのだろう。 どんなライブラリを作っていたのだろう。 どんな記事をるびまに寄稿してくれたのだろう。 どんな発表を RubyKaigi のために依頼できたのだろう。 ――そんなことを考えながら、この文章を書いている。

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