ChatGPTと連携して簡単に始める！VSCodeでPlantUMLを使ったシステム設計入門

## はじめに
PlantUMLは、テキストベースでUML図を作成できる強力なツールです。今回の記事では、VSCodeを使用してPlantUMLを設定し、使用する方法を紹介します。これにより、開発者はシステム設計を効率的に行い、リアルタイムで図を確認することができます。

さらに、ChatGPTとの連携を活用して、システム設計情報を迅速にPlantUML形式で出力する方法についても解説します。この連携により、設計プロセスがスムーズに進み、ドキュメントの整備や共有が容易になります。

以下の手順に従って、PlantUMLとVSCodeのセットアップを行い、設計効率を向上させましょう。


ブロック崩しゲームのクラス図の例
![sequence.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/eae8d8ed-5eaa-5160-e3fe-eeece047141c.png)


## 必要なもの
- Visual Studio Code（以下、VSCode）
- Java（PlantUMLはJavaで動作します）
  - Javaには商用利用可能なバージョンとそうでないバージョンがあります。商用利用する場合はライセンスを確認してください。
- PlantUML拡張機能
- Graphviz（図の描画に必要）

## 手順

### 1. Javaのインストール
PlantUMLはJavaで動作するため、Javaのインストールが必要です。

1. [Javaの公式サイト](https://www.oracle.com/java/technologies/javase-downloads.html)から最新のJDKをダウンロードしてインストールします。
2. インストールが完了したら、以下のコマンドでJavaが正常にインストールされたか確認します。
    ```sh
    java -version
    ```

### 2. VSCodeのインストール
まだインストールしていない場合は、[VSCodeの公式サイト](https://code.visualstudio.com/)からダウンロードしてインストールします。

### 3. PlantUML拡張機能のインストール
VSCodeには多くの拡張機能がありますが、PlantUMLを使うためには専用の拡張機能をインストールする必要があります。

1. VSCodeを起動します。
2. サイドバーの拡張機能アイコン（四角形が四つ重なったアイコン）をクリックします。
3. 検索バーに「PlantUML」と入力し、検索結果から「PlantUML」を選択します。
4. 「インストール」ボタンをクリックして、拡張機能をインストールします。

### 4. Graphvizのインストール
PlantUMLはGraphvizを使用して画像を生成します。Graphvizのインストールが必要です。

1. [Graphvizの公式サイト](https://graphviz.gitlab.io/download/)から適切なバージョンをダウンロードしてインストールします。
2. インストールが完了したら、以下のコマンドでGraphvizが正常にインストールされたか確認します。
    ```sh
    dot -version
    ```

### 5. 設定の確認
拡張機能のインストールが完了したら、設定を確認します。とくにローカルで実行する場合には、まずはデフォルトの設定のまま進めていきましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/f0a4479d-8737-9cd6-f0f5-01562c896a22.png)

### 6. 使用方法
実際にPlantUMLを使用してみましょう。

1. 新しいファイルを作成し、拡張子を`.puml`または`.plantuml`にします。
2. 以下のようにUMLの記述を行います。
    ```puml
    @startuml
    Alice -> Bob: Hello
    @enduml
    ```
```plantuml
 @startuml
    Alice -> Bob: Hello
    @enduml
```
3. ファイルを保存し、右クリックして「PlantUML: Preview Current Diagram」を選択します。UML図がプレビュー表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/0660fe21-3a30-5b38-2cd2-2e0c1dd53788.png)

### 7. PlantUMLの表記参考
PlantUMLの記述方法や詳細な機能については、[PlantUMLの公式ドキュメント](http://plantuml.com/ja/)を参照してください。公式ドキュメントには、各種UML図の例や構文の詳細が掲載されています。

## 機能

- **プレビュー図の表示**: `Alt + D`（Macでは`Option + D`）を押してPlantUMLプレビューを開始。
- **自動更新**: 図がエクスポートされた場合、即座にプレビューを更新。
- **ズーム&スクロールサポート**
- **マルチページ図のサポート**
- **エクスポート機能**: カーソル位置の図、現在のファイルの図、ワークスペース全体の図、選択したワークスペースの図をエクスポート。
- **URL生成**: ローカルまたはサーバーから。
- **シンボルリストサポート**
- **マークダウン統合サポート**: マークダウンファイル内でPlantUMLを表示。
- **画像からソースを抽出**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/6de65c05-153f-31b6-c8cd-2fa74ad54793.png)
このメニューからダイアグラムをエクポートすることができる

## ChatGPTを使ったPlantUML形式の設計情報指定と出力

以下は、ChatGPTを使ってPlantUML形式で設計情報を指定し、その結果を出力するプロンプト例と結果の例です。

### プロンプト例

```
以下のシステム設計を基に、シーケンス図をPlantUML形式で出力してください。

システム名：ユーザー管理システム

処理の流れ：

ユーザーがログイン画面で名前とパスワードを入力します。
認証システムがユーザー情報を検証します。
認証システムがデータベースにユーザー情報の確認をリクエストします。
データベースが認証システムにユーザー情報を返します。
認証システムがログイン結果をユーザーに返します。
管理者がユーザー管理画面でユーザー情報を編集します。
認証システムがデータベースにユーザー情報の更新をリクエストします。
データベースが認証システムに更新結果を返します。
認証システムが管理者に更新結果を返します。
以下のシーケンス図をPlantUML形式で生成してください。
```

### 結果の例（PlantUML形式）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/e10e86fb-15a8-81c3-bc59-c5dc23a99a10.png)

ChatGPTで出力したテキストを保存してVsCodeでUMLのダイアグラムを可視化して確認する。
```plantuml
@startuml
actor User
actor Admin
participant "Login Screen" as LS
participant "Auth System" as AS
participant "Database" as DB

User -> LS: Enters username and password
LS -> AS: Sends login details
AS -> DB: Requests user verification
DB -> AS: Returns user data
AS -> LS: Returns login result
LS -> User: Displays login result

Admin -> AS: Requests to edit user information
AS -> DB: Updates user information
DB -> AS: Returns update result
AS -> Admin: Returns update result
@enduml
@enduml

```

### 説明

- 上記のプロンプトでは、システム設計の主要コンポーネントとそれらの関係を指定しています。
- ChatGPTはこの情報をもとに、PlantUML形式のコードを生成します。
- このPlantUMLコードをVSCodeのPlantUMLプラグインで可視化することで、システム設計を確認できます。

このようにして、システム設計の情報を具体的に指定し、PlantUML形式で出力することができます。

## まとめ
今回の記事では、VSCodeでPlantUMLを使用するための環境設定と基本的な使い方について紹介しました。PlantUMLを使うことで、テキストベースで簡単にUML図を作成し、VSCodeのプレビュー機能を活用してリアルタイムで確認することができます。

さらに、ChatGPTを活用することで、システム設計情報を効率的にPlantUML形式に変換する手順も紹介しました。これにより、設計プロセスがスムーズに進み、ドキュメントの整備や共有が容易になります。

PlantUMLとVSCodeを組み合わせることで、開発効率を大幅に向上させることができます。ぜひ、この記事を参考にして、あなたのプロジェクトに導入してみてください。