Slide 1

Slide 1 text

ChatGPTとPlantUML/Mermaidによる ソフトウェア設計 AIで加速する要件定義と仕様設計 (C) TENDA CO., LTD. 1

Slide 2

Slide 2 text

発表者自己紹介 (C) TENDA CO., LTD. 2 板橋吾一(いたばしごいち)、もうすぐ48歳 2016年テンダ入社 役職:スペシャリスト 主な仕事:Webシステム開発 提案、マネジメント、設計、開発、テスト、運用/保守、インフラ構築、研究開発なんでもやる 大学院時代の研究テーマはソフトウェアの設計を論理的な(数学的な)手法を使って効率化する 研究でした

Slide 3

Slide 3 text

はじめに (C) TENDA CO., LTD. 3

Slide 4

Slide 4 text

はじめに (C) TENDA CO., LTD. 4 突然ですが… あなたは プロジェクトリーダーとして、開発メンバーに2つのバッチプログラムの 開発を指示することになりました。 準備できる時間はわずか1時間。 バッチの動作は次の通り バッチ1 • システムAのDBからCSVを出力 • API経由でシステムBにアップロード バッチ2 • システムBの処理結果を確認 • 3分おきにAPIで確認し、結果をログに記録 この状況で、どうすれば正確かつ効率的に指示を出せるでしょうか?

Slide 5

Slide 5 text

はじめに (C) TENDA CO., LTD. 5 指示方法の選択肢 1. 口頭で指示 → 手軽だが記録が残らない 2. テキストをそのまま渡す → より確実だが誤解が出るかもしれない 3. Excel/PowerPointでイメージ図を作って指示 → 確実だが作成やその後に編集する際に時間がかかる

Slide 6

Slide 6 text

はじめに (C) TENDA CO., LTD. 6 私ならChatGPTにこう指示します 次のバッチ処理の流れをplantumlのシーケンス図で作成して。 ---- バッチ1 • システムAのDBからCSVを出力 • API経由でシステムBにアップロード バッチ2 • システムBの処理結果を確認 • 3分おきにAPIで確認し、結果をログに記録

Slide 7

Slide 7 text

はじめに (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

Slide 8

Slide 8 text

はじめに (C) TENDA CO., LTD. 8 これをVisual Studio Code のプラグインで変換するとこんな図が表示されます

Slide 9

Slide 9 text

PlantUML・Mermaidによる 要件・仕様のモデル化 (C) TENDA CO., LTD. 9

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

PlantUML・Mermaidによる要件・仕様のモデル化 (C) TENDA CO., LTD. 11 個人的によく使う図 シーケンス図(PlantUML/Mermaid) アクティビティ図(PlantUML) @startuml |申請者| start :申請書作成; :提出; |上長| (A) :内容確認; if (承認するか?) then (Yes) :承認; else (No) :差し戻し; |申請者| :修正して再提出; (A) endif |上長| stop @enduml

Slide 12

Slide 12 text

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 }

Slide 13

Slide 13 text

AIがもたらすさらなる効率化 (C) TENDA CO., LTD. 13

Slide 14

Slide 14 text

AIがもたらすさらなる効率化 (C) TENDA CO., LTD. 14 テキスト(自然言語)で書いたバッチの動作 → AIに指示してPlantUML/Mermaidスクリプトを自動生成 コツはAIにざっくりと概要を伝えて図を生成し、細かい部分は自分で編集 できあがった図は打合せで見せ、修正があればその場で編集

Slide 15

Slide 15 text

まとめ (C) TENDA CO., LTD. 15

Slide 16

Slide 16 text

まとめ (C) TENDA CO., LTD. 16 モデル化の意義 複雑なシステムをシンプルに表現 誤解を減らし、手戻りを防止 共通言語で議論・レビューが可能 変更時の影響を把握しやすい 品質向上の土台となる AI × PlantUML/Mermaid が設計効率を飛躍的に高める 要件や設計の大事な部分を素早く図に変換し、チームで共有 本来注力すべき判断や検討に時間を割ける