Seasar Conference 2009 Spring - Jiemamy

Post on 24-May-2015

502 views 1 download

Transcript of Seasar Conference 2009 Spring - Jiemamy

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