BitArts Blog

ロードバイク通勤のRubyプログラマで伊豆ダイバー。の個人的なブログ。

S2EntityWorks(仮)

決して開発宣言ではないです(今ちょっと手が空かないので…)。とりあえずやりたいことメモ。

Web-DBアプリの多くは、よくあるマスタメンテ的な機能がベースになってます。とくに管理系機能ではほんとどマスタメンテだけじゃん。ということも多いし、フロント系だって、単純にレコードの内容を出し入れするだけ。あるいは、それに機能を挟み込んだものというパターンが多く、多くはレコードの出し入れというのが基本だと思います。

そこで、そんなマスタマンテ系の開発工数をガバッと削ることを可能にすべく、設定ベース(ロジックレス)で基本的なマスタメンテ系の機能を半自動で提供し、さらに必要な機能があればオーバーライドで追加していく。マスタメンテドリブンというか、そんなDBアプリのフレームワークを作りたいと思っています。

実を言うとすでにHibernateベースでJetspeedポートレットとして動くやつを作って(非オープンソースですが)、いくつか事例もあるのですが、かなり環境依存なので、きちんとPOJO化して、どのフレームワーク上でも使えるようなものにしたいと。

提供する機能は、検索、一覧、詳細表示、登録/更新フォーム、確認表示、CSV入出力、など。管理したいEntityクラスのプロパティごとに、バリデート条件と、入力ウィジェット種類(テキストボックなのか、チェックボックスなのか、など)などを外部ファイルで定義するだけで、これらの機能を提供するというものです。

ポイントとしては、まず「バリデーション」。これはフロント系、管理系、CSV入出力、バッチ系などで一貫したEntityレベルのバリデーションを行うことでデータの整合性を確保します。次に「項目名」。Entityの項目名をEntityレベルで一元管理することで、機能によって例えば「会員ID」「会員番号」…みたいに言葉が不統一になることを防ぎます。こんな感じで、機能ごとに開発担当者が違っても、品質面のばらつきがおきにくいようにします。また入出力部分をフレームワークまかせにすることで、セキュリティホールを防ぎます。

前にも書いたけど、S2DaoがEntityごとにDAOが必要という性格なので、今回のコレにS2Daoが使えるかどうかは微妙なところ。色々考え中。