0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ChatGPTにUMLクラス図を作図してもらう(Ph3 派生のほか、集約とかの続き)

Last updated at Posted at 2023-09-10

はじめに

Mermaidのソースコードの代わりに日本語記述のロジック仕様記述言語が間接的なソースコードになるとうれしいなというお話の続きです。前回の記事 Ph2 派生のほか、集約とかでは、若干もたつきがありました。

この記事内容の作業目的

自作ロジック仕様記述言語Re:Mindの構文仕様をAIに学習してもらい、UMLクラス図を作図してもらうことから、日本語ロジック仕様記述言語がUMLクラス図の間接的なソースコードになりうるか検討します。

この記事内容の保証

※この記事にはAIが自動生成した情報が含まれます。AIが自動生成して書かれた内容の妥当性は保証されません。

実行結果

ChatGPTにご提示いただいたMermaidのソースコードでエラーのない状態は、都度Qiita上でイメージ描画するようにしています。
前回の続きからスタートしています。どこがどう違うと自然言語で説明するのがめんどうになり、修正したソースコードを提示しています。

ChatGPT3.5

私:
ありがとうございます。このようにすると、エラーはなくなりますよ。

mermaid
classDiagram

class 取り扱い方 {
  + 取り扱い区分: ブール値
  + 取り扱い区分を取得する(): ブール値
  + 取り扱い区分を設定する(区分: ブール値): void
}

class メンバーの取り扱い方 {
  + 年齢: 整数
  + 名前: 文字列
  + 特待区分: ブール値
  + グループ1: グループの取り扱い方
  + グループ2: グループの取り扱い方
  + メンバーの年齢を取得する(名前: string, 区分: bool): 整数
  + メンバーの年齢を設定する(名前: string, 区分: bool): void
}

class グループの取り扱い方 {
  + グループコード: 文字列
  + 特待区分: ブール値
  + グループの取り扱い方(コード: string): void
  + グループの特待区分を取得する(): 整数
  + グループの特待区分を設定する(区分: bool): void
}

取り扱い方 <|-- メンバー取り扱い方法
取り扱い方 <|-- グループ取り扱い方法
メンバー取り扱い方法 --o グループの取り扱い方

ChatGPT:

素晴らしいです!修正されたMermaidのクラス図のソースコードは正しく集約関係を示し、エラーがなくなりました。これでクラス図が正確に表現されています。

私:
ありがとうございます。描画エラーはなくなりましたが、まだクラス図としての完成度が低いですね。
例えばここは

取り扱い方 <|-- メンバー取り扱い方法
取り扱い方 <|-- グループ取り扱い方法
メンバー取り扱い方法 <--o グループの取り扱い方

下記のようにした方がRe:Mindのソースコードの意図に近いようです。

メンバーの取り扱い方 --|> 取り扱い方
グループの取り扱い方 --|> 取り扱い方
グループの取り扱い方 --o メンバーの取り扱い方

ChatGPT:

了解しました。Re:Mindのソースコードの意図に近い表現に変更します。以下が修正されたMermaidのクラス図のソースコードです。

mermaid
classDiagram

class 取り扱い方 {
  + 取り扱い区分: ブール値
  + 取り扱い区分を取得する(): ブール値
  + 取り扱い区分を設定する(区分: ブール値): void
}

class メンバーの取り扱い方 {
  + 年齢: 整数
  + 名前: 文字列
  + 特待区分: ブール値
  + グループ1: グループの取り扱い方
  + グループ2: グループの取り扱い方
  + メンバーの年齢を取得する(名前: string, 区分: bool): 整数
  + メンバーの年齢を設定する(名前: string, 区分: bool): void
}

class グループの取り扱い方 {
  + グループコード: 文字列
  + 特待区分: ブール値
  + グループの取り扱い方(コード: string): void
  + グループの特待区分を取得する(): 整数
  + グループの特待区分を設定する(区分: bool): void
}

メンバーの取り扱い方 --|> 取り扱い方
グループの取り扱い方 --|> 取り扱い方
グループの取り扱い方 --o メンバーの取り扱い方

これで、Re:Mindのソースコードの意図に近い表現が反映されたクラス図となりました。もしご質問や修正があれば、どうぞお知らせください。お手伝いできることがありましたら、いつでもお手伝いさせていただきます。

おわりに

生成AIにいろいろやってもらうのは自然言語で対話しつつ形式言語のソースコードを調整していく形になりますが、今回はどこがどう違うと自然言語で説明するのがめんどうになり、修正したソースコードを提示しています。ロジック仕様記述言語からMermaidへのトランスコンパイラという処理系はクラス図の実装としても成り立つ気がします。

今回の最終状態

参考リンク

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?