Smart! Jiemamy DBの構成管理 都元ダイスケ 2009.06.13 Seasar Conference 2009 Spring
Smart! JiemamyDBの構成管理
都元ダイスケ2009.06.13
Seasar Conference 2009 Spring
自己紹介
•都元ダイスケ (id:daisuke-m)
•http://friendfeed.com/dai0304
•Jiemamy Projectチーフコミッタ
Seasar Conference 2009 Spring
Activity
•Seasar Conference
•2009 White - DIことはじめ•2008 Autumn - Jiemamy
•java-jaに出没したり
•都元ダイスケ IT-PRESS
•@IT - DBもアジャイル開発に対応したい!
Seasar Conference 2009 Spring
Activity
Seasar Conference 2009 Spring
Agenda
•Jiemamyについて
•Jiemamy開発モデル
•Jiemamyモデルエディタ
•Jiemamy APIのご紹介
•その他
Seasar Conference 2009 Spring
Seasar Conference 2009 Spring
って何さ。
モデリングツール?
Seasar Conference 2009 Spring
モデリングツール?NO!
Seasar Conference 2009 Spring
開発モデルは
Seasar Conference 2009 Spring
•目指すはDBの進化的設計•それを補助するツール•Jiemamyモデルエディタ
•maven plugin, その他(いろいろ企画中)
•副産物的に出来たAPI公開
Seasar Conference 2009 Spring
DBの進化的設計•Evolutional Database Design
— Martin Fowler, 2003DB設計も早い時期にフリーズできない → 進化を前提にした設計をしよう
DB構成情報はスキーマだけではない → データも重要な管理対象である
計画的設計
Seasar Conference 2009 Spring
進化的設計SmartVersionControl
SmartModel
SmartBuild
Seasar Conference 2009 Spring
Smart Build
A
Seasar Conference 2009 Spring
従来の問題点•WebアプリがSVNに置いてある。このアプリを無事に起動できますか?
�� のインストール
DBの設定整備
スキーマ構築
アプリケーションに対するDB情報の
設定
ドキュメントがない or よくわからない
手順はどこに書いてあるの?
Seasar Conference 2009 Spring
Maven•Apacheによる、ビルドツール
•coしたらpom.xmlがあるディレクトリで
"mvn package"コマンド実行
•プロジェクト構成・ビルド手順の標準化
スマート・ビルドSeasar Conference 2009 Spring
SmartVersion Control
B
Seasar Conference 2009 Spring
構成の同期•各アプリケーションのrevisionには対応するDB構成がある
•アプリだけ過去に戻せても全く意味がない
•全てのリビジョンを、後から呼び出して動かせるように
アプリケーション
アプリケーション
アプリケーション
アプリケーション
DB構成
DB構成
DB構成
rev1000
rev1001
rev1002
rev1003
rev1004
rev1005
アプリケーション
DB構成
Seasar Conference 2009 Spring
Smart Model
C
Seasar Conference 2009 Spring
DRY原則
•情報の重複を防ぐ考え方•情報の重複は...
•変更の困難さが増大•透明性を低下•不一致(不整合)の可能性が増大
Don't Repeat Yourself.
Seasar Conference 2009 Spring
DB構成情報の種類• DB初期化の為の情報
•データ重要! 実体(テーブル)
1
関連(外部キー)
2データ
3
きちんと管理できていますか?
P
Seasar Conference 2009 Spring
開発フェーズ
ビルドフェーズ
DBモデリング
プログラミング
構成管理
コミット
チェックアウト
コンパイルデプロイ(配備)等by Maven2
DBServer
SQL Repo-sitory
Source Package AppServer
Seasar Conference 2009 Spring
DB構成情報•具体的に何を管理する?
SQLファイル
ER図データ(バイナリ)
…両方?
アプリケーション
アプリケーション
アプリケーション
アプリケーション
rev1000
rev1001
rev1002
rev1003
rev1004
rev1005
アプリケーション
DB構成
DB構成
DB構成
DB構成DRY違反
スマートビルド妨害
編集困難
Seasar Conference 2009 Spring
JiemamyModel
DBServer
SQLSQL Repo-sitory
Source Package AppServer
開発フェーズ
ビルドフェーズ
DBモデリング
プログラミング
構成管理
コミット
チェックアウト
コンパイルデプロイ(配備)等by Maven2
Seasar Conference 2009 Spring
補助ツールJiemamyモデルエディタ
Seasar Conference 2009 Spring
Jiemamyモデルエディタ
•よくあるER図エディタ
•AmaterasERD, Clay, DBDesigner4,
ERWin, SI Object Browser, JUDE...
•Jiemamy開発モデルを補助するツール
Seasar Conference 2009 Spring
DemoSeasar Conference 2009 Spring
せっかくなので
Jiemamy API
Seasar Conference 2009 Spring
Jiemamy Model/API•データファイルの保存形式はXML
database
tablecolumn
SQL
Javaコードから操作
Seasar Conference 2009 Spring
XML → Java model
•Jiemamyインスタンスを作って
•シリアライザを取得して•InputStreamから読み込む
Seasar Conference 2009 Spring
Java model → XML
•同じくJiemamySerializerを使って
•OutputStreamに書き出す
Seasar Conference 2009 Spring
Java model → SQL
•SqlExporterをnewして
•設定オブジェクトを作って•exportModelする
Seasar Conference 2009 Spring
実DB → Java model
•DatabaseImporterをnewして
•同じように設定オブジェクト作って•importModelする
Seasar Conference 2009 Spring
Javadoc完備!
Seasar Conference 2009 Spring
これ使ったら•色々面白い事できそうじゃないですか?•起動時に(ServletFilter辺りを使って)
自動でDB整備するWebアプリとか
•動的にテーブルをCREATE/DROPする
Webアプリとか
Seasar Conference 2009 Spring
地豆も進化を続けます
•Jiemamyでアプリの進化的設計を。
•そしてJiemamyも進化します。
•まだ実装したい機能いっぱい。•今後ともよろしくお願いします。
Seasar Conference 2009 Spring
ご清聴ありがとうございました
Seasar Conference 2009 Spring