Design System แก้ปัญหา Accessibility ได้จริง แต่ต้องไร้ทางลัด
เจาะลึกเบื้องหลังการทำ Accessibility ผ่าน Design System แก้ไขที่จุดเดียวอาจไม่พอ หากยังมีโค้ดที่ถูกสร้างขึ้นมาเองนอกระบบ

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- การแก้ปัญหา Accessibility ที่ต้นทางช่วยประหยัดเวลาและครอบคลุมทุกปุ่มหรือคอมโพเนนต์
- จุดบอดสำคัญคือโค้ดที่ถูกเขียนขึ้นเองนอกระบบ เช่น div ที่ใส่คลิกฮานด์เลอร์และไม่ผ่านระบบหลัก
- การทำ Design System ให้สำเร็จต้องทำให้มันเป็นเส้นทางที่ง่ายที่สุดในการใช้งาน
- งานที่แท้จริงไม่ใช่แค่การสร้างคอมโพเนนต์ แต่คือการตามหาและกำจัดโค้ดที่หลุดรอดจากระบบ
การแก้ไขปัญหาเรื่องการเข้าถึงหรือ Accessibility ในงานพัฒนาซอฟต์แวร์มักนำไปสู่ข้อสรุปเดิมๆ นั่นคือ การหยุดแก้ปัญหาทีละจุดแล้วหันมาแก้ไขที่ต้นตอของปัญหาแทน การแก้ไขที่ต้นทางนี้มีเป้าหมายสูงสุดอยู่ที่การใช้ Design System ซึ่งช่วยให้การแก้ไขคอมโพเนนต์หลักเพียงครั้งเดียว ส่งผลให้ทุกส่วนที่เรียกใช้งานในผลิตภัณฑ์ได้รับการแก้ไขตามไปด้วยทันที
แนวคิดนี้ทรงพลังเพราะมันช่วยลดภาระงานซ้ำซ้อนได้อย่างมหาศาล อย่างไรก็ตาม แนวทางนี้ยังมีจุดอ่อนที่ซ่อนอยู่ซึ่งอาจทำให้แผนการปรับปรุงล้มเหลวได้โดยไม่รู้ตัว เมื่อทำการแก้ไขที่คอมโพเนนต์หลักแล้ว ทุกชิ้นส่วนที่ผ่านคอมโพเนนต์นั้นจะได้รับการแก้ไขอย่างถูกต้องตามสัญญา แต่นั่นไม่ใช่ทั้งหมดของระบบโค้ดที่มีอยู่
ในมุมมองของการพัฒนาซอฟต์แวร์สมัยใหม่ Design System มักถูกมองว่าเป็นยาวิเศษที่แก้ปัญหา UI และ UX ได้เบ็ดเสร็จ แต่ในความเป็นจริง การบังคับให้นักพัฒนาทุกคนใช้งานระบบกลางร้อยเปอร์เซ็นต์ถือเป็นความท้าทายที่ใหญ่ที่สุด เนื่องจากข้อจำกัดด้านเวลาหรือความคุ้นเคยเดิมๆ มักทำให้นักพัฒนาบางส่วนเขียนโค้ดขึ้นมาใช้งานเฉพาะกิจ (One-off) ซึ่งอยู่นอกเหนือการควบคุมของระบบกลาง
ภายในซอร์สโค้ดขนาดใหญ่มักหลงเหลือปุ่มหรือองค์ประกอบหน้าตาเดิมๆ ที่ไม่ได้เรียกใช้งานผ่านคอมโพเนนต์กลาง เช่น การเขียนแท็ก div พร้อมใส่คลิกฮานด์เลอร์ขึ้นมาเองอย่างเร่งรีบ โค้ดที่ถูกคัดลอกไปวางไว้ตามมุมต่างๆ ของแอปพลิเคชันก่อนที่ระบบกลางจะถูกสร้างขึ้น หรือคอมโพเนนต์เก่าที่ไม่เคยถูกนำมาไมเกรนเข้าสู่ระบบ
- ปุ่มหรือลิงก์ที่ถูกเขียนขึ้นเองแบบเฉพาะกิจนอกเหนือจากคอมโพเนนต์กลาง
- การคัดลอกโค้ดเดิมไปใช้งานก่อนที่ Design System จะถูกพัฒนาขึ้น
- การใช้แท็ก HTML ทั่วไปพร้อมใส่ Event Listener แทนการใช้คอมโพเนนต์ที่รองรับ Accessibility
ผลลัพธ์ที่ตามมาคือ การตรวจสอบการเข้าถึงรอบใหม่จะผ่านในหน้าเว็บที่สร้างจาก Design System แต่จะล้มเหลวในหน้าเว็บที่นักพัฒนาสร้างขึ้นมาใหม่ด้วยวิธีของตนเอง ปัญหานี้สร้างความสับสนเพราะใช้การแก้ไขแบบเดียวกัน ผลิตภัณฑ์ตัวเดียวกัน แต่กลับให้ผลลัพธ์ที่แตกต่างกัน โดยที่ไม่มีความผิดปกติใดๆ ปรากฏในคอมโพเนนต์ดิฟฟ์ (Component diff) เลยแม้แต่น้อย

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
ดังนั้น งานที่แท้จริงของการแก้ไขที่ต้นทางจึงไม่ใช่แค่การยืนยันว่าคอมโพเนนต์หลักถูกต้องสมบูรณ์แล้ว แต่คือการค้นหาทั่วทั้งซอร์สโค้ดเพื่อตามหาทุกจุดที่มีการนำรูปแบบนั้นไปทำซ้ำหรือเขียนขึ้นใหม่ แล้วตัดสินใจว่าจะดึงมันกลับมารวมไว้ในคอมโพเนนต์กลางหรือจะแก้ไขมันในจุดที่มันอยู่
การสร้าง Design System ที่ใช้งานได้จริงจึงไม่ใช่แค่การมีโฟลเดอร์ที่เก็บคอมโพเนนต์ที่รองรับ Accessibility เท่านั้น แต่เป็นความมุ่งมั่นที่จะทำให้รูปแบบที่ถูกต้องกลายเป็นเส้นทางหลักและเป็นเส้นทางที่ง่ายที่สุดในการใช้งาน หากคอมโพเนนต์ที่ถูกต้องใช้งานยากกว่าการเขียนโค้ดขึ้นมาเอง นักพัฒนาก็จะหันไปเขียนโค้ดเองและทำให้ระบบกลับไปสู่จุดเริ่มต้น
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น