ถึงแอปของคุณจะทำงานดีแค่ไหน ก็ยังมีวันหนึ่งที่บริการภายนอกไม่ตอบ ช้าเกินไป หรือส่งข้อมูลกลับมาไม่สำเร็จ
นี่ไม่ใช่เรื่องแปลก และไม่ได้แปลว่าแอปคุณแย่ แต่มันคือชีวิตจริงของแอปที่ต้องพึ่งข้อมูลจากโลกภายนอก
ร้านดีไม่ได้แปลว่าของมีตลอด แต่คือบอกลูกค้าให้รู้เรื่อง
กลับมาที่ร้านอาหารอีกครั้ง
วันหนึ่งคุณสั่งเมนูเดิม แต่ครัววัตถุดิบหมด หรือระบบในร้านมีปัญหา
ร้านที่แย่จะปล่อยให้คุณนั่งงง โต๊ะว่าง จานไม่มา และไม่มีใครบอกอะไรเลย
แต่ร้านที่ดีจะบอกตรงๆ ว่า ขออภัย ตอนนี้ยังดึงข้อมูลไม่ได้ แล้วอาจมีทางเลือกต่อ เช่น ลองใหม่อีกครั้ง หรือถ้ายังมีข้อมูลล่าสุดที่พอใช้ได้ ก็เอาอันนั้นมาให้ดูก่อน
นี่คือ error handling (การจัดการเมื่อเกิดข้อผิดพลาด)
จุดสำคัญของบทนี้ไม่ใช่ทำให้ปัญหาไม่เกิด แต่คือทำให้แอปไม่พังตามทุกครั้งที่บริการภายนอกมีปัญหา
แอปจริงไม่ได้วัดกันตอนทุกอย่างปกติอย่างเดียว
เวลาทุกอย่างราบรื่น แอปแทบทุกตัวดูโอเคได้ไม่ยาก
แต่สิ่งที่ทำให้แอปดูน่าเชื่อถือจริงๆ คือ ตอนที่บางอย่างไม่เป็นไปตามแผน แล้วแอปยังสื่อสารกับคนใช้อย่างตรงไปตรงมา และพาเขาไปต่อได้
สำหรับแอปเช็คค่าเงินของคุณ อย่างน้อยควรมี 3 อย่างนี้
- ข้อความแจ้งแบบเข้าใจง่ายเมื่อดึงข้อมูลไม่สำเร็จ
- ปุ่ม retry หรือลองใหม่
- ถ้ามีข้อมูลล่าสุดที่เคยโหลดสำเร็จแล้ว ให้ยังแสดงมันไว้พร้อมบอกว่าไม่ใช่ข้อมูลล่าสุดที่สุด
ลงมือทำ — สอนให้แอปรับมือเวลาข้อมูลไม่มา
เปิดโปรเจกต์เดิมจากบทที่แล้ว แล้วส่ง prompt นี้
เพิ่มการรับมือเมื่อบริการอัตราแลกเปลี่ยนไม่ตอบหรือโหลดไม่สำเร็จ
- ถ้าดึงข้อมูลไม่ได้ ให้แสดงข้อความที่คนทั่วไปอ่านแล้วเข้าใจทันที
- อย่าแสดงหน้าว่างหรือปล่อยให้แอปดูพัง
- เพิ่มปุ่ม "ลองใหม่อีกครั้ง"
- ถ้ามีข้อมูลล่าสุดที่เคยโหลดสำเร็จแล้ว ให้ยังแสดงข้อมูลนั้นไว้ได้ พร้อมบอกว่าอาจไม่ใช่ข้อมูลล่าสุด
- รักษา design เดิมไว้ และทำให้ข้อความ error ดูสุภาพ ชัดเจน และไม่น่าตกใจเกินไป
ไม่เปลี่ยนฟังก์ชันหรือ design ที่มีอยู่แล้ว
prompt นี้กำลังบอก AI ว่า เวลาโลกข้างนอกมีปัญหา แอปของคุณต้องมีมารยาทและมีแผนสำรอง
ทดสอบ — ทำให้แอปเจอสถานการณ์จริงแบบง่ายที่สุด
บทนี้ทดสอบต่างจากบทก่อนนิดหนึ่ง เพราะคุณไม่ได้รอให้บริการภายนอกล้มเองจริงๆ
วิธีง่ายที่สุดคือ:
- เปิดแอปของคุณตามปกติ
- ปิด Wi-Fi หรือปิดอินเทอร์เน็ตชั่วคราว
- รีเฟรชแอป หรือกด refresh ในแอป
- ดูว่าแอปแสดงข้อความแบบไหน
- เปิดอินเทอร์เน็ตกลับมา
- กด
ลองใหม่อีกครั้ง
สิ่งที่คุณอยากเห็นคือ
- แอปไม่พัง
- ไม่มีหน้าว่างเปล่าแบบไร้คำอธิบาย
- คนใช้รู้ว่าเกิดอะไรขึ้น
- คนใช้มีทางกดไปต่อได้
ถ้าคุณมีข้อมูลเก่าที่แอปยังแสดงค้างไว้ได้ด้วย นั่นยิ่งดี เพราะมันช่วยให้แอปยังมีประโยชน์แม้ในวันที่ข้อมูลล่าสุดยังมาไม่ถึง
ถ้าคุณปิดอินเทอร์เน็ตแล้วแอปยังสื่อสารได้ดี มีปุ่มลองใหม่ และกลับมาทำงานต่อได้เมื่อเน็ตกลับมา แปลว่าแอปของคุณเริ่มมีความเป็นแอปจริงมากขึ้นอีกขั้นแล้ว
ถ้าทดสอบด้วยการปิดเน็ตไม่สะดวก
ถ้าคุณไม่สะดวกปิดอินเทอร์เน็ต อีกวิธีหนึ่งคือให้ AI ช่วยจำลองสถานการณ์ชั่วคราว เช่นเปลี่ยนไปใช้บริการที่ไม่มีอยู่จริง แล้วดูว่า error state ขึ้นหรือไม่ จากนั้นค่อย revert กลับ
แต่ถ้าเลือกวิธีนี้ ให้ใช้แค่ชั่วคราวเพื่อทดสอบ แล้วกลับมาที่เวอร์ชันเดิมทันที
วิธีปิด Wi-Fi ยังง่ายและตรงที่สุดสำหรับคนส่วนใหญ่
ข้อความอย่าง “failed to fetch” หรือข้อความยาวๆ แบบระบบภายใน อาจทำให้คนใช้ยิ่งงง ข้อความที่ดีควรเป็นภาษาคน เช่น “ตอนนี้ยังดึงข้อมูลอัตราแลกเปลี่ยนไม่ได้ กรุณาลองใหม่อีกครั้ง”
สำหรับแอปของคุณเอง
แอปที่ดึงข้อมูลจาก API ทุกตัวต้องเจอวันแบบนี้
- แอปอากาศ: วันนั้นข้อมูลอากาศไม่มา
- แอปค้นหา: ค้นหาแล้วบริการช้า
- แอปวันหยุด: เลือกปีแล้วข้อมูลไม่ขึ้น
- แอปเกม: รูปหรือข้อมูลตัวละครโหลดไม่สำเร็จ
คำถามสำคัญคือ:
ถ้าวันนี้ข้อมูลไม่มา แอปของคุณยังทำให้คนใช้รู้ว่าจะเกิดอะไรต่อ และควรทำอะไรต่อไหม
เป้าหมายของข้อความ error ที่ดี ไม่ใช่แค่บอกว่ามีปัญหา แต่คือทำให้คนใช้รู้ว่า ปัญหานี้ไม่ได้เกิดจากเขา และยังมีทางไปต่อ
ตลอด 6 คอร์สที่ผ่านมา คุณต่อแอปของตัวเองออกไปไกลมากแล้ว
ลองถอยมาดูภาพใหญ่สั้นๆ
- คอร์ส 1: คุณสร้างแอปได้
- คอร์ส 2: คุณคิดโจทย์และพัฒนาแอปของตัวเองได้
- คอร์ส 3: คุณทำให้แอปดูดีและใช้งานง่ายขึ้นได้
- คอร์ส 4: คุณทำให้แอปจำข้อมูลจริงได้
- คอร์ส 5: คุณแยกผู้ใช้และทำให้ข้อมูลเป็นของแต่ละคนได้
- คอร์ส 6: คุณทำให้แอปคุยกับโลกภายนอกได้
นี่คืออีกระดับหนึ่งของความรู้สึกว่า “แอปจริง” เพราะแอปที่คุณใช้ทุกวัน ไม่ว่าจะเป็นแอปดูหนัง แอปสั่งอาหาร แอปแผนที่ หรือแอปเช็กราคา ล้วนใช้วิธีเดียวกันนี้ทั้งนั้น
มันถามบริการอื่น รับข้อมูลกลับมา แสดงผลให้คนใช้ และรับมือเมื่อข้อมูลไม่มาตามแผน
ตอนนี้คุณไม่ได้แค่ใช้แอปพวกนั้นแล้ว คุณเริ่มเข้าใจด้วยว่ามันทำงานยังไง และคุณสามารถบอก AI ให้สร้างสิ่งแบบนั้นให้คุณได้
ข้อมูลจำนวนมหาศาลบนอินเทอร์เน็ตไม่ใช่ของไกลตัวอีกต่อไป ตอนนี้คุณรู้แล้วว่าจะบอก AI ยังไงให้เอาข้อมูลเหล่านั้นมาใช้ในแอปของคุณอย่างมีความหมาย
คุณเพิ่งทำอะไรสำเร็จไปแล้วบ้าง
- คุณทำให้แอปรับมือกับวันที่ API ไม่ตอบได้อย่างสุภาพและชัดเจน
- คุณเพิ่มข้อความ error, ปุ่มลองใหม่ และทางสำรองสำหรับวันที่ข้อมูลไม่มา
- คุณรู้แล้วว่าแอปจริงไม่ได้วัดกันแค่วันที่ทุกอย่างราบรื่น แต่รวมถึงวันที่มีปัญหาด้วย
- คุณเดินมาครบ 6 คอร์สแล้ว จากการสร้างแอปแรก ไปสู่การสร้างแอปที่เชื่อมต่อโลกภายนอกได้จริง
จากตรงนี้ไป คุณไม่ได้ติดอยู่แค่แอปที่ทำงานอยู่ในโลกปิดอีกแล้ว
คุณมีเครื่องมือครบพอจะสร้างของที่จำข้อมูลได้ มีผู้ใช้จริง มีหน้าตาที่ดี และดึงข้อมูลจากข้างนอกมาใช้ได้
นั่นคือจุดที่โปรเจกต์ของคุณเริ่มขยับจาก “ของที่ลองทำ” ไปสู่ “ของที่มีชีวิตจริงบนโลกอินเทอร์เน็ต”