56
【とべとべ】勉強会夏祭り2010【電設部】 2010.07 http://jiemamy.org/ DB meets Jiemamy 特別付録:OSSコミュニティの運営の話 都元ダイスケ 2010.07.17 2010718日日曜日

とべとべ電設部勉強会20100717 DB meets Jiemamy

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: とべとべ電設部勉強会20100717  DB meets Jiemamy

【とべとべ】勉強会夏祭り2010【電設部】 2010.07

http://jiemamy.org/

DB meets Jiemamy特別付録:OSSコミュニティの運営の話

都元ダイスケ2010.07.17

2010年7月18日日曜日

Page 2: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

自己紹介•都元ダイスケ•はてなid:daisuke-m

• twitter @daisuke_m

• Jiemamy Projectチーフコミッタ

Javaオブジェクト指向 Eclipse酒ライセンス

Maven OSGiXML

Android

JiemamyDDD

SQL

ER

2010年7月18日日曜日

Page 3: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 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日日曜日

Page 4: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

今日のポイント

• Jiemamyとは何なのか?

•どういう考えに基づいているのか?•「環境と戦う」とは何なのか?

2010年7月18日日曜日

Page 5: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

Agenda

• Jiemamyについて

• Jiemamy開発モデル

• Jiemamyモデルエディタ

• Jiemamy API構想のご紹介

•その他(特別付録)

Main

Catchy

Maniac

2010年7月18日日曜日

Page 6: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

って何さ。モデリングツール?NO!

2010年7月18日日曜日

Page 7: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

開発モデルは

2010年7月18日日曜日

Page 8: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

Martin Fowler

• Planning Extreme Programming

• Refactoring

• Pattern of Enterprise Application Architecture

2010年7月18日日曜日

Page 9: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

DBの進化的設計Evolutional Database Design

— Martin Fowler, 2003

DB設計も早い時期にフリーズできない  進化を前提にした設計をしよう

DB構成情報はスキーマだけではない  データも重要な管理対象である

計画的設計

2010年7月18日日曜日

Page 10: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

•目指すはDBの進化的設計の実現•それを補助するツール• Jiemamyモデルエディタ

•maven plugin, その他(いろいろ企画中)

•副産物的に出来たAPIを公開(β)

2010年7月18日日曜日

Page 11: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

進化的設計Smart

VersionControl

SmartModel

SmartBuild

2010年7月18日日曜日

Page 12: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

Smart Build

A

2010年7月18日日曜日

Page 13: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

従来の問題点•WebアプリがSVNに置いてある。このアプリを無事に起動できますか?

DBのインストール

DBの設定整備

スキーマ構築

アプリケーションに対するDB情報の

設定

ドキュメントがない or よくわからない

手順はどこに書いてあるの?

2010年7月18日日曜日

Page 14: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

環境と戦う•アプリは環境の中で動く•アプリの制御下にない前提条件•環境変数• Javaランタイム

•DBサーバ・APサーバ

•自動化、または文書化(documented)

2010年7月18日日曜日

Page 15: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

Maven•Apacheによる、ビルドツール

•coしたらpom.xmlがあるディレクトリで

"mvn package"コマンド実行

•プロジェクト構成・ビルド手順の標準化

スマート・ビルド

2010年7月18日日曜日

Page 16: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

Jiemamyでは•maven-jiemamy-pluginを提供(後述)

•pom内にスキーマ情報ファイルと適用先DB情報を明記

•ビルドの一環としてDBも整備する

•Webアプリのビルド完了と共にDBも完成

•今後、Antタスク等も提供したい

2010年7月18日日曜日

Page 17: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

SmartVersion Control

B

2010年7月18日日曜日

Page 18: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

構成の同期•各アプリケーションのrevisionには対応するDB構成がある

•アプリだけ過去に戻せても全く意味がない

•全てのリビジョンを、後から呼び出して動かせるように

アプリケーション

アプリケーション

アプリケーション

アプリケーション

DB構成

DB構成

DB構成

rev1000

rev1001

rev1002

rev1003

rev1004

rev1005

アプリケーション

DB構成

2010年7月18日日曜日

Page 19: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

Jiemamyでは•ツールの補助は無い(無理w)•プラクティスを提唱(再掲)•環境再現手段もコミットせよ。•アプリと環境情報を同期コミットせよ。(チェンジセットを意識せよ)

2010年7月18日日曜日

Page 20: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

Smart Model

C

2010年7月18日日曜日

Page 21: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

DRY原則

•情報の重複を防ぐ考え方•情報の重複は...

•変更の困難さが増大•透明性を低下•不一致(不整合)の可能性が増大

Don't Repeat Yourself.

2010年7月18日日曜日

Page 22: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

1つの事実を1箇所に•複数箇所で1つの事実を表現しない

class Emp { String name; Dept dept;}

class Dept { String name; List<Emp> members;}

2010年7月18日日曜日

Page 23: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

2箇所で持っている例•「加藤さんは技術部に所属している」

Dept tech = new Dept("技術部");Emp kato = new Emp("加藤");kato.setDept(tech);tech.addMember(kato);

2010年7月18日日曜日

Page 24: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

DB構成情報の種類• DB初期化の為の情報

•データ重要!

•表現手段は?

• SQLファイル

• ER図

• DB設計書

テーブル

1

関連(外部キー)

2初期データ

3

2010年7月18日日曜日

Page 25: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

開発フェーズ

ビルドフェーズ

DBモデリング

プログラミング

構成管理

コミット

チェックアウト

コンパイルデプロイ(配備)等by Maven2

DBServer

SQL等

Repo-sitory

Source Package AppServer

2010年7月18日日曜日

Page 26: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

DB構成情報•具体的に何を管理する?

SQLファイル

