« Ruby on Rails(RoR)での開発って...。 | トップページ | 有言実行か?、内緒で実行か? »

DBFluteって、凄いんだぜ!

1月の定例会で、忠さん(あだ名です)からDBFLuteの紹介をしてもらいました。

Pict2677_2
現在の顧客先サービスの開発で中心的に利用されているフレームワーク(と言うか、O/Rマッパーや強力で柔軟なツール群のセット)で、習得がちょっと大変、と言うか奥が深い(言い方を変えれば、習熟度が高まるほど、成果物の品質をより良いものに出来る!)フレームワークのようです。

Seasarプロジェクトの一部ですが、恥ずかしながら、このプロジェクトに参加させて戴くまでは、少なくとも私自身は勉強不足で聞いたこともありませんでした...。

しかして、その実態は?!.....

DBFluteって、凄いんだぜ!
というタイトルで始まった、忠さんのプレゼン&オンコーディングでのデモ

Pict2678_2
Pict2679_2
Pict2680_2とにかくDB変更に強い!・柔軟!

「アジャイルな開発プロセス」を採用すれば、必然的にDBも徐々に変更・拡張されて行きます
見直しと最適化が必要になって来ます。

変更をしたなら、再テストが必要です。

しかし、テストの工数は大きい!
かと言って、手を抜けばデグレードしてしまいます。

Pict2681_2「自動テストが有るじゃないか?!」と思うかも知れませんが、DBに関わる変更は影響範囲が広い。
書き直さなければならないテストコード自体のメンテナンスも、かなりの工数になります。

また、自動テストは「テストコードは正しく書かれている」という暗黙の?前提に立って行いますが、書くのは人間です。
人間は間違いを犯すもの。
だから、自動テストで効率を上げたい......のだけれど、テストコード自体を確実に正しく書く&変更も正しく行い続ける、ってのも結構な負担です。

レビューで精度を上げることは出来るかも知れませんが、その分、工数を食います。

結局、メリットとデメリット、「効率」を何処の範囲まで含めて解釈するのか?、そもそも納期に間に合うのか?、品質を担保できるのか?.....
いろいろな要素を考えつつ、「自動テストを適用する範囲・対象」にガイドラインを定め、「無闇に全コードにテストを仕込むのではなく、適度に手を抜く」ことが必要になって来ます(この「適度」の判断が難しい...)。

DBFluteでは、「RDB指向のタイプセーフ」という考え方で、「ConditionBeanの実装」を行うというアプローチを取る(勿論、新しいスキーマからコードを自動生成するということが前提にあります!)ことで、これらの工数増を抑えようということらしい。

また、「O/Rマッパーに頼りきれない、結局は複雑なSQL文はガリガリ書かないと動かせないよね」というシーンは、大抵のWebアプリ/Webサービスで生じることではないでしょうか?

と、そんな時には「外だしSQL(2WatSQL)」!!

2WaySQLとして必要なSQL文を書いて自動生成ツールに食わせると、
引数として使用するDTOも、検索結果DTOを自動生成してくれる点は勿論のこと、「SQL文の部分だけを、外だしSQLのソースからコピペしてアクセステストが出来る」ようになる!

この辺は詳細&正確には、私には書けません...。オリジナルのサイトを参照して下さい。http://dbflute.seasar.org/

Pict2682で、更に凄いのが、「テーブル定義書を自動生成してくれる(しかもドキュメント内でハイパーリンクしていて、効率的にテーブル間の関係を追えるようになっている!)」。

多くのプロジェクト(特に、拡張・変更を繰り返した寿命の長いシステムとか...)で見られる光景ですが、「既存ドキュメントが正しいという保証は無い(と言うか、正直言って9割正しかったら素晴らしい!?)」。

ところが、「出来上がったRDBスキーマからテーブル定義書を自動生成する(しかも、フィールド説明等もコードのファイルから自動的に抜き出して埋めてくれる!!)」ことが出来るので、コード&ビルド&システム・リリースの管理さえ出来ていれば、「ドキュメントが当てにならない、なんて事は起きるはずが無い!」。

これって素晴らしいことですよ!

この、テーブル定義書の自動生成機能は、DBFluteを使っていない既存のRDBに対しても使えるそうです。
勿論、その場合はフィード毎の説明等は埋めてくれませんが、「全てを人力でテーブル定義を起こさないといけない...」に比べれば、遥かに楽で確実でしょう!

そして更に!、DB変更を行った場合の、「各メンバーのローカル環境(RDBを各人の開発マシン上に構築している場合)の最新化を統一・徹底できない!」という問題にも対応しています!!(ReplaceSchema運用)

うっひゃー!

Pict2683

更に!(まだ有るのか...)、ハンズオンが同コミュニティ/サイト上から提供されています

そのハンズオンを進めていくことで、DBFluteの思想の理解と、より効率的に利用していく為の思考力が得られるようになっている、と(しかも、敢えて正解は提供されていない)。

凄く面白いですねえ!、素晴らしい!

Pict2685Pict2686より良いモノをなるべく楽をして提供できるようにする為に、苦労して(楽しみながら?)こんな思想と実現の為の成果物を作り出してしまう人がいるんですねえ。

改めて感心してしまいました。

また、分かり易くて面白い解説&デモをしてくれた忠さん、有難う御座いました!


★クリック1つでブログランキングにご協力戴けます! m(_ _)m

|

« Ruby on Rails(RoR)での開発って...。 | トップページ | 有言実行か?、内緒で実行か? »

定例会、勉強会など」カテゴリの記事

コメント

名乗らず失礼しました。ほしのです。

投稿: ほちの | 2015年2月 9日 (月) 13時24分

その昔、katsuさんと一緒にseasarのカンファレンスに行った時に学んだ覚えがあります。
外だしSQL万歳。
プログラムは分からないけどSQLならなんとか。。。なお客さんが相手なら有用そうですね。

投稿: | 2015年2月 9日 (月) 13時23分

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/224308/61043073

この記事へのトラックバック一覧です: DBFluteって、凄いんだぜ!:

« Ruby on Rails(RoR)での開発って...。 | トップページ | 有言実行か?、内緒で実行か? »