成功事例。

データベースのテーブルアクセス用部品(DB用Classと仮名付与)を作る作業がある。
テーブル1つにつき、1つDB用Class(長いので以後Classとだけ記述)を作るのである。
主に「1件検索」「全件検索」「1件更新」「新規登録」「1件削除」の5つのSQL文を発行する代物である。*1


従来の作業方法だと、1つのClassを作るのにだいたいテストを含めて2〜3日かかっていた。
データ取得したものはEntityに保存する仕様である。*2


中身の細かいことは言えないが、はっきりいってめんどくさい作業であった。
同じような作業を延々と繰り返すのだ。
DB項目リスト作る→英字名に置換える→イテレータ作る→SQL文つくる→代入式つくる→ものによってはStringを項目数分宣言。
作業項目はこんなところ。
がんばって手作業を効率化しても1日かかる仕事だった。
単純作業はねむいし。
ねむいと手が止まるし。
小人さんがおちゃめな悪戯も混入してくれるし。
ソースの記述ミスは少なくなってもデバッグにはどうしても時間がかかったのだ。


そこでおいらはコードジェネレータを作った。
最初は3日かかった。これによりClassを作るのに慣れたら30分でできるようになった。
1日と7時間半の節約ができるようになったが、
扱いが難しく、周囲への普及はままならないような代物だった。
そこで「いかにラクチンに作成できるか?」を観点に作り直した。
4日くらいかかった。これによりClassを作るのに最短5分になった。
DB項目リストとそれを英字名に置換えたものの2つを用意しておけばいつでも作り直せる代物になった。
ソースコードは変数名の長さによって整形されており、コメントもついている。
誰が作ろうが可読性は保たれるのだ。*3
まぁこれにより作業時間的には1日と7時間55分の節約、多めに見積もっても1時間でテストも通るものができた。
*4


人間がんばればなんとかなるものである。


これにより。
ジェネレータ開発に7日間かかったので、
遅れはClass1本2日計算で3.5本。
これ以上作れればモトが取れる計算になるのだが、
そんな本数は1回のプロジェクトでお釣がくるようなもんだ。
全く無い時もあるけど*5あるときには5本6本は当たり前に
発生するので無問題。
っとま〜こんな経緯で作成され、元も取ったのだが、これで眠らすには惜しい品。
その後のプロジェクトでもガンガン使っている。
工数儲かりまくり。( ̄∇ ̄)


ソースが綺麗なまま出来てくるのと、
何度も作り直せるところと、
実際に動くところを見るまでの時間が短いことはいいことだ。
「お試し作成」に1日も2日もかけなくていい。その分判断も早くできる。
そんな状況を作り出せれば、今度はそのツールの使い方もソースの中身も
キッチリ実演込みで教えれる時間ができる。
教育に時間が割けるのだ。
仕事は早く正確に終われるような土壌育成になる。


Σ(゜д゜ )!おお。いいこと尽くめじゃないですか。
( ´∀`)ノ<っつわけでマネージャさん是非是非スケジュールください


っという感じで今後もツール作成をする時間をとる理由に使おうφ(..)うん。

*1:細かい条件が必要な業務はあるが、これらのバリエーションを己が手でつけ足せば事足りるのでやらない。コピペですむし。

*2:ちなみにJavaでなんとSQLJを使用している。

*3:クサレコード撲滅委員会を自称するおいらはこだわるところなのだ。

*4:特殊事情が絡めばその分作業時間はかさむけれども、それはそれとせなしゃーないと思っている。 出来た瞬間にコンパイルが通るし、ちょっと試せばテストも通る。 こっちのが大事。

*5:そこはパッケージ開発ですから。