Redmineのアーキテクチャ
Redmineのアーキテクチャを知るための方法を公開していた記事をメモ。
これは素晴らしい。
【元ネタ】
Redmine の ERD を描いてみました - kiwamu日記
MOONGIFT : Railsを見える化「RailRoad」 オープンソース・ソフトウェア/フリーウェアを毎日紹介
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」カテゴリの記事
- Jiraの機能はTracに似ている気がする #redmine(2025.06.01)
- Redmineは組織のナレッジ基盤として実現可能なのか~島津製作所の事例を読み解く #redmineT(2024.12.29)
- 「RedmineのUbuntu+Docker構築への移行」の感想 #redmineT(2024.11.24)
- 第27回redmine.tokyo勉強会の感想 #redmineT(2024.11.10)
- Redmineのバージョン設定でプロジェクトの設定方法が違う(2024.06.23)
「Ruby」カテゴリの記事
- 「コーディングを支える技術」は良い本だ(2022.05.26)
- 知識は経験よりも大切か、経験は知識よりも勝るのか、SECIモデルは相互作用を語る(2022.04.26)
- 「RubyやRailsは終わった」という記事のリンク(2022.01.09)
- ITの技術や知識はツールの習得と表裏一体である(2021.03.26)
- JRubyの終焉(2020.06.09)
コメント