« 自社製品をドッグフードで開発 | トップページ | 「Redmineによるタスクマネジメント実践技法」はお早めに! »

2010/10/16

Redmineのアーキテクチャ

Redmineのアーキテクチャを知るための方法を公開していた記事をメモ。
これは素晴らしい。

【元ネタ】
Redmine の ERD を描いてみました - kiwamu日記

MOONGIFT : Railsを見える化「RailRoad」 オープンソース・ソフトウェア/フリーウェアを毎日紹介

RailRoad diagrams generator

ruby-graphviz を使う - Loud Minority

GraphvizをRubyから使う | Jottin, Jotting!

Railsを見える化するツールRailRoadを使えば、コントローラやモデル一覧を自動生成できる。
真似てやってみた。

gem install ruby-graphviz
gem install railroad

railroad -o controller.dot -C
railroad -o model.dot -M
neato -Tpng controller.dot > controller.png
neato -Tpng model.dot > model.png

但し、ER図はDBDesignerなど他のツールでリバースする。
関係は自分で引かないといけないが、一覧できるのはスゴクいい。
Rubyはメタプログラミングが強いから、ソースコードからアーキテクチャを再現するためのリバースエンジニアリングの手法が充実しているのだろうと想像する。

redmineのテーブルは47個ぐらいで、そんなに多くない。
だからER図を一度きちんと書いてみたいな~と思っていたが、Redmineの構造を知る上でこのツールは良い。
ER図の関連さえ分かれば、モデルやコントローラーはテーブル間の関係(relation)や業務ロジックを実装しているに過ぎないから。

興味を惹いたのは、ワークフローを管理するテーブル。
trackers テーブルとworkflows テーブルが用意されているので、新規のトラッカーを追加したり、ワークフローを新規追加するのが可能になっていて、すごく柔軟な作りになってる。

きちんと見ていないけど、テーブルの構造はかなり正規化されているので、機能追加やプラグインによる機能拡張がやりやすい構造になっているのだろう。
Redmineのプラグインを作りたい人は、上記のツールを使って、ER図やアプリケーションの構造に目を通しておいた方が、良いアプリケーションを作れるようになるだろう。

できれば次回の本のネタにしておきたい(笑)

|

« 自社製品をドッグフードで開発 | トップページ | 「Redmineによるタスクマネジメント実践技法」はお早めに! »

Redmine」カテゴリの記事

Ruby」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: Redmineのアーキテクチャ:

« 自社製品をドッグフードで開発 | トップページ | 「Redmineによるタスクマネジメント実践技法」はお早めに! »