【とべとべ】勉強会夏祭り2010【電設部】 2010.07
http://jiemamy.org/
DB meets Jiemamy特別付録:OSSコミュニティの運営の話
都元ダイスケ2010.07.17
2010年7月18日日曜日
勉強会夏祭り 2010.07
自己紹介•都元ダイスケ•はてなid:daisuke-m
• twitter @daisuke_m
• Jiemamy Projectチーフコミッタ
Javaオブジェクト指向 Eclipse酒ライセンス
薬
Maven OSGiXML
Android
JiemamyDDD
SQL
ER
2010年7月18日日曜日
勉強会夏祭り 2010.07
宣伝2008/09 @IT
データベースもアジャイル開発に対応したいhttp://www.atmarkit.co.jp/fdb/single/08s_jiemamy/jiemamy1.html
2009/10 日経ソフトウエア最新Eclipse徹底マスター
http://www.amazon.co.jp/exec/obidos/ASIN/B002S4RLCG/cepoc-22/
日経ソフトウェアムックゼロから学ぶ! 最新Javaプログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4822228479/cepoc-22/
2010/05~ 日経ソフトウェア連載 Javaで始めるプログラミング
http://bizboard.nikkeibp.co.jp/kijiken/ より「Javaで始めるプログラミング」で検索
2010年7月18日日曜日
勉強会夏祭り 2010.07
今日のポイント
• Jiemamyとは何なのか?
•どういう考えに基づいているのか?•「環境と戦う」とは何なのか?
2010年7月18日日曜日
勉強会夏祭り 2010.07
Agenda
• Jiemamyについて
• Jiemamy開発モデル
• Jiemamyモデルエディタ
• Jiemamy API構想のご紹介
•その他(特別付録)
Main
Catchy
Maniac
2010年7月18日日曜日
勉強会夏祭り 2010.07
って何さ。モデリングツール?NO!
2010年7月18日日曜日
勉強会夏祭り 2010.07
開発モデルは
2010年7月18日日曜日
勉強会夏祭り 2010.07
Martin Fowler
• Planning Extreme Programming
• Refactoring
• Pattern of Enterprise Application Architecture
2010年7月18日日曜日
勉強会夏祭り 2010.07
DBの進化的設計Evolutional Database Design
— Martin Fowler, 2003
DB設計も早い時期にフリーズできない 進化を前提にした設計をしよう
DB構成情報はスキーマだけではない データも重要な管理対象である
計画的設計
2010年7月18日日曜日
勉強会夏祭り 2010.07
•目指すはDBの進化的設計の実現•それを補助するツール• Jiemamyモデルエディタ
•maven plugin, その他(いろいろ企画中)
•副産物的に出来たAPIを公開(β)
2010年7月18日日曜日
勉強会夏祭り 2010.07
進化的設計Smart
VersionControl
SmartModel
SmartBuild
2010年7月18日日曜日
勉強会夏祭り 2010.07
Smart Build
A
2010年7月18日日曜日
勉強会夏祭り 2010.07
従来の問題点•WebアプリがSVNに置いてある。このアプリを無事に起動できますか?
DBのインストール
DBの設定整備
スキーマ構築
アプリケーションに対するDB情報の
設定
ドキュメントがない or よくわからない
手順はどこに書いてあるの?
2010年7月18日日曜日
勉強会夏祭り 2010.07
環境と戦う•アプリは環境の中で動く•アプリの制御下にない前提条件•環境変数• Javaランタイム
•DBサーバ・APサーバ
•自動化、または文書化(documented)
2010年7月18日日曜日
勉強会夏祭り 2010.07
Maven•Apacheによる、ビルドツール
•coしたらpom.xmlがあるディレクトリで
"mvn package"コマンド実行
•プロジェクト構成・ビルド手順の標準化
スマート・ビルド
2010年7月18日日曜日
勉強会夏祭り 2010.07
Jiemamyでは•maven-jiemamy-pluginを提供(後述)
•pom内にスキーマ情報ファイルと適用先DB情報を明記
•ビルドの一環としてDBも整備する
•Webアプリのビルド完了と共にDBも完成
•今後、Antタスク等も提供したい
2010年7月18日日曜日
勉強会夏祭り 2010.07
SmartVersion Control
B
2010年7月18日日曜日
勉強会夏祭り 2010.07
構成の同期•各アプリケーションのrevisionには対応するDB構成がある
•アプリだけ過去に戻せても全く意味がない
•全てのリビジョンを、後から呼び出して動かせるように
アプリケーション
アプリケーション
アプリケーション
アプリケーション
DB構成
DB構成
DB構成
rev1000
rev1001
rev1002
rev1003
rev1004
rev1005
アプリケーション
DB構成
2010年7月18日日曜日
勉強会夏祭り 2010.07
Jiemamyでは•ツールの補助は無い(無理w)•プラクティスを提唱(再掲)•環境再現手段もコミットせよ。•アプリと環境情報を同期コミットせよ。(チェンジセットを意識せよ)
2010年7月18日日曜日
勉強会夏祭り 2010.07
Smart Model
C
2010年7月18日日曜日
勉強会夏祭り 2010.07
DRY原則
•情報の重複を防ぐ考え方•情報の重複は...
•変更の困難さが増大•透明性を低下•不一致(不整合)の可能性が増大
Don't Repeat Yourself.
2010年7月18日日曜日
勉強会夏祭り 2010.07
1つの事実を1箇所に•複数箇所で1つの事実を表現しない
class Emp { String name; Dept dept;}
class Dept { String name; List<Emp> members;}
2010年7月18日日曜日
勉強会夏祭り 2010.07
2箇所で持っている例•「加藤さんは技術部に所属している」
Dept tech = new Dept("技術部");Emp kato = new Emp("加藤");kato.setDept(tech);tech.addMember(kato);
2010年7月18日日曜日
勉強会夏祭り 2010.07
DB構成情報の種類• DB初期化の為の情報
•データ重要!
•表現手段は?
• SQLファイル
• ER図
• DB設計書
テーブル
1
関連(外部キー)
2初期データ
3
2010年7月18日日曜日
勉強会夏祭り 2010.07
開発フェーズ
ビルドフェーズ
DBモデリング
プログラミング
構成管理
コミット
チェックアウト
コンパイルデプロイ(配備)等by Maven2
DBServer
SQL等
Repo-sitory
Source Package AppServer
2010年7月18日日曜日
勉強会夏祭り 2010.07
DB構成情報•具体的に何を管理する?
SQLファイル
ER図データ(バイナリ)
…両方?
アプリケーション
アプリケーション
アプリケーション
アプリケーション
rev1000
rev1001
rev1002
rev1003
rev1004
rev1005
アプリケーション
DRY違反
スマートビルド妨害
編集困難
ER図データ
ER図データ
ER図データ
ER図データ
SQL
SQL
SQL
SQL
2010年7月18日日曜日
勉強会夏祭り 2010.07
明日からできること•DRYを心がけよ。
•ただし、あくまでも「原則」は「原則」•従えない場合は、注意深く違反せよ。•違反した場合、documentedを忘れるな。
•仮にERとSQL両方コミットする場合
•正副関係を明確にする•同期していない可能性を念頭に置く
2010年7月18日日曜日
勉強会夏祭り 2010.07
Jiemamyでは
2010年7月18日日曜日
勉強会夏祭り 2010.07
JiemamyModel
DBServer
SQL等SQL等
Repo-sitory
Source Package AppServer
開発フェーズ
ビルドフェーズ
DBモデリング
プログラミング
構成管理
コミット
チェックアウト
コンパイルデプロイ(配備)等by Maven2
2010年7月18日日曜日
勉強会夏祭り 2010.07
Jiemamyモデルとは•唯一の(DRYな)DB情報記述場所
•これを元にSQL, DB設計書(予定)等の派生リソースを生成できる
•実体はXMLファイル→SVNコミットする
•マージの可能性を考慮•そこそこの可読性が必要
2010年7月18日日曜日
勉強会夏祭り 2010.07
補助ツールJiemamyモデルエディタ
2010年7月18日日曜日
勉強会夏祭り 2010.07
XML…•かといって手書きでXML編集は基本的に嫌
•ならばGUIによるER図エディタを提供
•ちなみに、手編集(マージ時等)にも対応•XML Schemaを提供
•XMLエディタによる補完・validation
2010年7月18日日曜日
勉強会夏祭り 2010.07
Jiemamyモデルエディタ•よくあるER図エディタ
•AmaterasERD, Clay, DBDesigner4,
ERWin, SI Object Browser, JUDE...
• Jiemamy開発モデルを強力にサポート
•データファイル形式を考え抜いた•まだ引き続き考えてる
2010年7月18日日曜日
勉強会夏祭り 2010.07
Demoせっかくなので
2010年7月18日日曜日
勉強会夏祭り 2010.07
Jiemamy API
2010年7月18日日曜日
勉強会夏祭り 2010.07
Jiemamy Model/API• Jiemamyモデルを自由に操作できる
database
tablecolumn
Javaコードから操作
Java object
SQL
β
2010年7月18日日曜日
勉強会夏祭り 2010.07
XML → Java model
• Jiemamyインスタンスを作って
•シリアライザを取得して• InputStreamから読み込む
2010年7月18日日曜日
勉強会夏祭り 2010.07
Java model → XML
•同じくJiemamySerializerを使って
•OutputStreamに書き出す
2010年7月18日日曜日
勉強会夏祭り 2010.07
Java model → SQL
•SqlExporterをnewして
•設定オブジェクトを作って•exportModelする
2010年7月18日日曜日
勉強会夏祭り 2010.07
実DB → Java model
•DatabaseImporterをnewして
•同じように設定オブジェクト作って• importModelする
2010年7月18日日曜日
勉強会夏祭り 2010.07
Javadoc完備!
2010年7月18日日曜日
勉強会夏祭り 2010.07
これ使ったら•色々面白い事できそうじゃないですか?•初回起動時に(ServletFilter辺りを使って)
自動でDB整備するWebアプリとか
•Smart Install / Update
•動的にテーブルをCREATE/DROPする
Webアプリとか
2010年7月18日日曜日
勉強会夏祭り 2010.07
OSSコミュニティ
2010年7月18日日曜日
勉強会夏祭り 2010.07
OSSを作る
•技術者は自由だ。何を作っても良い。(公序良俗に反しない限り…)
•アプリケーション・ツール・ライブラリ•くれくれ君? ツクれカス
2010年7月18日日曜日
勉強会夏祭り 2010.07
何を作るか
•既存プロジェクトへのコントリビュート•新規プロジェクトの立ち上げ
2010年7月18日日曜日
勉強会夏祭り 2010.07
はじめの一歩•作りたい物を決める•sourceforgeにプロジェクト申請
•曲がりなりにも形にする•ライセンスを決定してリリース•アピール! アピール!
2010年7月18日日曜日
勉強会夏祭り 2010.07
Software License•コピーレフト系•GPL, AGPL
•準コピーレフト系•CPL, EPL, CDDL, MPL
•非コピーレフト系•Apache License, BSD, MIT
イデオロギー強
2010年7月18日日曜日
勉強会夏祭り 2010.07
共同開発のスタート
•ルール等、各種情報の整備•インフラの整備•雰囲気の整備
2010年7月18日日曜日
勉強会夏祭り 2010.07
ルール等の情報•コーディング規約•リポジトリ運用規約• ITS運用規約(ワークフロー)
•を、Wikiに掲載。
2010年7月18日日曜日
勉強会夏祭り 2010.07
インフラ•コードリポジトリ
• SVN, Git, etc.
• ML / IRC
• Google Group, freenode
•Wiki(情報共有)
• Atlassian Confluence
• ITS(課題追跡システム)
• Atlassian JIRA
• CIサーバ(継続的結合)
• Atlassian Bamboo, Hudson
•コードレビューシステム
• Atlassian Crucible
2010年7月18日日曜日
勉強会夏祭り 2010.07
ITSワークフロー
2010年7月18日日曜日
勉強会夏祭り 2010.07
コードレビューツール
2010年7月18日日曜日
勉強会夏祭り 2010.07
雰囲気
•これ難しい。•いかにメンバーのモチベーションを上げるか•「伽藍とバザール」•「ノウアスフィアの開墾」
2010年7月18日日曜日
勉強会夏祭り 2010.07
まとめ
2010年7月18日日曜日
勉強会夏祭り 2010.07
地豆も進化を続けます• Jiemamyでアプリの進化的設計を。
•そしてJiemamyも進化します。
•まだ未熟なのでAPIは今後変わっていく
•XML形式も変わる予定(converter提供予定)
•今後ともよろしくお願いします。
2010年7月18日日曜日
【とべとべ】勉強会夏祭り2010【電設部】 2010.07
http://jiemamy.org/
ご静聴ありがとうございました
Evolutional Database Design...
2010年7月18日日曜日