Database WatchJiemamy作者が考える “データベースの進化的設計”
データベースもアジャイル開発に対応したい!


都元ダイスケ(MIYAMOTO Daisuke)
(http://d.hatena.ne.jp/daisuke-m/ )
2008/9/4

(2)コードの修正

 テーブル名などが変更されたので、ソースコード(JiemamyServlet.java)も修正しておきます(図8)。


図8 ソースコードの変更

 今回の変更個所は図9のとおりです。


図9 変更箇所(赤い背景色になっている文字部分)

 変更したら保存しておきます。ここまでの作業が完了したら、Jiemamy側で確認してみます。

(3)再起動と確認

 再びプロジェクトルートのコマンドラインから

mvn jetty:run

と入力し、先と同様の手順でアプリケーションの動作を確認します。


図10 再起動後の動作を確認する

 たったこれだけの手順でデータベースのリファクタリングができました。

 初期データ用のINSERT文を含めても、ここまでの作業でSQL文には一度も触れていません

 Jiemamyを使用しない状況で、これらの変更によるコストを考えてみてください。どのくらいの時間がかかるでしょうか?

コマンド入出力の内容と注意点

コマンド操作時の出力結果について、いくつか注意事項があります。以下にまとめましたので、実際に触れてみる際に参考にしてください。

(1)Jiemamy実行時に、ダウンロード処理が入る場合があるため、いままでのmaven2使用状況によって出力内容が異なります。

D:\develop\eclipse\workspaces\main\jiemamy-tutorial>mvn jetty:run
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'jetty'.
[INFO] org.apache.maven.plugins: checking for updates from jiemamy.sourceforge.jp
[INFO] org.codehaus.mojo: checking for updates from jiemamy.sourceforge.jp
[INFO] artifact jp.xet.jiemamy:maven-jiemamy-plugin: checking for updates from jiemamy.sourceforge.jp
[INFO] artifact org.codehaus.mojo:sql-maven-plugin: checking for updates from jiemamy.sourceforge.jp
[INFO] artifact org.mortbay.jetty:maven-jetty-plugin: checking for updates from jiemamy.sourceforge.jp
[INFO] ------------------------------------------------------------------------
[INFO] Building jiemamy-tutorial
[INFO]    task-segment: [jetty:run]
[INFO] ------------------------------------------------------------------------
[INFO] Preparing jetty:run
[INFO] [resources:resources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [jiemamy:execute {execution: execute-porter}]
[INFO] >>>>>>>> Starting maven-jiemamy-plugin...
[INFO] Open Jiemamy model file jiemamy.jer
[INFO] Serializing stream to model.
[INFO] Executing Porter...
[INFO] <<<<<<<< Exit maven-jiemamy-plugin successfully.
[INFO] [sql:execute {execution: drop-db}]
[INFO] Executing commands
[INFO] 1 of 1 SQL statements executed successfully
[INFO] [sql:execute {execution: create-db}]
[INFO] Executing commands [INFO] 1 of 1 SQL statements executed successfully
[INFO] [sql:execute {execution: create-schema}]
[INFO] Executing file: D:\develop\eclipse\workspaces\main\jiemamy-tutorial\database\jiemamy.sql
[INFO] 594 of 594 SQL statements executed successfully
[INFO] [compiler:compile]
[INFO] Nothing to compile - all classes are up to date
[INFO] [resources:testResources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:testCompile]
[INFO] Nothing to compile - all classes are up to date
[INFO] [jetty:run]
[INFO] Configuring Jetty for project: jiemamy-tutorial
[INFO] Webapp source directory = D:\develop\eclipse\workspaces\main\jiemamy-tutorial\src\main\webapp
[INFO] web.xml file = D:\develop\eclipse\workspaces\main\jiemamy-tutorial\src\main\webapp\WEB-INF\web.xml
[INFO] Classes = D:\develop\eclipse\workspaces\main\jiemamy-tutorial\src\main\webapp\WEB-INF\classes
2008-08-02 22:04:26.390::INFO:  Logging to STDERR via org.mortbay.log.StdErrLog
[INFO] Context path = /jiemamy-tutorial
[INFO] Tmp directory =  determined at runtime
[INFO] Web defaults = org/mortbay/jetty/webapp/webdefault.xml
[INFO] Web overrides =  none
[INFO] Webapp directory = D:\develop\eclipse\workspaces\main\jiemamy-tutorial\src\main\webapp
[INFO] Starting jetty 6.1.9 ...
2008-08-02 22:04:26.593::INFO:  jetty-6.1.9
2008-08-02 22:04:26.812::INFO:  No Transaction manager found - if your webapp requires one, please configure one.
2008-08-02 22:04:27.390::INFO:  Started SelectChannelConnector@0.0.0.0:8080
[INFO] Started Jetty Server
2008-08-02 22:04:35.557::INFO:  Shutdown hook executing
[INFO] 2008-08-02 22:04:36.070::INFO:  Shutdown hook completeJetty server exiting.

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 24 seconds
[INFO] Finished at: Sat Aug 02 22:04:36 JST 2008
[INFO] Final Memory: 9M/29M
[INFO] ------------------------------------------------------------------------

D:\develop\eclipse\workspaces\main\jiemamy-tutorial>

(2)以下のようなログが表示された場合は、PostgreSQLが起動していることを確認してください。

[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Connection refused. Check that the hostname and port are correct and that
 the postmaster is accepting TCP/IP connections.

Connection refused: connect
 

(3次のログが表示された場合は、postgresユーザーのパスワードがpostgresであることを確認してください。

[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] FATAL: password authentication failed for user "postgres"

 

まとめと今後の展望

 以上のとおり、データベースに依存したシステムの開発・運用に関連したリファクタリングやマイグレーションなどの作業を容易にしていくこと、これがJiemamy Projectのミッションです。ここでご紹介した機能以外にも、以下のとおり一般的に必要だと考えられる機能も実装しています。

  • データベースのリバースによるスキーマの読み込み
  • 論理名・物理名表示の切り替え
  • JavaによるEntityクラス(JPA)の自動生成
  • VIEWの定義ER図を画像として保存
  • データベース設計仕様書(HTML)の自動生成

 そのほかに、今後の展望として、以下の機能などを考えていますが、まだまだイメージには限りがありません。1つずつ実現していくつもりです。

  • ER図(ダイアグラム)とEntityクラスのリファクタリングをお互いに追従させる
  • エンティティクラスからERダイアグラムを生成する
  • JiemamyのデータファイルをWebアプリケーション内に持つことにより、ビルド時ではなくインストール時にデータベースを初期化する(スマートインストール)
  • 初期化だけではなくバージョンアップ時のマイグレーションに対応する
  • JavaとEclipseのほかにニーズがあれば、そこに向けて展開していく

最後に

 現在公開されているJiemamyの最新版(Version 0.1.x系)は、プロトタイプの扱いです。前述のとおり、ある程度の動作はできていますが、まださまざまな問題点を抱えており、実際の業務へ適用していただくには時期尚早だと考えています。現在、1からコードを書き直しつつ、新バージョン(0.2.x系)を鋭意開発中です。今後の発展にご期待ください。

次のページへ 3/3  

 Index
Jiemamy作者が考える “データベースの進化的設計”
データベースもアジャイル開発に対応したい!
  Page 1
・データベースもアジャイルで構築したい!
・DB設計・リファクタリングサポートツール「Jiemamy」
・Jiemamyのインストール
  Page 2
・デモ1:チェックアウトから起動まで
・デモ2:リファクタリング
→ Page 3
・まとめと今後の展望
・最後に



Database Expert フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Database Expert 記事ランキング

本日月間