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