Seam vs. SAStruts

悩むんだなぁ。Webフレームワークに何を使うか。

今まではStrutsを軽くラップしてるフレームワーク*1があって、でもうまくラップできてなくて、あいかわらず設定ファイル地獄で、時には二重管理をしていて、Actionにビジネスロジック書きまくりな感じで(時にはActionからSQLを発行していて)、プロジェクトごとにcloseし忘れの不具合があったりして、という感じのプロジェクトが多かった。とりあえず動くし、実績あるし、設定ファイル多いけど手順はわかってるし、だから使っているという感じか。

そして、ひとつのプロジェクトが終わったとしても、そのプロジェクトの反省をもとにフレームワーク部分をどう改良するか(どういうものを採用して、何を捨てるか)をじっくりと検討する暇もなく次にプロジェクトに入ることになる。そうなるとどうしたって「問題はあるが実績のあるフレームワーク」を使い続けることになる。新しいフレームワークを検討する時間があったとしても、上の人は新しいもの(枯れていないもの)を嫌う。でもたぶんどこもそうなんじゃないだろうか。

枯れていないものはリスキーだ。それはわかる。顧客に迷惑がかかっていはいけない。
でも、枯れてるからといって、いつまでたっても今のままのほうが僕は抵抗がある。
枯れていない、枯れているも程度の問題で、それを見極める能力や問題が起こったときの対処能力があるのがSEじゃないのか。それに何も「新しい」のが理由で使おうと言ってるんじゃない。メリットがあると感じるから使おうと思うのだ。

今、考えているのは「JBoss Seam(EJB前提で)」と「SAStruts」。
どちらも今までより開発がラクになりそうなニオイがする。

実際問題、案件の背景や状況としては以下のとおり。

  • 新規案件(もちろんJava)
  • JBoss AS をアプリケーションサーバとして使う(政治的な理由)
  • JBoss 製品を使っていきなさい的な雰囲気がある(が、強制ではない)
  • Strutsを使ったことのある技術者はまわりにいる(Strutsを理解しているかどうかは別)
  • ぼく自身もStrustを使ったことはあるが、EJBは2.xも3.0も使ったことがない。
  • JSP/Servletだけでも実現可能な要件

実は、まだどっちも試したことない。Web上で調べた情報では共通点としては、

  • POJOベース。これでJUnitでのテストがしやすいぜ!(JUnitを使っている開発者って実は現場にはあまりいないのだが。。)
  • トランザクションは開発者は意識しなくてよい(EJBの場合は当たり前だけど)
  • 意識はしないけど、両方DIを利用している
  • 実績はどっちもそんなにない

まだ決めていないが気持ちはSAStrutsに向いている。理由としては

  • なんといっても日本語情報が多い(ぼくは英語でもがんばって読むが、開発者が英語を読めない人が多い)
  • HOT deploy 最高
  • Strutsを知っていたらなじみやすい
  • サンプルがおおい
  • id:higayasuo さんのブログを読んでいたら現場を理解してくれてそうな感じがある

JBoss Seam を捨てきれない理由は

  • Java開発者としてEJB(JSFも) は理解しておきたいな
  • EJB だとコンテナが勝手にしてくれるのはそりゃラクになるだろう
  • JBoss Developer Studio を使えばそれなりにラクにはなるだろうな
  • Conversation Context は使いたくなるシチュエーションがでてくるかも(でもこれなしでほかのいろんなサイトが成立してるわけだけど)

ま、自分で両方使ってみるのが一番だな。Seam を HOT deploy を使って開発できればなぁ。

にしても、http://event.seasarfoundation.org/sc2008spring/Session 行きたかったな。

追記:

  • SeamはSeamTestというクラスがあるがTestNGベースというのがアレだな。

*1:社内標準ってわけじゃなくてプロジェクト個別で作ったっぽいの