著作一覧 |
もちろん、そんなのはケースバイケースかつ人によるのだが、実感として結構、良い線をついているように思う。
5種類の開発方法を考える。
1. JSPタイプ1(1つのJSPで全部書く)
2. JSPタイプ0(JSPはまだリリースされていないので全部Servletで書く)
3. JSPタイプ2(MVCマルチレイヤで作る)
4. JSPタイプ2(MVCマルチレイヤで作る)のプロジェクトを組む
5. Sun Java CreatorとかWebSphere StudioとかでJSFで書く
1と2、5であれば、それほどRailsと変わらないと思う(特に1と5)。しかし、Railsの場合は、マルチレイヤでできている。したがって、後のメンテから、途中のやり直しから、要するに上から下まで一気通貫で書けない場合には、圧倒的に有利になる。そこまで含めれば4倍くらいの感じじゃなかろうか。どちらにしても5ならBookmark程度なら同じく10分(マシンが高速ならもっと早いかも)でWebアプリケーションができるね。打ち込む行数比較なら5のほうが少ない可能性も高そうだ。
でも意味ある比較の対象は、3と4だ。
しかし、4は既に異なる次元の話になっているから、結局は3の比較ということになる。
この時点で、気分的に既にRailsが1/10だなぁと思うよな、と思う。
行数よりもMとVとCの行き来の頭の切り替えコストが少ないと思うからだ。
そんな感じ。
別の見方をすると5って圧倒的なんだが(1,2,3との比較)なんかブレークしていないように見える。なんでだ? もちろんこっちが知らないだけってことはあるとは思うけど。
行数の比較は無意味だし、本気で定量化するなら、同一上位仕様のアプリケーションを条件を揃えて作って、最終的にバグが取れるまで+1回は数ページ規模の改訂まで含めて数値化しなきゃだめだろうから、思うかどうかにしか頼らないデカルト流儀。
で、いろいろ試すことで見えてきたのだが、開発者をマスで考えると(塊のマスなのだが、枡で量っての枡でも同じことになるのが実に皮肉だ)どうもJSPタイプ2のMVCは粒度に手ごろ感がある。それに比べるとIDE+JSFというのは危なげというのはありそうに思える。Railsにしてもそういう感は拭えない。たとえば、5人のチームで、2人がモデル担当、1人がコントローラ、1人がビュー、残り1で全体進行って可能か? すくなくてもそういう作業分担は不可能だ。(もちろん、人間なのだから可能なわけだが、それはあまりにばかげていて何の意味もない)
JSFもそちらに近い。もちろん、コントロール担当と、IDE担当と……と分担してできなくはないはずだが、やはりそういう分担には向かないと思える。Railsと同じように、1人の作業の中でクラスを分割していくことになるだろう。RowSetからアクティブレコード作ってモデルにして、ビューとコントローラをIDEの上では密結合という感じ(コントローラを2層に分けるというとより正確かな)。
1つには、JSPタイプ2のMVCに向くシステムでは、コントローラとモデルの間に非常に分厚いアプリケーションロジックが入るということがあるかも知れない。たぶん、ここの抜き出し易さが肝になるのではなかろうか。誰が抜き出すのかと言えば、実際にプログラムしない人ということになるんだろうけど。
そのあたりを乱暴に一言で片付けると、先日、豆ナイトでいがぴょんさんとかに話したわけだけど、MVCひっくるめて1〜2人で作っていくのに向いている方法と、MだけVだけC(というのはあまり無いわけだけど)だけ横に複数人で作っていくのに向いている方法の差では無いかと思う。つまり1人とか2人でStruts使うのはかったるいが、RailsやIDE+JSFをクラスで開発者分けたらやってられないだろうということ。キャッチーで誤解を招く言い方だがイメージしやすく言えば、セル対ラインだし、ユースケース対フローチャート(モジュール相関図)だ。多品種少量生産対少品種大量生産と言っても良い。ああ、おれは80年代の人だから(ちょっとさばを読んでいるけど)多品種少量生産万歳だし。で10倍というのは1人にとってのオーバーヘッドではあるけれど10人にとっては緩衝材の役割を担うからむしろ必要不可欠なものであると。
で、さらに進めると、IDEというのはセルであるべき(パソコンで花開いたのは偶然じゃないだろう)なのに、Eclipseにはその香りがまったくしないのが、本能的に嫌悪感を覚える理由のようだというところにまで進むけどそれは余談だし蛇足だな(オリジンについて考えればそんなはずは無いわけだろうから)。でもそう感じるわけだし、ここまですべて印象論だからそれで良いのだ。
MとVとCとすべてこなせるのが本来の開発者というものだと思う。そしてやはり多品種少量生産ってのが付加価値を付けるためには重要な点ではないか? Railsがフルスタックかどうかより前に、開発者がフルスタックでなくてどうすんだ? とすれば、Javaより10倍生産性が高いものをいじくるのはやはり重要なわけだし(ただし、別にいろんな言語をつまみ食いする必要もないので、IDE+JSFでも良いのではないかと。いずれにしても上から下までJSPタイプ1ってことは今更ないよね)、Strutsも実際には後ろに隠してコンポーネントをばらばら作ってコンテナでくっつけるという方法だって良かったりするわけで、とりあえず手を動かすのが一番重要なわけだが、そう言えば、Strutsの何が良いのか? と聞かれて「Strutsタグ!」と答える人間と「MVC!」と答える人間に分かれるよな、と思い出したり(忘れてた。で、思い出したがStrutsタグは好きだ。STL使えない環境でもStrutsタグは使えたわけだし)。で、結局、ビューをいかにプログラムとHTMLの融合としてきれいに書けるかどうかが、一番のストレスだという点に思い当たったり(今この瞬間の思いつきなのでそれがアーハなのか、たわごとなのかは今この瞬間にはわからない)。その部分で、ActionViewが実に良いのだということも言えるな。
ジェズイットを見習え |