Design Tokens EP.1 ทำไปทำไม ทำไปเพื่ออะไร

เสือขาว
King Power Click
Published in
4 min readJun 6, 2022
ภาพปก

ถ้าใครได้ตามอีเวนต์อย่าง Config หรือ Schema ในช่วงปี-สองปีที่ผ่านมานี้ จะได้ยินคำว่า Design Tokens กันบ่อยมากขึ้น เคยสงสัยมั้ยว่า Design Tokens คืออะไร ทำอะไรได้ ทำไมถึงได้สำคัญ เกี่ยวกับโค้ดรึป่าว แล้วเราจะใช้มันทำอะไรได้บ้าง

ในบทความนี้จะมาเล่าเรื่อง Design Tokens แบบง่าย ๆ ให้เข้าใจคอนเซปต์ และการนำไปใช้กับ Product และจะช่วยพัฒนาพร้อม Scale ได้อย่างไร

ก่อนอื่น…มาทำความรู้จัก Design Tokens กันก่อน

Design Tokens คืออะไร ?

How design tokens can make us better collaborator — JanSix https://www.figma.com/community/file/1105905817981866740

Design Tokens คือ “Single source of truth” ที่ใช้เก็บตัวแปรทุกอย่างในการออกแบบสำหรับใช้แจกจ่ายข้ามไปมาระหว่าง Design Tools และ Coding

พูดง่าย ๆ ก็เหมือน “ชื่อเล่น” ของตัวแปร ที่ใช้ในงานออกแบบนั่นแหละ ไม่ว่าจะเป็น สี (Color), ระยะห่าง (Padding), ขนาด (Size), ช่องว่าง (Spacing), แบบอักษร (Typography) บลา ๆ ๆ เพื่อใช้ในการสื่อสารไม่ว่าจะเป็นภายในทีม หรือระหว่างทีม ให้เป็นภาษาเดียวกันมากขึ้น

ปกติแล้วจะเก็บเป็นรูปแบบของไฟล์ json

ยกตัวอย่างเช่น

สถานการณ์ที่จะเจอบ่อย ๆ ตอน Designer ส่งงาน แต่ไม่มี

Developer: สีน้ำเงินที่ใช้อันนี้คือสีอะไรน่ะ
Designer: อ่า…สี #0075FF มั้งนะ

Developer: เอาให้แน่นะ ใส่ไปแล้วขอให้แก้ทีหลังมันจะยากนะ

Designer:

สรุป รอบหน้าเปลี่ยนโค้ดสีอีก…

แทนที่จะใช้ HEX ก็ตั้งชื่อให้มันซะ

แล้วทำไมเราถึงไม่ตั้งชื่อเล่นให้โค้ดสี #0075FF เนี่ย แทนที่จะบอกเป็นค่า Hex ก็ใช้ชื่อว่า “brand.kpblue-500” แทน เพื่อให้เข้าใจตรงกันว่า

brand.kpblue-500 = #0075FF

รอบหน้าถ้า Developer ถามอีก ก็ตอบเป็นชื่อ Token ไป

Developer: ตกลงสีน้ำเงินที่ใช้อันนี้คือสีอะไร
Designer: สี kpblue-500

Developer: OK 🥳

Global Token

นี่แหละใน Design Tokens จะเรียกสิ่งนี้ว่า “Global Token”

Alias Token ที่เรียก Global Token อีกที

แต่ปกติเราจะไม่ใช้ Global Token ใน UI เท่าไหร่ เพราะชื่อไม่สื่อความหมายและ Scale ยาก …ดังนั้นเราเลยตั้งอีก Token ขึ้นมาเพื่อไปเรียกใช้ Global Token อีกที สิ่งนี้เรียกว่า “Alias Token”

ตัวอย่างการใช้ Token สี Primary ใน Component

จากนั้นเราค่อยนำเอา Alias Token ไปใช้ในงาน UI เช่นใช้เป็นสีในพวก Component ต่าง ๆ

แล้วไงต่อ? 🤷

ก็ไม่ได้ต่างอะไรกับ Shared Style ใน Figma นี่?

ก็ถูก เพราะ Shared Style ไม่ว่าจะเป็นใน Design Tools ต่างก็ใช้คอนเซปต์เดียวกันนี่แหละ แต่ Design Tokens ไม่ได้มีแค่เรื่อง สี (Color) หรือ แบบอักษร (Typography)

