ChatGPTでシーケンス図作成

システム開発において、PlantUMLやMermaidを使ってシーケンス図を作成することがあります。
しかし、細かい記法を覚えるのが難しく、特に最初の取り掛かりで作成に時間がかかってしまいます。
そのため、ChatGPTを使ってシーケンス図を作成することができないか試してみました。

作成したい処理を箇条書きで整理する

例えばログインの処理シーケンスを考えたいと仮定して、まずは以下のように箇条書きで処理を洗い出してみます。

1. クライアントはログインAPIにリクエストを送信する。
2. ログインAPIはリクエストに含まれるID/パスワードを元に認証を行う。
   ・ログイン認証がNGの場合、ログインAPIはクライアントに999のレスポンスコードを返す。
   ・ログイン認証がOKの場合、ログインAPIはクライアントに000のレスポンスコードを返す。
3. ログイン認証がOKの場合、ユーザホーム画面に遷移する。
4. ユーザホーム画面に遷移後、クライアントはユーザ情報取得APIをリクエストする。
5. ユーザ情報取得APIはリクエストに含まれるアクセストークンを元に、データベースからユーザ情報を取得する。
   ・ユーザ情報が見つかった場合、ユーザ情報取得APIは000のレスポンスコードとユーザ情報データを返す。
   ・ユーザ情報が見つからなかった場合、ユーザ情報取得APIは100のレスポンスコードを返す。
6. レスポンスコードが000の場合、ユーザホーム画面にユーザ情報を表示する。
7. レスポンスコードが000以外の場合、エラーメッセージを表示する。

ChatGPTへのプロンプト文

前述の箇条書きの内容の最初に
 「次の処理を表すシーケンス図をplantumlのコードで書いてください」
と一文付け加えて、まるっとChatGPTに投げてみましょう。
※mermaidで作成したい場合、”plantuml”の部分を”mermaid”に変更して試してみてください。

次の処理を表すシーケンス図をplantumlのコードで書いてください。 1. クライアントはログインAPIにリクエストを送信する。 2. ログインAPIはリクエストに含まれるID/パスワードを元に認証を行う。 ・ログイン認証がNGの場合、ログインAPIはクライアントに999のレスポンスコードを返す。 ・ログイン認証がOKの場合、ログインAPIはクライアントに000のレスポンスコードを返す。 3. ログイン認証がOKの場合、ユーザホーム画面に遷移する。 4. ユーザホーム画面に遷移後、クライアントはユーザ情報取得APIをリクエストする。 5. ユーザ情報取得APIはリクエストに含まれるアクセストークンを元に、データベースからユーザ情報を取得する。 ・ユーザ情報が見つかった場合、ユーザ情報取得APIは000のレスポンスコードとユーザ情報データを返す。 ・ユーザ情報が見つからなかった場合、ユーザ情報取得APIは100のレスポンスコードを返す。 6. レスポンスコードが000の場合、ユーザホーム画面にユーザ情報を表示する。 7. レスポンスコードが000以外の場合、エラーメッセージを表示する。

そうすると以下のような返答が返ってくると思います。

@startuml
actor Client
participant "ログインAPI" as LoginAPI
participant "ユーザ情報取得API" as UserInfoAPI

== ログインフロー ==
Client -> LoginAPI: ログインリクエスト
activate LoginAPI
LoginAPI -> LoginAPI: 認証(ID/パスワード)
alt 認証NGの場合
    LoginAPI --> Client: 999 (認証NG)
else 認証OKの場合
    LoginAPI --> Client: 000 (認証OK)
    Client -> Client: ユーザホーム画面に遷移
    Client -> UserInfoAPI: ユーザ情報取得リクエスト
    activate UserInfoAPI
    UserInfoAPI -> UserInfoAPI: アクセストークンによるユーザ情報取得
    alt ユーザ情報が見つかった場合
        UserInfoAPI --> Client: 000 (成功), ユーザ情報
        Client -> Client: ユーザホーム画面にユーザ情報を表示
    else ユーザ情報が見つからなかった場合
        UserInfoAPI --> Client: 100 (ユーザ情報未発見)
        Client -> Client: エラーメッセージを表示
    end
    deactivate UserInfoAPI
end
deactivate LoginAPI
@enduml

これをPlantUMLでプレビューしてみると以下のように表示されます。


ものすごく簡単にできてしまいますね。

おわりに

手直しは必要ですが、たたき台としては十分すぎるアウトプットが得られ、ChatGPTの性能に驚きました。
記法を忘れて最初に手が進まない時など、ChatGPTでたたき台を作成してから作業に取り掛かることで、とても効率的に作業を進められそうです。

さらに精度の高い出力を得るためのプロンプトもあると思いますので、良いものを見つけたら紹介したいと思います。

コメント

タイトルとURLをコピーしました