Diagram 6 แบบ — ภาษาที่ AI อ่านดีกว่าคำพูด
AI โง่ลงทันทีเมื่อคำสั่งของเรา กำกวม · diagram คือเครื่องมือทำให้คำสั่ง ไม่กำกวม สัปดาห์นี้เรียน 6 แบบที่นักศึกษาวิศวกรรมต้องใช้ — เลือกใช้ให้ถูกกับสถานการณ์
เป้าหมายสัปดาห์นี้
- รู้จัก 6 แบบ ของ diagram และเลือกใช้ถูก
- เขียน Mermaid ได้เบื้องต้น (AI สร้างให้ได้)
- ใช้ diagram สั่ง AI ให้สร้างของได้ตรงกว่าเดิม
ทำไม Diagram ถึงสำคัญในยุค AI
ลองคิด — ถ้าคุณบอก AI ว่า "ทำระบบจองเครื่อง" AI จะเดาเอง 100 อย่าง · แต่ถ้าคุณส่ง sequence diagram ของ flow การจองให้ดู AI จะ ไม่ต้องเดา · output แม่นขึ้น 10 เท่า
🧭 ไม่แน่ใจใช้แบบไหน? ลองตัวช่วยนี้
ตอบคำถามสั้น ๆ → ระบบแนะนำ diagram + เทมเพลตพร้อมใช้:
เครื่องมือเต็ม (Editor + Validator + Cheat-sheet) ดูที่ 🎨 หน้าเครื่องมือ
1️⃣ Flowchart — Process Logic
ใช้กับ: workflow ของคน, การประมวลผลใน 1 program, การตัดสินใจ if/else · ใช้บ่อยที่สุด
flowchart TD
A([Start]) --> B{เข้าใจโจทย์?}
B -->|No| C[ถาม TA]
C --> B
B -->|Yes| D[ทำการบ้าน]
D --> E[/ส่ง Classroom/]
E --> F([End])
↓ ผลลัพธ์ ↓
2️⃣ Sequence Diagram — Who Talks to Who
ใช้กับ: การสื่อสารระหว่าง parts — frontend ↔ backend ↔ database, hardware ↔ cloud, user ↔ bot
sequenceDiagram
Student->>Web: เปิดหน้าจอง
Web->>Backend: GET /slots
Backend->>Database: SELECT free slots
Database-->>Backend: list of slots
Backend-->>Web: JSON response
Web-->>Student: แสดงช่องว่าง
Student->>Web: เลือกช่อง + ยืนยัน
Web->>Backend: POST /book
Backend->>Database: INSERT booking
Backend->>LINE Bot: แจ้งเตือน
Backend-->>Web: success
Web-->>Student: ใบยืนยัน
↓ ผลลัพธ์ ↓
3️⃣ C4 Model — System Architecture
ใช้กับ: "ภาพรวมของระบบ" — มีอะไรอยู่ในระบบบ้าง, ใครใช้, ติดต่อ external อะไร · นักศึกษาปี 1 ใช้แค่ 2 ระดับแรก พอ:
L1 — Context Diagram (ระบบที่เห็นจากนอก)
3 อย่างหลัก: คน · ระบบของเรา · ระบบภายนอกที่เราเรียกใช้
นักศึกษาที่อยากจอง"]) system["🏭 CNC Booking System
ระบบของเรา
เก็บ booking + แจ้งเตือน"] line[["📧 LINE Notify
External service"]] student <--> system system --> line classDef person fill:#0d3f3a,stroke:#2dd4bf,color:#fff classDef internal fill:#1e3a5f,stroke:#3776ab,stroke-width:3px,color:#fff classDef external fill:#3b2962,stroke:#8b5cf6,color:#fff class student person class system internal class line external
L2 — Container Diagram (อะไรอยู่ในระบบ)
เจาะลึก "CNC Booking System" — มีกี่ container · technology อะไร
Streamlit · UI"] backend["Backend
Flask · API logic"] db[("Database
SQLite")] frontend -->|REST| backend backend -->|SQL| db end line[["📧 LINE Notify"]] student -->|browser| frontend backend -->|HTTPS| line classDef person fill:#0d3f3a,stroke:#2dd4bf,color:#fff classDef external fill:#3b2962,stroke:#8b5cf6,color:#fff class student person class line external
4️⃣ State Machine Diagram — สถานะของสิ่งของ
ใช้กับ: "สิ่งที่มีหลายสถานะ" — booking (รอ → ยืนยัน → ยกเลิก), เครื่องจักร (พร้อม → กำลังใช้ → maintenance), assignment (ส่ง → ตรวจ → ผ่าน/ไม่ผ่าน)
stateDiagram-v2
[*] --> รอยืนยัน : นักศึกษาจอง
รอยืนยัน --> ยืนยันแล้ว : ระบบ approve
รอยืนยัน --> ยกเลิก : timeout 1 ชม.
ยืนยันแล้ว --> กำลังใช้งาน : ถึงเวลานัด
ยืนยันแล้ว --> ยกเลิก : ผู้ใช้ขอยกเลิก
กำลังใช้งาน --> เสร็จสิ้น : กดคืน
เสร็จสิ้น --> [*]
↓ ผลลัพธ์เมื่อ Mermaid render ↓
5️⃣ ER Diagram — โครงสร้างข้อมูล
ใช้กับ: "ก่อนออกแบบ database" — กำหนดว่ามีตารางอะไร, field อะไร, ความสัมพันธ์ยังไง
erDiagram
STUDENT ||--o{ BOOKING : "ทำการจอง"
MACHINE ||--o{ BOOKING : "ถูกจอง"
BOOKING {
int booking_id PK
int student_id FK
int machine_id FK
datetime start_time
datetime end_time
string status
}
STUDENT {
int student_id PK
string name
string email
string line_id
}
MACHINE {
int machine_id PK
string code
string location
string status
}
↓ ผลลัพธ์เมื่อ render ↓
สัญลักษณ์:
||--o{= one-to-many (1 student → many bookings)PK= Primary Key (ID หลัก)FK= Foreign Key (link ไปตารางอื่น)
6️⃣ Block Diagram — ระบบทางกายภาพ
ใช้กับ: "ระบบฮาร์ดแวร์" — IoT, sensor → microcontroller → cloud, mechatronics
DS18B20"/] mcu(["ESP32
microcontroller"]) mqtt[["MQTT Broker
Mosquitto"]] dash[("Dashboard
Streamlit")] relay[\"Relay
เปิด/ปิดพัดลม"\] sensor -->|1-Wire| mcu mcu -->|publish| mqtt mqtt -->|subscribe| dash mcu -->|GPIO| relay classDef input fill:#0d3f3a,stroke:#34d399,color:#fff classDef cpu fill:#3b2962,stroke:#8b5cf6,color:#fff classDef io fill:#1e3a5f,stroke:#2dd4bf,color:#fff classDef output fill:#5c2618,stroke:#ff7a18,color:#fff classDef actuator fill:#5c2618,stroke:#ef4444,color:#fff class sensor input class mcu cpu class mqtt io class dash output class relay actuator
🟢 input · 🟣 cpu · 🔵 communication · 🟠 display · 🔴 actuator
📌 ตารางสรุป — ใช้แบบไหนเมื่อไหร่
| แบบ | เหมาะกับ | เครื่องมือ |
|---|---|---|
| Flowchart | process / workflow / if-else | Mermaid, draw.io |
| Sequence | API call, hardware↔cloud, bot interaction | Mermaid |
| C4 (L1+L2) | "ระบบของเราคืออะไร" | draw.io, Mermaid |
| State Machine | booking, machine, assignment | Mermaid |
| ER | ก่อนสร้าง database | Mermaid, dbdiagram.io |
| Block | hardware system, IoT | draw.io, ปากกา+กระดาษ |
🧰 Mermaid — เครื่องมือคู่ AI ที่สำคัญที่สุด
Mermaid เป็น syntax แบบ text → diagram · ข้อดี:
- copy-paste ส่งให้ AI ได้ทันที (AI เขียน Mermaid ได้เก่งมาก)
- เก็บใน Git ได้ (เป็น text ไม่ใช่ binary)
- GitHub render เป็นรูปอัตโนมัติใน README.md
- เปลี่ยนได้ง่าย — ไม่ต้องลาก mouse ทีละกล่อง
🎨 ลองเลย — Mermaid Live Editor
เปลี่ยน template ได้จาก dropdown (6 ชนิด) · แก้ทางซ้าย → preview ทางขวาทันที
🔍 ลองเช็ค — Flowchart Validator
วาง flowchart syntax แล้วกด ตรวจ · เครื่องมือบอกว่า Start/End/Decision ใช้ถูก semantic มั้ย
Workshop — เลือก 1 ระบบ วาด 3 แบบ
- เลือก 1 ปัญหาจาก W01 — ตัวเดียวกับที่เขียน Problem Statement ไว้
- วาด Flowchart ของ workflow ปัจจุบัน (อันที่เขียนใน W01 ก็ได้) ลองแปลงเป็น Mermaid และให้ AI ปรับให้
- วาด C4 Container Diagram — ระบบที่อยากสร้างมีอะไรบ้าง? (frontend, backend, database, external service)
- วาดอีก 1 แบบ ตามที่เหมาะ — ถ้ามี user หลายสถานะ → State machine · ถ้ามี database → ER diagram · ถ้ามี hardware → Block diagram
- ขอ AI ช่วยปรับ — ส่ง diagram ทั้ง 3 ให้ Claude พร้อมโจทย์: "ดูแล้วระบบนี้น่าจะลืมอะไรไปบ้าง?"
-
บันทึก Mermaid ลงไฟล์
— สร้าง
diagrams.mdใน folder ของ project — ใส่ Mermaid ทั้ง 3 ลงไป
ข้อผิดที่พบบ่อย
ส่งงานสัปดาห์นี้
- 📄 diagrams.md มี Mermaid 3 แบบของ 1 ระบบ (จาก W01)
- 📸 screenshot ของ mermaid.live หรือ GitHub preview ที่ render แล้ว
- 📝 บันทึกสั้น ๆ "AI สังเกตเห็นอะไรที่ฉันลืม"
Reference จาก slide เดิม
เนื้อหานี้เชื่อมโยงกับ Topic 1 — IntroFlowchart ของเอกสารประกอบการสอนเดิม + ขยายเป็น 6 แบบตาม Mainidea