jfluteの日記 このページをアンテナに追加

2017-01-01

DBFlute-1.1.2 Released

|

あけましておめでとうございます。

Java8対応のDBFluteの十二回目のリリース。
DBFlute-1.1.2 です。

Change Log
移行の注意点 1.1.1 to 1.1.2

九年連続、九回目の元旦リリースです!

「DBFluteフェス2016」での約束、
「やっぱり元旦に出しますかー!」
を果たすことができました。

※でも、元旦に出しても別に誰もすぐに
ダウンロードするわけじゃないんですけどね笑

f:id:jflute:20170101181404j:image

DB設計のポリシーチェック強化

SchemaPolicyCheckですよ!
昨年の元旦に出した機能です。

DBFlute-1.1.1 Released | jfluteの日記

いわば、DB設計のcheckstyleです。

「_FLAG と _FLG とカラム名がブレまくりー」
「フラグなのに NotNull 制約が付いてないー」
「フラグのデータ型がint, charとかバラバラー」
「_DATE なのに和名が "日時" なんだけどー」
「PKのないテーブルがあるー」
「FK制約名のつけ方が自由すぎるー」

いろいろありますよね。
それらをもう自動生成の段階でチェックして、
ポリシーに合わないものは先に進めないように
しちゃうという機能です。

特に、事業会社などで複数人でDB設計やるようなとき、
レビューも追っつかずにバラバラになっちゃうの、
つらいですよね。
一人でやってても、ケアレスミスとかありますから、
しっかり自動的にチェックがかかる方がいいです。
しかも、DBはなかなか後から変更できないですから。

そんな SchemaPolicyCheck,
昨年の時点ではまだチェック機能が甘かったのですが、
今回のリリースでかなり強化して、
様々なチェックをかけられるようになりました。

f:id:jflute:20170101172055j:image

SchemaPolicyCheckの使い方

dfpropに、
「schemaPolicyMap.dfprop」を作れば、
docタスク (manage の 22) のときに
自動的にチェックされます。

Maihamaプロジェクトのものを参考にするとよいでしょう。
 => schemaPolicyMap.dfprop | Maihama

PolicyにそぐわないDB構造を検知した場合は、
docタスクが Failure となり、
例外メッセージにPolicy違反の情報が表示されます。

今回の強化ポイント

細かくたくさんありますが、
ざっくりと...

「alias名(和名)で if が書けるようになった」
「FKUQの制約名のチェックもできるようになった」
「$$ALL$$を使えるようになった」
「判定で not を使えるようになった」
「正規表現でヒットできるようになった」
「then bad で期待値の補足を書けるようになった」
「共通カラムがあるかどうかチェックできるようになった」
「Policy違反メッセージが見やすくなった」
などなど...

具体的には...

o tableMapにも、statementList を追加
o if alias is ... できるように
o if tableName is $$ALL$$ できるように
o then fkName is ... できるように
o if tableName is not ... できるように
o if tableName is pattern:... できるように
o then bad => should be _FLG できるように
o then hasCommonColumn できるように

色々と表現が豊かになったきたので、
どんなチェックをするかは現場の発想次第。

jfluteも思いつかないようなチェックが期待されます(^^。
ごめんなさい、
正式ドキュメント1月に用意します。。。m(_ _)m

実際に一年運用しています

SchemaPolicyCheck,
すでに一年間運用しています。

U-NEXTさんにて、
(優秀な)DBAの方のポリシーに合わせて、
dfprop に SchemaPolicy を定義して、
別の人がDB設計した時も、
自動的にポリシーレビューがかかるようになってます。
すると、DBAの方のレビュー指摘事項も減り、
より本質的なレビューに集中することができています。

昨年版だと、まだ機能が弱いので、
take-finally で information_schema を見て、
できないことを補っていますが、
今回のリリースで完全に再現できるようになったかと。

jflute個人的にも、
もうこれない環境でのDB設計はつらいなぁと思うくらい。
チーム開発なら絶対に導入したい機能です。

f:id:jflute:20170101181449j:image

LastaFluteやERFluteも!

今回は、他にも同時にリリースしています。

o LastaFlute-0.8.8
o UTFlute-0.6.6
o ERFute-0.4.4

年末のプログラミング会で、みんなで作っていました。

// みんなで年末プログラミング会 (ついーと) | Twitter
https://twitter.com/jflute/status/814451693584687116

こうやってチームで開発できるようになった、
というのも DBFlute の大きな進化です。

LastaFluteでは、
またびっくりする機能が入ってます。
またの機会に紹介したいなと。

昨年は一回だけのリリース!?

なんと、2016年は、リリースが一回だけでした!
昔はあんなにしょっちゅうリリースのDBFluteですが、
LastaFluteでやることたくさんあって、
DBFluteがちょっと進みませんでしたね。
ただし、パッチは一杯出していましたので、
細かい改善はたくさんされていましたよ。

今年は、もうちょい DBFlute のリリースも、
やっていこうかなと思います。
まだまだ進化中のDBFlute、よろしくお願いします。

f:id:jflute:20170101172622j:image
トラックバック - http://d.hatena.ne.jp/jflute/20170101/release112