【超簡単!!】ER図が爆速で書けるPlantUMLの使い方
はじめに
PlantUMLは、テキストベースでUML図を描くことができるツールです。Visual Studio Code (VSCode) やCursorで利用するための拡張機能としても提供されており、簡単にER図を作成し、ソースコードと一緒に管理することが可能です。
環境
Cursor
MacBook(M3)
PlantUMLで出来ること
PlantUMLは多様な種類のダイアグラムをテキストベースで簡単に記述し、可視化することができるツールです。以下はPlantUMLで作成できるダイアグラムの主な種類です:
-
クラス図: クラスやインターフェイス、それらの間の関係を示すダイアグラムです。オブジェクト指向設計の概念を視覚的に表現します。
-
ユースケース図: システムの機能と外部のアクター(利用者や他のシステム)との関係を示すダイアグラムです。
-
シーケンス図: オブジェクト間のインタラクションとそれが時間とともにどのように進行するかを示します。メッセージの交換と実行の順序を視覚的に表現するのに適しています。
-
アクティビティ図: プロセスフローやワークフローを示すダイアグラムで、条件分岐や並行処理も表現可能です。
-
コンポーネント図: システムの物理的な構成要素やそれらの関係を示すダイアグラムです。
-
状態図: オブジェクトの状態の変化とそれに応じた振る舞いを表現します。
-
オブジェクト図: 特定の時点でのシステムの状態やオブジェクト間の関係を示します。
-
デプロイメント図: システムのハードウェアの配置とそれにデプロイされるソフトウェアの関係を表します。
-
タイミング図: システムのオブジェクトが時間とともにどのように変化するかを示します。
-
エンティティ関係図: データベースのエンティティとその関係を示すダイアグラムです。
拡張機能のインストール
JavaとGraphvizのインストール
Javaのインストール
公式サイトから最新のJava Development Kit(JDK)をダウンロードをします。
ダウンロードしたインストーラを実行して、指示に従ってインストールを完了してください。
以下のコマンドでJavaのインストールが完了しているかを確認できます。
正常にインストールされていれば、Javaのバージョン情報が表示されます。
java --version
Graphvizのインストール
Graphvizは、シーケンス図には不要ですが、ユースケース図やクラス図などの特定の図を描画するために必要です。
MacOSの場合は、Homebrewでインストールが可能です。
brew install graphviz
ER図を作成する
拡張子 .pu で新規ファイルを作成します。
touch er.pu
ファイルに以下を入力します。
@startuml app
entity "User" {
*id : integer
--
name : string
}
entity "UserProfile" {
*user_id : integer
--
birthday : date
bio : text
}
entity "Post" {
*id : integer
--
title : string
content : text
}
entity "Like" {
*user_id : integer
*post_id : integer
--
created_at : datetime
}
User ||--o| UserProfile
User ||--o{ Like
Post |o--o{ Like
@enduml
"command + shift + p"を押してPlantUmlカーソル位置のダイアグラムをプレビューを選択して表示します。
その他
その他にもシーケンス図やアクティビティ図なども簡単に記載出来ます。
シーケンス図の作成
@startuml app
actor User
entity "Login System"
User -> "Login System" : enter username and password
"Login System" -> "Authentication Service" : validate credentials
"Authentication Service" --> "Login System" : authentication result
"Login System" --> User : display result
@enduml
アクティビティ図の作成
@startuml
start
:受注;
:在庫確認;
if (在庫があるか?) then (yes)
:注文確定;
:配送手配;
else (no)
:在庫不足通知;
stop
endif
:注文完了;
stop
@enduml
まとめ
コードベースでUMLを記述できるのは、とても便利ですね。
この記事がPlantUMLの利用を始めるきっかけになれば嬉しいです。
Discussion