Ruby on Rails に行くまえに Seasar はどうなんでしょうか?

現在、Seasarは使わずに Java を中心に開発されている方で、Ruby on Rails を検討したり、移行できたら良いな・・・ と考えて方に向けて書いてます。
また私の立ち位置(ポジション)ですが、私はSeasarのコミッターではありませんが、私の会社はSeasar Foundationの団体会員です。また、以前に Seasar を使い SNS を開発した事があります。


http://www.seasar.org/images/seasar_banner.gif

Seasar プロダクト、例えば TeedaS2Dao は、以下の点でとても生産性の高いプロダクトだと思います。

  • Ruby on Rails で有名になった CoC(Convention Over Configuration:設定より規約) を追求する事で、XML設定ファイルや、凡庸なAPI 呼び出しを最小にし、 従来のJavaプログラムに比べると圧倒的に記述がコンパクトになります。
  • Seasarの基本機能であるAOP(アスペクト)を上手く使うと非本質的なコードをアプリ内から追い出せ、さらに生産性が上がります。
  • 従来のJavaでWebアプリを開発さる際に問題になった デプロイの煩雑さが無くなり、LL系言語(Perl,Ruby....)での開発のようにソースコードの変更が直ぐに実行(開発)環境に反映され快適な開発が可能になります。
  • アジャイル開発を行う上で重要な要素の1つテストコードの記述を簡単する S2TestCase, S2DaoTestCase
  • Java開発環境 Eclipse にはTeeda等の開発用プラグインがあり、Ruby on RailsのScaffoldのように開発環境のひな形を作成してくれたり、いくつかの気の利いた機能を提供してくれています。


http://www.ruby-assn.org/ruby-logo.jpg

それでは、Ruby on Rails に出来て Seasar に無いもの、出来ない事は 何でしょうか?

  • 豊富なプラグインRuby on Rails では Web アプリで 必要になりそうな機能、例えば ユーザー登録を含む認証機能、各種Web API系、携帯デバイスのサポートなどたくさんの機能がプラグインで提供されています。このような事が出来るのは、Rubyオープンクラスの威力だと思います。もちろん Seasar でもAOPを使うことでプラグインを作る事は可能ではありますが、そのような 風習(?) は流行ってないようです。
  • 自分たちのプロジェクト専用の DSL や コードジェネレータを作成する事。 これも Seasar でも可能だとは思いますが難易度は高いかも知れません。

私の意見

現在、 Java で開発している方が、Ruby on Rails に移行するには

  • Ruby の学習。 RubyLispSmalltalk から持ち込まれた C/Java には無い要素が多数あります。
  • ユニットテストの徹底。 Ruby は動的な言語ですから実行してみないと間違いが判りません。実務で使うにはユニットテストは必須だと思います。
  • 開発スタイルの検討。 Ruby には Perl同様に 多様性を認める言語です。OO的、関数言語的、魔術的・・・いろいろなスタイルでコーディングできます。実務で使うには、なんらかのガイドラインが必要になるかと思います。
  • ドキュメント不足
  • IDE はまだ発展途上。 EclipseNetBeans をベースにした いくつかのIDEがありますが、Javaに比べると完成度はまだまだです
  • 大人数での開発スタイルの確立。 Ruby on Rails は、少人数のそれなりのレベルの開発者での開発には最高の効果を生み出すと言われていますが、Javaのように大人数での開発のスタイルはまだ確立されていません。


など大きな障壁が待っています。


高い生産性を求めているのであれば リスクの高い Ruby on Rails よりも Seasar などの、より進化した Javaフレームワークに注目した方が実りが多いのではないでしょうか?



Ruby on Rails を導入して成功するには 」へのブックマーク、コメントありがとうございます。私が思っている以上の反応があって驚いています。 ありがとうございます。 今回も ご意見を聞かせて下さい m(_ _)m