ไม่งั้นมันจะเป็น Single source of truth ได้ยังไงล่ะ

ส่วนประกอบ Design Tokens

Design Tokens ประกอบไปด้วยหลายตัวด้วยกัน แต่ถ้าในงานออกแบบ UI ก็จะมี

  • Animation
  • Border
  • Color
  • Size
  • Spacing
  • Shadow
  • Typography
  • Theme

เราลองมาดูใน Component เล็ก ๆ เช่น Button ว่ามันจะมี Token อะไรบ้าง

หรือมองให้ใหญ่ขึ้นว่าจะมี Token อะไรบ้างอยู่ในนั้น

ข้อดีของ Design Tokens

ข้อดีหลัก ๆ ก็ได้เกริ่นไปบ้างแล้วว่า มันจะเป็นตัวช่วยในการสื่อสารระหว่าง Designer กับ Developer แน่นอน แต่ข้อดีอื่น ๆ ก็ยังมีอีกมากมาย เช่น

การวาง Dark mode ที่จริง ๆ เคยเขียนในเวอร์ชั่น Sketch ไปแล้ว นั่นเป็นการทำจาก Design เท่านั้น แต่ถ้าใช้ Token จะสามารถทำ Mode อื่น ๆ สำหรับ Accessibility ให้ Product ได้อย่างไม่จำกัดด้วย อยู่ที่ว่าเราวาง Token ไว้รองรับมากแค่ไหน

การทำ Theming ให้กับหน้าต่าง ๆ หรือ Component สำหรับรองรับหน้า UI พิเศษโดยไม่ต้องเขียนมันขึ้นมาใหม่อีกชุด

อัพเดท Design System version ที่เป็นการเปลี่ยน Style โดยไม่ต้องพึ่ง Developer ให้ทำให้อีกต่อไป

ทั้งหมดนี้เกิดได้ด้วยการ Update file JSON ครั้งเดียว เหลือเชื่อมั้ยล่ะ

พอแปลงอะไรที่ Abstract ออกมาเป็น Code ได้แล้ว แน่นอนว่ามันจะทำให้เราทำ Version Control ได้ง่ายขึ้น แยกการอัพเดท Feature กับ Design ออกจากกันได้ ทำให้การพัฒนา Product ฝั่ง Design กับ Feature วิ่งคู่ขนานกันไปได้

ทำใน Figma ได้มั้ย แล้วทำอะไรได้บ้าง

ขอแนะนำ Plugin ที่ชื่อว่า Figma Tokens ที่ช่วยได้เยอะ แถมดีมาก ๆ ด้วย ที่สำคัญฟรี (และมีเวอร์ชั่น Pro แต่ตัวฟรีทำทุกอย่างตามคอนเซปต์ Design Tokens ได้ทั้งหมด)

ใครอยากลองใช้ Token ในงาน UI ตัวเอง แต่ไม่รู้จะตั้งชื่อยังไง แนะนำไฟล์นี้ เค้าเขียนแนวทางการตั้งชื่อ Token ไว้ให้มาแล้วอย่างดี ด้านล่าง

แง้ม ๆ ให้ดูว่า Figma Tokens ทำไรได้บ้าง

ทำ Theme Light mode / Dark mode ได้

เปลี่ยน Style ที่เตรียมไว้ทำ Version ถัดไปได้

ทำ Style พิเศษ สำหรับหน้าพิเศษ

จะเห็นว่า Design Tokens ค่อนข้างจะยุบยับ และเยอะแยะมาก ๆ เดี๋ยวใน EP หน้าจะมาแชร์วิธีใช้ Figma Tokens และวิธี Manage Token พร้อมรองรับการ Scale ในอนาคต

บวกกับแชร์เรื่องการ Implementation (ใช้กับโครงสร้างไฟล์ Figma ในบทความนี้ได้ด้วย) จะเริ่มมีเรื่อง Coding มาเกี่ยวข้องเล็กน้อย แต่ไม่ยากเกินแน่นอน

ใครมีคำถาม หรืออยากให้ลองอะไร คอมเม้นฝากไว้ได้นะครับ เจอกัน EP ต่อไป

👋

--

--