ER図を作成するために、PlantUML を使ってみました。
PlantUMLとは
UMLなどのダイアグラムを、DSL(ドメイン固有言語)で作成してくれるツールです。
※ DSL:特定領域に特化した言語
以下、公式ページより。
PlantUML は、以下のようなダイアグラムを素早く作成するためのコンポーネントです。
・シーケンス図
・ユースケース図
・クラス図
・アクティビティ図(古い文法はこちら)
・コンポーネント図
・状態遷移図(ステートマシン図)
・オブジェクト図
・配置図
・タイミング図
PlantUMLの導入手順
必要環境
- Homebrew
- VSCode
PlantUMLのインストール
$ brew install graphviz
$ brew install plantuml
VSCode に PlantUML のプラグインをインストール
PlantUMLのファイル作成/編集
- 拡張子 .pu のファイルを作成します。
- PlantUML記法で、puファイルを編集します。
- VSCode上で [Alt] + [D] でプレビュー画面が開きます.
例 :ER図
EntityRelationship.pu
@startuml EntityRelationship
package "MySQL" as target_system <<Database>> {
entity "USERS" as users {
+ USER_ID [PK]
--
USER_NAME
UID
INSERT_DATA
UPDATE_DATE
DELETE_FLAG
}
entity "PORTFOLIOS" as portfolios {
+ PORTFOLIO_ID [PK]
--
# USER_ID [FK]
--
PORTFOLIO_NAME
PORTFOLIO_URL
REPOSITORY_URL
PORTFOLIO_OVERVIEW
PORTFOLIO_APPEAL
PORTFOLIO_TERM
PORTFOLIO_STATE
NICE_COUNT
INSERT_DATA
UPDATE_DATE
DELETE_FLAG
}
entity "PORTFOLIOS_IMAGES" as portfolios_images {
+ IMAGE_ID [PK]
--
# PORTFOLIO_ID [FK]
--
PORTFOLIO_IMAGE
INSERT_DATA
UPDATE_DATE
DELETE_FLAG
}
entity "PORTFOLIOS_SKILLS" as portfolios_skills {
+ SKILL_ID [PK]
--
# SKILL_CD [FK]
# PORTFOLIO_ID [FK]
--
INSERT_DATA
UPDATE_DATE
DELETE_FLAG
}
entity "PORTFOLIOS_URLS" as portfolios_urls {
+ URL_ID [PK]
--
# PORTFOLIO_ID [FK]
# URL_CATEGORY_ID [FK]
--
URL
INSERT_DATA
UPDATE_DATE
DELETE_FLAG
}
users --right--o{ portfolios
portfolios -down-|{ portfolios_images
portfolios -down-|{ portfolios_skills
portfolios --|{ portfolios_urls
@enduml
Entityで各テーブルを定義して、最後にそれぞれのリレーション情報を記載するだけです。
画像出力
- 以下コマンドで、puフォルダと同じディレクトリにpngファイルが出力されます。
$ plantuml EntityRelationship.pu
まとめ
Excelや他の描画ツールのGUIで図形をペタペタ貼って作成するより、コードでかける方がだいぶ楽に感じました。
記法もシンプルで簡単でした。
あと、コード管理できるのは便利だと思いました。
Git等で管理すれば、コード差分や変更履歴がわかるので、設計周りのドキュメント管理がしやすくなると思います。