ひがやすを技術ブログ

電通国際情報サービスのプログラマ

Strutsをなめんな

Strutsがいかにだめなフレームワークかという話。
ではなくて、Strutsに文句を言う前に、Webフレームワークを理解してから、批判しろという話。
Webフレームワークのやってることを超簡単に説明すると次のようになります。

  • リクエストが飛んできたときに、URLに関連付けられているコントローラオブジェクトを見つける。
  • リクエストのパラメータを何らかのオブジェクトにつめる。
  • 入力値のバリデーションを行なう。
    • NGなら特定のURLに遷移する。
  • コントローラオブジェクトにリクエストのパラメータをつめたオブジェクトを設定する。
  • コントローラの特定のメソッドを呼び出す。
  • 特定のURLに遷移する。

フレームワークがやってくれることを自前でやってもいいでしょう。自前でやってもやることは同じです。
Strutsは、上記のことを淡々とやってくれる薄いフレームワークなのです。Strutsのだめなところは、上記のことをすべて設定ファイルに書かなければいけないことで、それ以外は、無駄なことはほとんどしていない見通しの良いフレームワークです。
Strutsは、もっと見直されていい。設定ファイルを書く必要をなくして、HOT deployをサポートすることで、弱点は解消され、非常に使いやすいフレームワークに生まれ変わります。そういう発想で作られたのが、SAStrutsです。
Struts以降さまざまなWebフレームワークがStrutsに挑戦し、敗れたのはなぜか。多くのフレームワークは、プラスアルファの部分を多く出そうとして、余分なお世話として判断されてしまったのではないでしょうか。薄くすればするほど、Strutsに似てくるしね。
Strutsは、いろいろ古いところもあるけど、そんな表面的なことは、いくらでも変えられます。Strutsを批判する人は、「Strutsは、Webフレームワークの本質的に必要なことを無駄なく実装したフレームワーク」だということをもう一度思い出すべきです。
追記:
設定ファイルや、アクションとアクションフォームに分離されていることや、特定のクラスを継承しないといけないことや、URLの.doがかっこ悪いとか、そんなことは、Strutsの本質ではなく枝葉のことです。なぜ、本質ではないと言い切れるのか。
Struts本体にまったく手を入れることなく変えることができるからです。本質的なことは変えることができない。SAStrutsの存在がその証拠。本質的なことと、そうでないことをきちんと区別できることは非常に大切なことです。