http://martinfowler.com/bliki/EvaluatingRuby.html

ここの読者なら世の中でRubyが騒ぎになっていることをご存知だと思う。 特にRailsというWebアプリケーションフレームワークは大騒ぎだ。 Railsはプログラミングの未来を表したものだという人もいれば、 危険な流れだという人もいる。

私がRubyに触れたのは数年前のことだ。 達人たちにすすめられて、興味を持つようになった。 そしてすぐにお気に入りのスクリプト言語となった。 そのうちRubyを使ってこのサイトのプロダクトを作るようになった。 たとえばこのblikiがそうだ。 諸君、私はRubyが大好きだ。

ただ、私がRubyを好きなことと、Rubyをクライアントのために使うかというのは別問題だ。 クライアントのために使えるかどうかは、Rubyの機能を評価することによって判断できるだろう。 だがこれは、動的型付け、規約>設定(convention over configuration)、プロセスvsスレッドなどといった個々の事項の良い点、悪い点を議論していくことになる。 このような議論は確かに有益ではあるが、もっと慎重になったほうがよいだろう。 このような手法では判断できない事項も数多く存在する。 ゴルフ場で良いと聞いたテクノロジーを使ったことで、 クライアントのプロジェクトの進捗が大幅に遅れることもある。 テクノロジーを判断するには、経験に基づいたほうが良いだろう。 主流の環境で開発経験を行った実績があり、 Rubyを使ったことのある人間を探すのだ。

そのような人間は、本の著者にも見られる。 他の分野で実績を上げているが、 Rubyを使えばもうひとつ別の強みを得ることができると思っている人たちを、 Rubyは魅了してきた。 達人の2Justin GehtlandBruce TateDavid Gearyなどといった人たちがそうである。 Rubyを評価するには十分な面子ではないだろうか。 しかし、私のように視野の狭い人間は、同僚の意見を聞くかもしれない。 同僚ならばその人についてよく知っており、 関わったプロジェクトも簡単にチェックできる。

まだ時期尚早ではあるが、コメントできる程度にプロジェクトを経験してきた。 今のところRubyの評価は確実に高い。 「RubyはJavaやC#よりも格段に生産性が向上すると思いますか?」 という質問には、常に「はい」と答えてきた。 Rubyが適したプロジェクトでは生産性が確実に向上する。 あなたもRubyを試してみて欲しい。 もちろん、ここで重要なのは、何をもって「適している」と言えるかどうかだ。

ひとつ触れておきたいのは、Railsがよく用いられる、いわゆる典型的なWebアプリケーションのプロジェクトも経験したのだが、その他にも異なる構成要素のWebアプリケーションプロジェクトもいくつか経験してきた。

  • 売店で顧客が直接画面に触れる端末。これもRailsで動いている。UIはAjax的なWebフロントエンドとなっているが、ハードウェアデバイス、暗号化、異様なネットワーク構成なども扱った。これらはすべて、Linuxボックスのようなアプライアンスに格納されている。

  • バッチ処理のSQLの多くをRubyで記述することができる。Rubyの式はSQLに変換され、実際に使用される。フロントエンドにはRailsはあまり表れないが、これも典型的なRailsアプリケーションといえる。

  • 昔ながらの標準的なWebアプリケーションだが、フォーマットの異なるぐちゃぐちゃした大量のデータを扱う。派手派手な表やグラフなども扱う。

以上の3つのケースはどれも、 他のプラットフォームよりもいち早く、 機能および価値を提供することができた。 このことから私が言えるのは、 納期が短く、高い生産性が必要な場合は、 本格的にRubyの採用を考えてみるとよいということだ。

しかし、まだ疑問が残っている。 開発工程が進んでいくと問題が顕在化することはないかという点だ。 たとえば、引継ぎを行ったときなどだ。 Rubyの動的な側面と、ツールの不足が問題だという人間もいる。 Rubyのシンプルさがその差を補っているという人間もいる。 この点についてはまだ何とも言えない。 何か分かったら、あとで書く。

Cedric Beustが 「Rubyがいかに素晴らしかろうと、主流になることはないだろう」 と詳しく述べている。 その点については私も理解している。 私も含め、かつてのsmalltalkerたちは、現在の主流よりも生産性の高いプラットフォームを以前から知っているのである。 主流のプラットフォームだけを使うことが重要なのであれば、 今起きていることを目にするにはしばらく時間がかかることだろう。 道はいくらでもある。 主流を追いかけない人だってたくさんいるのだ

政治的な要因やコミュニケーションの要因によって開発効率が落ちているプロジェクトが多く存在する。Rubyの利点もこれでは台無しである。

とはいうものの、私は、スピード、即時性、生産性が重要であれば、 実案件にもRubyが使用できるものとますます確信してきている次第だ。