Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ChatGPTとPlantUML/Mermaidによるソフトウェア設計

Avatar for gowhich501 gowhich501
September 04, 2025

 ChatGPTとPlantUML/Mermaidによるソフトウェア設計

Avatar for gowhich501

gowhich501

September 04, 2025
Tweet

Other Decks in Technology

Transcript

  1. 発表者自己紹介 (C) TENDA CO., LTD. 2 板橋吾一(いたばしごいち)、もうすぐ48歳 2016年テンダ入社 役職:スペシャリスト 主な仕事:Webシステム開発

    提案、マネジメント、設計、開発、テスト、運用/保守、インフラ構築、研究開発なんでもやる 大学院時代の研究テーマはソフトウェアの設計を論理的な(数学的な)手法を使って効率化する 研究でした
  2. はじめに (C) TENDA CO., LTD. 4 突然ですが… あなたは プロジェクトリーダーとして、開発メンバーに2つのバッチプログラムの 開発を指示することになりました。

    準備できる時間はわずか1時間。 バッチの動作は次の通り バッチ1 • システムAのDBからCSVを出力 • API経由でシステムBにアップロード バッチ2 • システムBの処理結果を確認 • 3分おきにAPIで確認し、結果をログに記録 この状況で、どうすれば正確かつ効率的に指示を出せるでしょうか?
  3. はじめに (C) TENDA CO., LTD. 5 指示方法の選択肢 1. 口頭で指示 →

    手軽だが記録が残らない 2. テキストをそのまま渡す → より確実だが誤解が出るかもしれない 3. Excel/PowerPointでイメージ図を作って指示 → 確実だが作成やその後に編集する際に時間がかかる
  4. はじめに (C) TENDA CO., LTD. 6 私ならChatGPTにこう指示します 次のバッチ処理の流れをplantumlのシーケンス図で作成して。 ---- バッチ1

    • システムAのDBからCSVを出力 • API経由でシステムBにアップロード バッチ2 • システムBの処理結果を確認 • 3分おきにAPIで確認し、結果をログに記録
  5. はじめに (C) TENDA CO., LTD. 7 するとこんなテキストが返ってきます @startuml participant "システムA(DB)"

    as A participant "バッチ1" as Batch1 participant "システムB" as B participant "バッチ2" as Batch2 participant "ログファイル" as Log A -> Batch1 : データ抽出 Batch1 -> Batch1 : CSV出力 Batch1 -> B : CSVアップロード(API) B -> B : アップロード処理 loop 3分おき Batch2 -> B : 結果確認(API) B --> Batch2 : 成功/失敗 Batch2 -> Log : 記録 end @enduml
  6. PlantUML・Mermaidによる要件・仕様のモデル化 (C) TENDA CO., LTD. 10  PlantUML・Mermaid ソフトウェアの要件定義や設計に役立つ図を生成するためのテキスト記法 •

    双方で生成できる図が若干異なる 図を生成する際のレイアウトは自動調整 テキストベースで図を作成・修正するので修正が容易。Git管理も可能 テキストから図を生成する方法 • PlantUMLは Visual Studio Code のプラグイン + GraphViz + Javaランタイム • Mermaid記法はMarkdownテキストに埋め込み  ソフトウェアのある側面を抽出・単純化して表現すること → モデル化  モデル化のメリット 顧客やメンバー間で認識のすり合わせが容易になる 考慮漏れや曖昧な部分を見つけることができる
  7. PlantUML・Mermaidによる要件・仕様のモデル化 (C) TENDA CO., LTD. 11 個人的によく使う図 シーケンス図(PlantUML/Mermaid) アクティビティ図(PlantUML) @startuml

    |申請者| start :申請書作成; :提出; |上長| (A) :内容確認; if (承認するか?) then (Yes) :承認; else (No) :差し戻し; |申請者| :修正して再提出; (A) endif |上長| stop @enduml
  8. PlantUML・Mermaidによる要件・仕様のモデル化 (C) TENDA CO., LTD. 12 個人的によく使う図 ER図(Mermaid) erDiagram USER

    ||--o{ ORDER : places ORDER ||--|{ ORDER_ITEM : contains PRODUCT ||--o{ ORDER_ITEM : includes USER { int id string name string email } ORDER { int id date orderDate float totalAmount } PRODUCT { int id string name float price } ORDER_ITEM { int id int quantity }
  9. まとめ (C) TENDA CO., LTD. 16 モデル化の意義 複雑なシステムをシンプルに表現 誤解を減らし、手戻りを防止 共通言語で議論・レビューが可能

    変更時の影響を把握しやすい 品質向上の土台となる AI × PlantUML/Mermaid が設計効率を飛躍的に高める 要件や設計の大事な部分を素早く図に変換し、チームで共有 本来注力すべき判断や検討に時間を割ける