第146回 達人が語る こんなデータベース設計はヤダ! CLUB DB2にお越し頂きました皆様、 jfluteのライトニングトーク(LT)を お聞き頂きありがとうございます。 「DB設計者にもうれしいDBFlute」 というテーマでで発表させて頂きました。 ああああぁぁぁぁ くやしー ばりばり終わらせるつもりだったのに、 あと10秒足りませんでした(残り3枚...)。 まあ、やはり無理はするものじゃないということでw でもまあ、なんでしょう、自分のいつもの調子のトークで 場を少しでも暖かくできたんじゃないかと思います。 (知ってる人は知ってるよねー) また、DBFluteをほんの少しでも「おっ!?」って思って 頂けたんじゃないかと思います。たぶん...おそらく...
DB設計の経験がある人なら、誰もが 「ああぁ、DB変更したいけど、 もうSQLめっちゃ書かれちゃってるしなぁ」 「ああぁ、DB変更したけど、 これ全部メールで通知するのめんどくさいなぁ」 なんて思ったことがあるはず。 まず前者はこれ! -> OutsideSqlTestタスク | DBFlute 外だしSQLの一括実行。 すっごいシンプルな機能ですが、これが通常はできないんです。 だって、条件値がバインド変数になってるし、 分岐のif文が入ってたり...というか、プログラムの中で ベタベタに組み立ててたら、そりゃ画面起動してボタン押すまで そのSQLがほんとに動くのかわかりませんよ。 2Way-SQL方式を採用しているからこそ実現できるのです。 -> 外だしSQLについて - 2Way-SQL DB変更したら、とりあえずバッチ叩いて影響範囲チェックしてみる。 場合によっては自分でそのSQLをもう直しちゃったりして。 DB設計者が長年、潜在的にやりたい思っていたことと言えるでしょう。 そして後者はこれ! -> HistoryHTML | DBFlute DBFluteはそのときそのときのスキーマのメタ情報をおいしく 食べていますから、前のスキーマとの味の違いがわかるんですね。 その違いをまいどまいど吐き出してHTMLにしているだけです。 -> HistoryHTMLのサンプル (ぜひご覧あれ) これはプログラマもとても便利。リアルタイムで実感してます。 DB変更が通知されなくっても、これを見れば大体わかる。 DB設計者だって、経験した人なら「こりゃうれしい」と思うはず。 なんといっても履歴を「勝手に」積み上げてくれるというところ。 何かしら儀式が必要だとやはり面倒ですが、DBFluteの通常業務を している流れで勝手に自動生成されますので、気づいたら履歴一覧が できあがってるという感覚です。 スキーマとスキーマの差分をチェックするロジックを擁している ところが DBFlute の地味な強みだったりします。 実はこのロジックを流用した別の便利機能もあります。 本番環境に適用する「alter文」の妥当性チェックです。 -> 運用後のDB変更 | DBFlute これもなかなか破壊的に便利な機能なのですが、 説明するのに確実に20分は必要です...またどこかでねw
メインのミックさん(id:mickmack)の話はとてもためになりました! そしてとてもおもしろかったです。というか、そもそも自分、 ミックさんの話が聞きたくって参加したわけなので(^^ また、詳しくはここで書きませんが、おおよその概念の捉え方が、 すごく自分にもしっくりくるもので親近感を得られました。 というのは、自分はやっぱりアプリ寄りなDB屋さんです。 あんまり物理の方に攻めることはなく、DB設計もやりますが、 ひたすら Eclipse を起動して、バシバシ Java のコードを 打ち込むことが多いエンジニアです。 (まあ、自称「オープンソースプログラマ」ですから...) なのでどうしてもインフラ寄りの考え方がときにしっくり来ないこと もあるのですが、ミックさんの考え方はすごくバランスがとれていて、 「どちら寄り」とか関係なく、 システム全体の利益を常に考えているように感じられました。 そう、今までずっと現場を見てきて、どうしてもやるせないのが、 「インフラ VS アプリケーション」 「DB設計者 VS プログラマ」 みたいな構図。 互いの行動次第で互いに負担をかけてしまえる立場なので、 多少しょうがないこともありますが、勝ち負けはどうでもいい。 システムを買う側(発注する側)からすれば、どっちが勝っても 負けても知ったこっちゃないし、サービスを利用する人からしても その通り。そのシステム開発が成功することが重要なのであって、 どっちが勝つかは本来はどうでもいい。それが、会社間や作業員の 利害なども重なって、しわ寄せ合戦みたいになってしまう。 どっち「も」勝たなきゃしょうがない! 「Win-Winの関係」 でも、利害が一致しないところもあるから互いに 100% 満足はない。 いいんです。互いが 80% 満足で、20% は「まあいいや」と言えれば。 終わった後にミックさんともお話させて頂きましたが、 DBFluteは、その橋渡し(ブリッジ)的な役割ができればと思います。 どっちも「わりと」うれしい。すげーうれしいじゃなくてわりとでいい。 ということで、ミックさんの素晴らしいDB設計の話の前に LT できたのは、 とても幸せでした。simさん、ありがとうございます! ちなみに、ERDツールの話やDDDの話とかの質問が来たとき、 「ああぁ、おれめっちゃその話ネタ持ってるぅ」って しゃべりたくなってしまいましたがここは我慢(^^ 皆さんとももっと交流して色々なお話していきたいですね。
CLUB DB2の運営の皆様、本当にありがとうございました。 普通に楽しくためになる勉強会なので、また気軽に参加したいと思います。 DBFluteは守備範囲広いので、またメインの内容にうまく合わせた 「前座」ができるので(^^、またよければいくらも! 「DBFluteのDB2固有機能大特集」 「DBFluteでDB2のストアドを呼ぼう」 とか...!?