こんにちは、個人ブログ「TechJourney」を運営しているkoimaiです!
私は情報系の大学に通っており、講義でシステム構造設計書を書く機会がありました。その際に、シーケンス図を作成するのが非常に手間だったため、もっと簡単に作成できる方法はないかと調べました。
すると、「PlantUML」という、テキストからUML図を作成できるツールを見つけて、その便利さに感動しました。
今回は、その経験をもとにPlantUMLの魅力について紹介します。
UML図とは
UML(Unified Modeling Language)とは、オブジェクト指向のシステムを視覚的に表現するための標準言語のこと。
UMLは、システム開発において重要な役割を果たし、システムの構造や振る舞いを明確にするために使用される。
以下に、UML図の主な種類を紹介します。
- クラス図(Class Diagram)
- システムの静的構造を表現する
- クラス、属性、メソッド、およびクラス間の関係を示す
- 主に、システムの設計やデータベース設計に使用される
- シーケンス図(Sequence Diagram)
- システム内のオブジェクト間でのメッセージ交換のタイミングと順序を表現する
- オブジェクト同士のやり取りやプロセスの流れを視覚化する
- 主に、システムの動的な振る舞いやプロセスの理解に使用される
- ユースケース図(Use Case Diagram)
- システムの機能をユーザー視点で表現する
- アクター(ユーザーや他のシステム)とユースケース(システムの機能)を示す
- 主に、システムの要件定義や機能の範囲を明確にするために使用される
UML図を使用することで、システムの複雑な動作を視覚的に理解しやすくなり、開発チーム間のコミュニケーションが円滑にできる。
また、設計ミスや誤解を減らすことで、プロジェクトの品質向上に寄与する。
次に、それらを簡単に作成できるツールであるPlantUMLについて説明します。
PlantUMLとは
PlantUMLは、テキスト記述からUML図を自動生成するオープンソースのツールです。
シンプルな記法で、クラス図やシーケンス図などを描画できるため、設計やドキュメント作成の効率を大幅に向上させます。
ここでは、PlantUMLの基本的な使用方法を紹介します。まず、PlantUMLを使用するために必要な準備としてJavaのインストールとVSCOdeの拡張機能の導入方法について説明します。
Javaのインストール
すでにお使いのPCにJavaがインストールされていれば、このステップはとばしてください。
公式サイトから最新のJava Development Kit(JDK)をダウンロードをします。
ダウンロードしたインストーラを実行して、指示に従ってインストールを完了してください。
Javaのインストール確認
コマンドプロンプトやターミナルを開き、以下のコマンドを入力してJavaが正しくインストールされていることを確認しましょう。
java --version
正常にインストールされていれば、Javaのバージョン情報が表示されます。
Graphvizのインストール
Graphvizは、シーケンス図には不要ですが、ユースケース図やクラス図などの特定の図を描画するために必要です。
MacOSの場合は、Homebrewでインストールすることができます。
brew install graphviz
VSCodeの拡張機能でPlantUMLを使用
PlantUMLを使用する方法として、公式サイトからダウンロードしてくる、Dockerを利用して仮想環境で用意するなど複数ありますが、VSCodeの拡張機能が一番便利です。
VSCodeを起動して、拡張機能で「PlantUML」を検索をして、PlantUMLをインストールしてください。
以上の操作で、VSCodeで使用できるようになりました。
PlantUMLの使用例
PlantUMLを使うことで、さまざまなUML図を簡単に作成できます。
ここでは、アプリケーション開発においてよく考えられるシーケンス図、ユースケース図、クラス図の具体例を紹介します。
シーケンス図における使用例
シーケンス図は、システム内のオブジェクト間でのメッセージ交換のタイミングと順序を表現します。
以下は、ユーザーがログインするプロセスのシーケンス図の例です。
@startuml login_sequence
actor User
User -> LoginPage: ログインページを開く
User -> LoginForm: 資格情報を入力する
LoginForm -> AuthService: 資格情報を検証する
AuthService -> Database: ユーザーデータを照会する
Database --> AuthService: ユーザーデータを返す
AuthService --> LoginForm: 認証結果を返す
LoginForm --> User: ログイン結果を表示する
@enduml
このシーケンス図は、ユーザーがログインページを開き、資格情報を入力し、認証サービスがデータベースと通信してユーザーを認証するプロセスを表しています。
ユースケース図における使用例
ユースケース図は、システムの機能をユーザー視点で表現し、ユーザーとシステムの相互作用を示します。
以下は、ブログ管理システムにおけるユースケース図の例です。
@startuml blog_use_cases
actor Blogger
actor Visitor
Blogger --> (ブログ記事を書く)
Blogger --> (ブログ記事を編集する)
Blogger --> (ブログ記事を削除する)
Visitor --> (ブログ記事を読む)
Visitor --> (ブログ記事にコメントする)
@enduml
このユースケース図は、ブログ管理システムにおける主な機能と、それに関わるアクター(BloggerとVisitor)を示しています。
クラス図における使用例
クラス図は、システムの静的構造を表し、クラス間の関係を示します。
以下は、簡単なeコマースシステムのクラス図の例です。
@startuml ecommerce_class_diagram
left to right direction
class User {
+String name
+String email
+String password
+login()
+logout()
}
class Product {
+String name
+String description
+double price
+addToCart()
}
class ShoppingCart {
+User user
+List<Product> products
+addProduct(Product)
+removeProduct(Product)
+checkout()
}
User "1" -- "1..*" ShoppingCart: owns
ShoppingCart "1" -- "0..*" Product: contains
@enduml
このクラス図は、ユーザー、商品、ショッピングカートのクラス間の関係を示しています。
ユーザーはショッピングカートを所有し、ショッピングカートは複数の商品を含むことができます。
UMLをテキストで記述できるメリット
UML図をテキストで記述することには多くのメリットがあります。
その中でも特に注目すべきは、Gitを使ったバージョン管理のしやすさと、生成AIの活用が容易であることです。
Gitのバージョン管理がしやすい
まず、Gitでのバージョン管理がしやすい点についてです。UML図をテキスト形式で記述することで、従来の画像ファイル形式とは異なり、変更履歴を容易に追跡することができます。
例えば、プロジェクトメンバーがシステム設計を修正した際、その変更がどの部分で行われたのかを明確に確認することができます。
Gitのdiff機能を使えば、変更箇所がハイライトされるため、どの部分が追加、削除、変更されたのかが一目瞭然です。これにより、コードレビューや設計の確認作業が格段に効率化されます。
生成AIを活用できる
次に、生成AIを活用できる点についてです。PlantUMLの文法を理解していなくても、自然言語でUML図を作成することが可能です。
例えば、システムの要件や設計を自然言語で記述し、それを生成AIに入力するだけで、対応するPlantUMLのコードが生成されます。
文法を理解して自分で書けますという人であったとしても、システムの詳細な説明を入力するだけで、複雑なUML図を生成できるので、使わない選択肢はありません。
この記事で紹介した使用例も、すべて生成AIにより生成したものです。
まとめ
PlantUMLを使ったテキストベースのUML図作成は、設計の効率化に大いに役立つと感じました。
Gitによるバージョン管理が容易になり、変更履歴の追跡や差分の確認がしやすくなります。これにより、プロジェクトの進行管理や設計の見直しが効率的に行え、チームでの共同作業もスムーズになります。
また、生成AIを活用すれば、PlantUMLの文法を知らなくても自然言語でUML図を作成できます。
大学の講義での経験からも、PlantUMLはシーケンス図、クラス図、ユースケース図などの作成を驚くほど簡単にしてくれるツールであることがわかりました。
UML図を書く機会がある方は、ぜひ試してみることをお勧めします!