ER図データ(バイナリ)

…両方?

アプリケーション

アプリケーション

アプリケーション

アプリケーション

rev1000

rev1001

rev1002

rev1003

rev1004

rev1005

アプリケーション

DRY違反

スマートビルド妨害

編集困難

ER図データ

ER図データ

ER図データ

ER図データ

SQL

SQL

SQL

SQL

2010年7月18日日曜日

Page 27: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

明日からできること•DRYを心がけよ。

•ただし、あくまでも「原則」は「原則」•従えない場合は、注意深く違反せよ。•違反した場合、documentedを忘れるな。

•仮にERとSQL両方コミットする場合

•正副関係を明確にする•同期していない可能性を念頭に置く

2010年7月18日日曜日

Page 28: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

Jiemamyでは

2010年7月18日日曜日

Page 29: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

JiemamyModel

DBServer

SQL等SQL等

Repo-sitory

Source Package AppServer

開発フェーズ

ビルドフェーズ

DBモデリング

プログラミング

構成管理

コミット

チェックアウト

コンパイルデプロイ(配備)等by Maven2

2010年7月18日日曜日

Page 30: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

Jiemamyモデルとは•唯一の(DRYな)DB情報記述場所

•これを元にSQL, DB設計書(予定)等の派生リソースを生成できる

•実体はXMLファイル→SVNコミットする

•マージの可能性を考慮•そこそこの可読性が必要

2010年7月18日日曜日

Page 31: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

補助ツールJiemamyモデルエディタ

2010年7月18日日曜日

Page 32: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

XML…•かといって手書きでXML編集は基本的に嫌

•ならばGUIによるER図エディタを提供

•ちなみに、手編集(マージ時等)にも対応•XML Schemaを提供

•XMLエディタによる補完・validation

2010年7月18日日曜日

Page 33: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

Jiemamyモデルエディタ•よくあるER図エディタ

•AmaterasERD, Clay, DBDesigner4,

ERWin, SI Object Browser, JUDE...

• Jiemamy開発モデルを強力にサポート

•データファイル形式を考え抜いた•まだ引き続き考えてる

2010年7月18日日曜日

Page 34: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

Demoせっかくなので

2010年7月18日日曜日

Page 35: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

Jiemamy API

2010年7月18日日曜日

Page 36: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

Jiemamy Model/API• Jiemamyモデルを自由に操作できる

database

tablecolumn

Javaコードから操作

Java object

SQL

β

2010年7月18日日曜日

Page 37: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

XML → Java model

• Jiemamyインスタンスを作って

•シリアライザを取得して• InputStreamから読み込む

2010年7月18日日曜日

Page 38: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

Java model → XML

•同じくJiemamySerializerを使って

•OutputStreamに書き出す

2010年7月18日日曜日

Page 39: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

Java model → SQL

•SqlExporterをnewして

•設定オブジェクトを作って•exportModelする

2010年7月18日日曜日

Page 40: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

実DB → Java model

•DatabaseImporterをnewして

•同じように設定オブジェクト作って• importModelする

2010年7月18日日曜日

Page 41: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

Javadoc完備!

2010年7月18日日曜日

Page 42: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

これ使ったら•色々面白い事できそうじゃないですか?•初回起動時に(ServletFilter辺りを使って)

自動でDB整備するWebアプリとか

•Smart Install / Update

•動的にテーブルをCREATE/DROPする

Webアプリとか

2010年7月18日日曜日

Page 43: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

OSSコミュニティ

2010年7月18日日曜日

Page 44: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

OSSを作る

•技術者は自由だ。何を作っても良い。(公序良俗に反しない限り…)

•アプリケーション・ツール・ライブラリ•くれくれ君? ツクれカス

2010年7月18日日曜日

Page 45: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

何を作るか

•既存プロジェクトへのコントリビュート•新規プロジェクトの立ち上げ

2010年7月18日日曜日

Page 46: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

はじめの一歩•作りたい物を決める•sourceforgeにプロジェクト申請

•曲がりなりにも形にする•ライセンスを決定してリリース•アピール! アピール!

2010年7月18日日曜日

Page 47: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

Software License•コピーレフト系•GPL, AGPL

•準コピーレフト系•CPL, EPL, CDDL, MPL

•非コピーレフト系•Apache License, BSD, MIT

イデオロギー強

2010年7月18日日曜日

Page 48: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

共同開発のスタート

•ルール等、各種情報の整備•インフラの整備•雰囲気の整備

2010年7月18日日曜日

Page 49: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

ルール等の情報•コーディング規約•リポジトリ運用規約• ITS運用規約(ワークフロー)

•を、Wikiに掲載。

2010年7月18日日曜日

Page 50: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 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日日曜日

Page 51: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

ITSワークフロー

2010年7月18日日曜日

Page 52: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

コードレビューツール

2010年7月18日日曜日

Page 53: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

雰囲気

•これ難しい。•いかにメンバーのモチベーションを上げるか•「伽藍とバザール」•「ノウアスフィアの開墾」

2010年7月18日日曜日

Page 54: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

まとめ

2010年7月18日日曜日

Page 55: とべとべ電設部勉強会20100717  DB meets Jiemamy

勉強会夏祭り 2010.07

地豆も進化を続けます• Jiemamyでアプリの進化的設計を。

•そしてJiemamyも進化します。

•まだ未熟なのでAPIは今後変わっていく

•XML形式も変わる予定(converter提供予定)

•今後ともよろしくお願いします。

2010年7月18日日曜日

Page 56: とべとべ電設部勉強会20100717  DB meets Jiemamy

【とべとべ】勉強会夏祭り2010【電設部】 2010.07

http://jiemamy.org/

ご静聴ありがとうございました

Evolutional Database Design...

2010年7月18日日曜日