スプリント終了

一ヶ月という期間をスプリントといってよいのか、そもそも丸々システム開発なのをスプリントと読んでいいのかはおいといて。

ちょうど宣言をしたのが一ヶ月前。本日無事納品した。


提案や設計、打ち合わせ塔もすべて含めて一ヶ月で、実装期間としては20日はなかったと思う。Webアプリだがおおむね画面数は15画面くらい。小規模のアプリだが、1画面あたりの複雑度は春先のシステム開発より上がっており、どうなることかと思ったが慣れればどうということはないというのを改めて実感した。VisualWebJSF+EJB3JPAは今回が初めての開発ではないからだ。

もっともNetBeansのバージョンを6.1にあげており、その細かい差異で苦労はしたのだが、おおむね順調だった。少なくとも5.5.1から6.0への移行ほどは苦労していない。6.0と比べると致命的なバグも大幅に減ってるし。

また、小規模とはいえ2つのwarが必要であり、ひとつのejb-jarを共有する形なのでwarだけの開発はありえなかったかな。そう考えるとEJB3.1 liteはあんまり使わないのかも。


JavaEE 5フルセットが開発効率悪いと思う人は死んでいいよ。

というのは多少言い過ぎとして、小規模開発には少なくとも向いてるよといいたい。セットアップ等で迷うことはなく、すべてツールがサポートしてくれるからだ。同等の規模をWicketStrutsでやったとして同じ期間で開発できただろうか。

wicketなら実装にひたすら集中できるから可能性はあるが、htmlの生成とそのループ等の把握、そしてロジックと考えると実開発時間はプラス20%位は増えそうだ。JSFはやっぱり強い。一番の問題であるJSP作成や画面遷移をVisualWebJSFに完全に任せているため純粋にロジックのみに専念できる。通常のただのJSFプロジェクトだとたぶん逃げたくなるとは思うが。

wicketほどフレームワークよりというわけではなく、viewだけに特化したものがあるといいのかもしれない。もっともJSPJSTL+ELのみという組み合わせは限りなくベストに近いが、サポートしてくれるフレームワークがほぼない。オレオレフレームワークしかなくなってしまうのが癌だ。感覚的にはMayaaからxmlを排除したもの、というところかな。つまり、ループや各種条件等はすべてJavaコードで制御できるのが望ましい。コードでビューヘルパー的なものをがりがり処理をするということでGuiceと組み合わせると相性はいいかもしれない。


今回はコア機能のみを実装したのであって、細かい機能は今後逐次実装していく。業務アプリでこういう実装していくところは珍しいかもしれないけど、小さいところはこういう実装のほうがいい。機能が少ないと扱いに慣れるまでの時間が短く、真に足りない機能や使い勝手の話が出てきやすい。そしてそれを調整していく。ソフトウェアはつくりっぱなしではなく、成長させていくものだからこちらのほうが都合がよい。


その後はおそらく久々にSwing使ったリッチクライアントか、クラサバかな。BtoBやBtoCはWebアプリが必要ではあるが、社内専用の場合選択する必要性が少ない。そして通信には何を選択するかが問題。過去においてはApache SOAPJAX-WS,JAX-RPC等がなかった古の時代)、XMLを使ったオレオレ通信、Apache XML-RPCJAX-WSEJB通信、RMIといろいろとやってきたが、選択肢は増えることはあっても減ることはないのだなぁと実感。

個人的にはJAX-RSでラッピングするのが最終的にはいいのかなと思っているけど、それが出てくるのは来年の話。とりあえず何でラッピングしてもいいようにここはEJBで実装して簡単にさしかえれるようにしておくか。開発効率だけを考えると現状ならEJB通信もしくはJAX-WSかな。

あ、もっと大きい問題があった。beanのバインディングだ。当時はJGoodies Bindingが一番よかったが、今はどうなってるんだろう。やっぱりBeans Bindingだろうか。NetBeans6.1にはBeans Binding 1.2.1が付属しているのでこれでいろいろ試してみよう。


このスプリントの期間中は土日なしで仕事し続けて疲れたのでゆっくり休みたいと思ったが、どうやら勉強しまくらないといけないようで休んでいる暇はないくさいな。しっかり土日は休むけど。というか、今年土日休んだ回数はたぶん5本指で足りる回数。

勉強が嫌いな人はこの業界つらいね。