音楽を聴きながらプログラミング

まともにプログラミングするのは3ヶ月ぶりかな。音楽を聴きながらプログラミングするのはどれくらいぶりだか思い出せません。ん〜〜〜すっごい楽しい!ノリノリですよ(^-^)

とりあえずカスタムタグで生成するHTMLをVelocityでテンプレート化する実験を開始。Velocityの使い方を忘れてるorz。テンプレートのパスを渡す時、絶対パスじゃなくてクラスパスから探させる方法が思い出せなくて四苦八苦。過去に作ったアプリを探してClasspathResourceLoaderを使うことを思い出す。タグの属性を1個生成するテンプレートを書いてみた。

#if(${size}) size="${size}"#end

size属性を指定すれば「 size="10"」のように出力されるので、こういうテンプレートを複数つなげるとHTMLの属性が生成できます。

何がやりたいかというと、HTMLの要素を表現するカスタムタグを作った時に、id、class、onclickのような複数のタグで共通の属性を各々のタグでいちいち定義しないようにしたいのです。どうせならメンテナンス性を考えてテンプレート化しようじゃないかという単純な発想。

ここまで作って気づいたのが、Strutsのhtmlタグはどうやって共通の属性を扱ってるんだろう?という事。想像の上では共通の属性のsetter/getterを持ったクラスを継承している事ですが、どうやって共通のHTMLを生成しているかまでは見たことがありませんでした。

ということで、今から見てみます。
これは仕事で使うものなので、未だに仕事中です…久々のプログラミングで楽しいけど(笑)。なんでこんなのやってるかというと、10個同じ内容のドロップダウンリストがあったら、10回同じ処理を書くのかよ!!っていうくらい「ちょっと古い」フレームワークがあるのですよ。設計が終わってプログラマにばらまく際、こんなんじゃ品質が悪くなる。コミュニケーションが取りづらいオフショア開発ですし、それは危険な香りがする。今のうちに危険な香りは良い香りに変えておこうということで私が技術的な検証をする事にしました。設計途中のシステムから洗い出した業務共通部品の数は95個。とりあえず部品の一覧と概要が書いてある資料は作成しました。こう見てみると、複数の画面で同じ機能を使ってる所が多いなぁという感じです。業務共通部品と言っているのは、1つ以上の処理で使用する機能を部品化したものです。単純な例だと商品のドロップダウンリストとか。複数の画面で商品を選択するので、これは共通部品として切り出します。

さて、技術的な検証が完了したら私の仕事はお終い。プログラムはプログラムが作れる人がやればいいと思います。私である必要はどこにも無い状況です。ただ数が多いので、それなりに誰でもできるような方向性だけは示しておこうと思ってやってます。

このプロジェクトを成功させるためならできる事はやります。仕様書の様式も今のままじゃ開発者から質問の嵐になるのが見えている。さらに指示をもらえないと書けない人も出てくる。だめ。改定だ!!さあ、夜は長いぞ。