PlantUMLでER図を作成してみた


ER図を作成するために、PlantUML を使ってみました。

PlantUMLとは

UMLなどのダイアグラムを、DSL(ドメイン固有言語)で作成してくれるツールです。
※ DSL:特定領域に特化した言語

以下、公式ページより。

PlantUML は、以下のようなダイアグラムを素早く作成するためのコンポーネントです。
・シーケンス図
・ユースケース図
・クラス図
・アクティビティ図(古い文法はこちら)
・コンポーネント図
・状態遷移図(ステートマシン図)
・オブジェクト図
・配置図
・タイミング図

PlantUMLの導入手順

必要環境

  • Homebrew
  • VSCode

PlantUMLのインストール

$ brew install graphviz
$ brew install plantuml

VSCode に PlantUML のプラグインをインストール

  • VSCodeを起動します
  • Marketplace より、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等で管理すれば、コード差分や変更履歴がわかるので、設計周りのドキュメント管理がしやすくなると思います。

参考