今すぐ欲しいものを作るならRuby、いつか欲しくなるものを作るならJava

 久しぶりにRubyでごりごりとCGIを書きました。それで思ったのですが、「今すぐ欲しいものを作るならRuby、いつか欲しくなるものを作るならJava」ということです。

 ちょっとRubyのブランクがあったので知らないだけなのかもしれませんが、例えば「これ、世界的に展開するならエラーメッセージとか多国語化しといたほうがいいかなぁ」と思うとRubyだと結構大変なのですよね。ロケールとどうやって解決するかな、とか、メッセージリソースはどう管理するかなとか。どちらともどうにでもしようがあるから逆に大変といいますか。その点JavaならResourceBundleを使えばいいわけです。

 逆にふつうの掲示板ぐらいの規模でStrutsとかJSFとか使うのは重厚壮大なんですよね。というか、StrutsとかJSFにとってふつうの掲示板というのは鬼門ですらあると思っています。ほら、VBだって、表示項目の数が決まっていない画面作るのって大変でしょう? ぺたぺた張っていけばいけばいいところを動的に生成するとかしなくちゃいけないわけですから。そういうケースではRubyで(というかLWLで)「えいやっ!」ってやってしまったほうが結局早くできると思います。これはRuby(ないしLWL)のほうがJavaよりも生産性が高いと単純に言っているのではなく、一人のデベロッパで隅々まで目の届く規模なればこそこの手が使えて結果的に早いということです。

 さらに逆に言えば、規模の大きいものを作るならJavaのほうが結果的な手間は少ないと思います。スケーラビリティといいますか。J2EEなんかは、一流の人たちが知恵を絞って考えた仕様なわけですから、例えば利用者の増加に伴って負荷分散のために複数のWebサーバで運用することになってもセッション管理で困るようなことも少ないわけです。でも、それは「いつか欲しい」ものであって、今欲しいものじゃないんですよね。

 だからこそ、特にWebシステムの設計には事業計画も重要なのだと思います。