「JavaからRubyへ」を読んで

2007年6月11日 (月)

JavaからRubyへ ―マネージャのための実践移行ガイドを読んだ。これは題名のとおりJavaからRubyへの移行を強く勧める本。前半はJavaよりRubyがいかに開発効率が高いかが述べられ、後半は会社組織においてJavaからRubyへの移行を阻害する勢力への対応戦略が述べられている。その後半で、このブログの前回記事のJRubyそしてJython中のメインテーマのJRubyについて詳細に記述されているのには驚いた。共時性か。

私はひとりでソフトウェア開発をしているので、この本の後半は興味は無い。開発言語・フレームワークの決定権は私だからだ。前半の、JavaよりRubyがいかに優れているか、を興味深く読んだ。

ある動的言語(TCL,REXX,Python,Perl)と静的言語(Java,C++,C)の生産性を比較した研究報告によれば、なんと一番生産性の劣る言語はJavaで、最も高いのはPython。そしてその生産性は3倍違っていた、とのこと。どのような条件でJavaが最低だったのか知りたくその報告のURLにアクセスしてみたがアクセスできなかったのは残念である。

その生産性の悪さのひとつの原因として、かのJavaの神様Martin Fowler氏は、Javaフレームワークはアプリの本質の複雑性とは無関係の偶発的複雑性への対応を持ち込みすぎている、と述べているとか。確かにEJBのとてつもない複雑性はその例だろう。だいたい、EJBは分散環境でのWEBアプリに適している、と教科書には書いてあるが、分散環境なんて世界レベルの巨大システム以外には無用の長物だ。

そして著者は、「軽量フレームワーク」を一般的に構成するSpring,Hibernateの学習の困難さにも言及している。そう、私もこれらはちょっと本を読んだだけで、使用する気にはなれなかった。必要時はSeasarを使用するつもりだった。

そして著者は、WEBアプリ開発にはRubyによる開発フレームワークであるRuby On Railsの開発効率がいかに高いか、を実例を挙げて熱く語っている。その開発効率の高さの主要因は、コーディングの少なさ、と。バグはコーディング量に比例する、とのこと。

確かに私も、JavaによるWEBアプリ開発では、Strutsを使用した際にコーディングの量の多さにはうんざりした。そしてパターン化できる部分は、Javaソースコードのジェネレータを作成し自動生成させたものだ。

なるほど、Javaの開発効率の悪さはわかった。私がなんとなく感じていたとおりだ。そして著者によれば、実行速度もRubyのほうが速い場合もあるとか。これは意外だ。私は通常の(Cによる)Ruby実行環境は遅いもの、と思い込んでいたからだ。もしRubyがPythonレベルの実行速度なら、Rubyが遅いと書いたこのブログ中での各記事を訂正しなければならない。

ただ私は、Ruby On Railsにはすぐには飛びつくつもりはない。PythonでRuby On Rails類似のフレームワークであるTurboGearsと、ほとんど日本語情報は無いがPylonsで小規模WEBアプリを組んでみるつもりだ。その後にRuby On Railsを試してみて、どれが最も開発効率が高いか、結論を出すつもりだ。

 

QLOOK ANALYTICS