6 ปีที่ใช้ในการทำให้แผนที่บน watchOS สมบูรณ์
(david-smith.org)- ฟีเจอร์แผนที่บน watchOS ของ Pedometer++ ถูกขัดเกลามานานกว่า 6 ปี โดยตั้งเป้าจะมอบประสบการณ์แผนที่ที่ดีที่สุดเท่าที่เป็นไปได้บน Apple Watch และการเปิดตัว Pedometer++ 8 ถือเป็นหมุดหมายสำคัญ
- ความพยายามในช่วงแรกใช้วิธีสร้างแผนที่บนเซิร์ฟเวอร์แล้วแสดงผลบน Apple Watch แต่ต้องส่งข้อมูลการออกกำลังกายไป-กลับทุกครั้ง จึงไม่เหมาะกับการใช้งานแบบ นำทาง และการใช้งานประจำวัน อีกทั้งยังไม่สามารถทำงานแบบ ออฟไลน์ ได้
- เพื่อให้ได้การควบคุมที่จำเป็นบน watchOS จึงสร้าง เอนจินเรนเดอร์แผนที่แบบเนทีฟด้วย SwiftUI ขึ้นมาเอง และภายในปี 2021 ก็สามารถเรนเดอร์แผนที่แบบไทล์ได้อย่างเสถียรพร้อมซ้อนข้อมูลตำแหน่งทับลงไปได้
- เพื่อให้เข้ากับ watchOS 26 และ Liquid Glass จึงร่วมกับ Andy Allen สร้างแผนที่พื้นฐานชุดใหม่ โดยลดความซับซ้อนด้านภาพ เพิ่มคอนทราสต์และความอิ่มสี เพื่อให้อ่านได้ง่ายแม้อยู่ใต้ส่วนประกอบลักษณะคล้ายกระจก
- ร่วมงานกับ Rafa Conde เพื่อออกแบบเลย์เอาต์ใหม่ที่ วางตัวชี้วัดซ้อนที่มุมซ้ายบน และให้แผนที่อยู่ในหน้าบนสุดของสแตกแนวตั้ง ก่อนนำผลจากการทดสอบภาคสนามหลายร้อยไมล์มาปรับเป็นดีไซน์สุดท้ายของ Pedometer++ 8
เส้นทางของแผนที่ watchOS ใน Pedometer++
- นิสัยสำคัญในการไม่หลงทางบนภูเขาหรือกลางแจ้งคือการ ตรวจดูตำแหน่งปัจจุบันบ่อยมาก ระหว่างเคลื่อนที่ และแผนที่บนข้อมือก็เป็นวิธีที่เหมาะที่สุดสำหรับสิ่งนี้
- ตั้งแต่ช่วงแรกที่ Apple Watch เปิดตัว ก็ต้องการแผนที่ดี ๆ บนข้อมือมาโดยตลอด แต่ในความเป็นจริงโอกาสเพิ่งเริ่มมีเมื่อ watchOS 6 นำ SwiftUI เข้ามาและทำให้สร้างแอปแบบ “จริงจัง” ได้
- Apple Watch รุ่นแรก ๆ มีหน้าจอเล็กและโปรเซสเซอร์ช้า ทำให้ยากจะไปถึงระดับที่ต้องการ และความพยายามทำแผนที่ครั้งแรกของ Pedometer++ ก็เป็นวิธีสร้างแผนที่บนเซิร์ฟเวอร์
- วิธีสร้างบนเซิร์ฟเวอร์นี้ต้องส่งข้อมูลการออกกำลังกายที่เกี่ยวข้องไป-กลับทุกครั้งจึงจะรีเฟรชหน้าจอได้ แม้จะมีประโยชน์สำหรับพิสูจน์แนวคิด แต่ก็ไม่เหมาะกับการนำทางหรือการใช้งานทั่วไป และไม่สามารถทำงานแบบออฟไลน์ได้
เอนจินแผนที่แบบกำหนดเองบน SwiftUI
- หากต้องการก้าวหน้าบน watchOS จำเป็นต้องมีการควบคุมในระดับที่ต่ำลง จึงสร้าง เอนจินเรนเดอร์แผนที่แบบเนทีฟด้วย SwiftUI อย่างเต็มรูปแบบ ขึ้นมาเอง
- SwiftUI เป็นตัวเลือกที่ watchOS รองรับในเวลานั้น และยังช่วยให้ใส่แผนที่ลงในวิดเจ็ตที่รองรับเฉพาะ SwiftUI ได้ด้วย
- ภายในปี 2021 ก็มาถึงระดับที่สามารถเรนเดอร์แผนที่บน watchOS ได้อย่างเสถียรและมีประสิทธิภาพ
- เอนจินนี้สามารถเรนเดอร์ แผนที่แบบไทล์ และซ้อนข้อมูลตำแหน่งลงไปด้านบนได้
ข้อจำกัดของการออกแบบหน้าจอบน watchOS
- การออกแบบแอปบน watchOS เป็นโจทย์ที่ทั้งสนุกและชวนอึดอัด เพราะมีข้อจำกัดเรื่อง หน้าจอขนาดเล็ก และ การใช้งานด้วยมือเดียว
- เป้าหมายคือทำให้ผู้ใช้สามารถอ่านแผนที่และใช้เพื่อนำทางได้ พร้อมกับยังเข้าถึงข้อมูลเกี่ยวกับการออกกำลังกายได้
- หลังจากลองออกแบบหลายแบบอยู่พักหนึ่ง ก็เลือกใช้ วิธีแบบโมดัล ที่ให้สลับระหว่างหน้าจอแผนที่กับหน้าจอตัวชี้วัดด้วยปุ่มมุมซ้ายบน
- วิธีนี้ทำให้หน้าจอหนึ่งสามารถเลื่อน ย่อ และขยายแผนที่ได้อย่างอิสระ ขณะที่อีกหน้าจอหนึ่งให้ตัวชี้วัดและการควบคุมผ่านอินเทอร์เฟซแบบหน้าแท็บตามปกติของ watchOS
- แต่ดีไซน์นี้ยังให้ความรู้สึกเหมือนเป็นการประนีประนอม และหากต้องการให้แผนที่โต้ตอบได้ ก็ยากจะวางไว้ในโครงสร้าง UI ที่ต้องใช้การปัด
- เมื่อหน้าจอ Apple Watch ใหญ่ขึ้น ก็ดูเหมือนว่าจะไม่จำเป็นต้องแยกพื้นที่เฉพาะสำหรับแผนที่ออกมาอย่างชัดเจนเพื่อให้มันมีประโยชน์อีกต่อไป
- หลังจากนั้นยังพิจารณาทางเลือกในการวางตัวชี้วัดไว้ด้านล่างหน้าจอ แต่สำหรับการออกไปข้างนอกนาน ๆ หรือการออกกำลังกายที่ไม่ได้เน้นการนำทาง ก็เกิดข้อจำกัดอีกแบบ
- หลายแนวทางการออกแบบมีข้อจำกัดร่วมกันคือ แอปต้องแสดงได้เพียง ชุดฟิลด์แบบคงที่ ในแต่ละครั้ง
- แม้จะทำให้อินเทอร์เฟซปรับแต่งได้โดยผู้ใช้ แต่การออกแบบบน watchOS ควรหลีกเลี่ยงการโต้ตอบที่ใช้เวลานานเกินไม่กี่วินาที และการตั้งค่าโดยผู้ใช้ก็เป็นสิ่งที่ยุ่งยากโดยธรรมชาติ จึงไม่เหมาะนัก
สร้างแผนที่ใหม่ให้เข้ากับ Liquid Glass
- ระหว่างที่ยังคิดเรื่องโครงสร้างแอปอย่างต่อเนื่อง Apple ก็ประกาศเปิดตัว watchOS 26 และ Liquid Glass
- องค์ประกอบสำคัญของการออกแบบ Liquid Glass คือการซ้อนเลเยอร์ขององค์ประกอบหลายชั้น และประเภทของสีที่เข้ากันได้ดีก็มีความสำคัญเช่นกัน
- ก่อนหน้านี้แอปใช้ Thunderforest Outdoors เป็นแผนที่พื้นฐานหลัก ซึ่งคอนเทนต์ที่มีมาให้นั้นดีอยู่แล้ว แต่เมื่อวางองค์ประกอบคล้ายกระจกทับลงไป กลับไม่เข้ากับ Liquid Glass มากนัก
- จึงร่วมกับผู้ทำแผนที่ Andy Allen สร้าง แผนที่พื้นฐานชุดใหม่ทั้งหมด ให้ดูชัดเจนบน Liquid Glass
- ในแผนที่ใหม่นี้ได้ลดความซับซ้อนด้านภาพ เพิ่มคอนทราสต์ขององค์ประกอบ และเพิ่มความอิ่มสีขององค์ประกอบบนแผนที่เพื่อไม่ให้ดูขุ่นมัวเมื่ออยู่ใต้ชั้นกระจก
- งานนี้ยังทำให้สามารถสร้าง เวอร์ชันดาร์กโหมด ของไทล์แผนที่ได้ด้วย
- ดาร์กโหมดมีประโยชน์บน iOS เช่นกัน แต่ให้ผลเด่นชัดเป็นพิเศษบน watchOS และมีการปรับแต่งโดยตั้งเป้าให้เป็นแผนที่ที่อ่านได้ง่ายมากแม้มองจากระยะช่วงแขน
- ผลลัพธ์คือได้แผนที่ที่เหมาะกับ watchOS แต่การออกแบบแอปที่สมน้ำสมเนื้อกับมันยังไม่ลงตัวนัก
เลย์เอาต์ใหม่กับ Rafa Conde
- เพื่อหลุดจากภาวะชะงักงันด้านการออกแบบ จึงร่วมงานกับดีไซเนอร์ Rafa Conde
- จากเลย์เอาต์ทางเลือกหลายแบบ แนวทางสุดท้ายคือการ วางตัวชี้วัดซ้อนที่มุมซ้ายบน และให้แผนที่อยู่ในหน้าบนสุดของสแตกแนวตั้ง
- ดีไซน์นี้จัดการปัญหาของแผนที่แบบโต้ตอบได้ด้วยการให้ผู้ใช้แตะแผนที่ก่อนจึงจะเข้าสู่ โหมดสำรวจ
- หลังจากกำหนดคอนเซปต์โดยรวมได้แล้ว ก็เข้าสู่ขั้นตอนสร้างแอปจริงและเกลารายละเอียดต่าง ๆ
- คอนเซปต์ของ Rafa ถูกทำเป็นต้นแบบที่ใช้งานได้รวดเร็ว และนำไปทดสอบภาคสนามด้วยการเดินหลายร้อยไมล์
- หลังจากนั้นยังปรับแต่งฟอนต์และรายละเอียดการออกแบบที่ละเอียดอ่อนยิ่งขึ้น จนไปถึงดีไซน์สุดท้ายที่รวมอยู่ใน Pedometer++ 8
- หน้าจอสุดท้ายจึงออกมาอ่านง่าย ใช้งานได้จริง เข้ากับแพลตฟอร์ม watchOS อย่างเป็นธรรมชาติ และยังคงมีดีไซน์ที่สดใหม่และเป็นเอกลักษณ์
เหตุผลที่ไม่ใช้ MapKit
- งานพัฒนาแผนที่แบบกำหนดเองเริ่มต้นขึ้นก่อนที่ Apple MapKit สำหรับ watchOS จะปรากฏ และเหตุผลที่ทำเองแทนการใช้ MapKit ก็เพราะมันขาดความสามารถในการปรับแต่งและยูทิลิตีที่ Pedometer++ ต้องการ
- MapKit เหมาะกับการใช้งานพื้นฐาน แต่ไม่สามารถให้ระดับการควบคุมที่ Pedometer++ ต้องการนำเสนอได้
- MapKit บน watchOS จะแสดงผลเป็น ดาร์กโหมด เสมอ ซึ่งอาจดีในฐานะค่าเริ่มต้น แต่ก็สร้างข้อจำกัดด้านการเข้าถึงและทางเลือกของผู้ใช้ จึงควรเปิดให้ผู้ใช้เลือกได้
- แม้ MapKit บน watchOS จะทำอะไรได้มากขึ้นเรื่อย ๆ ตามกาลเวลา แต่ในด้านแอนิเมชันและโอเวอร์เลย์ก็ยังมีข้อจำกัดอยู่
- การแสดงเส้นชั้นความสูงและเส้นทางเดินบน MapKit กำลังดีขึ้น แต่ก็ยังมีหลายสถานที่ที่ต้องการรายละเอียดมากกว่า แม้ในพื้นที่ที่แผนที่ของ MapKit ดูแทบว่างเปล่า
- มีการยกตัวอย่างเปรียบเทียบความต่างระหว่างแผนที่แบบกำหนดเองกับ MapKit ที่ทางเข้าของเส้นทางเดินเขาโปรดในสกอตแลนด์
2 ความคิดเห็น
ไม่ได้เดินป่า แต่ทุ่มเทกับแอปนี้หนักมากจริง ๆ
ถึงขั้นจ้างคนทำแผนที่เลยนี่นา..
ความคิดเห็นจาก Hacker News
การที่ Apple Watch ไม่มีแผนที่เดินเขา·ภูมิประเทศที่ Apple ทำเอง ดูเป็นความพลาดครั้งใหญ่ แม้แต่ Watch Ultra รุ่น “สำหรับนักผจญภัย” ที่แพงที่สุดก็ยังไม่มี และฟีเจอร์อย่างการนำเข้า GPX ก็แทบเป็นได้แค่ความฝัน
สุดท้ายถึงจะเป็นอุปกรณ์สายไลฟ์สไตล์ แต่ก็ยังน่าเสียดายอยู่ดี
พัฒนาการนั้นยอดเยี่ยมมาก และยังทำให้เห็นด้วยว่าถ้าออกนอก ธรรมเนียมการออกแบบ อย่าง UI แบบจัดกึ่งกลาง·สมมาตร จะสร้างอะไรได้บ้าง จนทำให้อยากได้ Apple Watch เลย
ในภาพหน้าจอของบทความยังเห็น Hidden Valley ที่ Glen Coe ในสกอตแลนด์ ซึ่งเป็นหนึ่งในเส้นทางเดินสั้น ๆ ที่ชอบ
แต่ความทรงจำเกี่ยวกับบ้านใต้หุบเขานั้นไม่น่ารื่นรมย์นัก เมื่อก่อนตอนขับรถผ่าน ฉันเคยมองบ้านที่ปิดเงียบอยู่ตลอดตรงมุมโดดเดี่ยวท่ามกลางภูเขาอย่างเคลิบเคลิ้ม และคิดว่าถ้าได้อยู่ในที่แบบนั้นจะพิเศษแค่ไหน ลานจอดรถของเส้นทางเดินเขาอยู่เลยขึ้นไปตามถนนแค่ไม่กี่ร้อยเมตร
หลายปีต่อมาฉันจำบ้านหลังนั้นได้จากสารคดีของ Louis Theroux ซึ่งมีตอนที่ไปเยือนที่นั่นพร้อมกับเจ้าของบ้านอย่างบุคคลดังทางทีวี Jimmy Saville หลังจากนั้นเมื่อกลับออสเตรเลีย ก็มีการเปิดเผยว่า Saville หลังเสียชีวิตแล้วคือหนึ่งในผู้ก่ออาชญากรรมต่อเด็กและทางเพศที่อื้อฉาวที่สุดคนหนึ่งของอังกฤษ มันน่าขยะแขยงมาก และบนแผนที่ในภาพหน้าจอด้านบนก็เห็นชื่อกับเค้าโครงของกระท่อมนั้นจริง ๆ
ลองค้นดูด้วยความสงสัยแล้ว ดูเหมือนว่าเขาจ้างนักทำแผนที่เพื่อใส่รายละเอียดที่ Apple Maps ไม่มีอย่างเส้นทางเดินเขา แล้วทำภาพแผนที่คัสตอมขนาดใหญ่ที่ดูดี
เพราะงั้นจึงเป็นวิธีแสดง image tile เป็นหลัก ต่างจาก Apple Maps ที่เรนเดอร์แบบไดนามิก ทำให้สร้างแผนที่ที่สวยกว่าและละเอียดกว่าได้ แต่ก็มีผลกับเรื่องอย่างการดาวน์โหลดแยกตามระดับการซูม การหมุน และความเป็นไปได้ในการอัปเดต
ผู้ให้บริการแผนที่เดิมมีทั้งบริการ vector tile และ raster tile: https://www.thunderforest.com/maps/outdoors/
วิธีที่พบได้บ่อยคือใช้บริการ vector tile กับ style definition โดยตรง หรือถ้าจำเป็นก็ค่อยสร้าง raster tile
ในฐานะผู้ใช้ Pedometer++ ฉันทึ่งกับความหมกมุ่นในรายละเอียดที่ David รักษาไว้ตลอดหลายปี พัฒนาการของแอปนั้นยอดเยี่ยมจริง ๆ
ก่อนหน้านี้เขาทุ่มกับ Watchsmith มากจนแทบกลายเป็นผู้เชี่ยวชาญระดับโลกด้านวิดเจ็ต และเส้นทางที่ต่อมาประสบความสำเร็จอย่างมากกับ Widgetsmith ก็น่าประทับใจมาก เป็นกรณีที่คนที่สมควรสำเร็จได้สำเร็จจริง ๆ
สำหรับนาฬิกา static tile เป็นตัวเลือกที่ถูกต้อง ฉันเคยทำ dynamic rendering บนอุปกรณ์ที่มีข้อจำกัดสูงมากมาก่อน แล้วการเลื่อน·ย่อ/ขยายก็ถูกช่วงหยุดของ garbage collection กลืนกินไปแทบทุกเฟรม
Apple Maps บน WatchOS ค่อนข้างดี แต่ปกติเวลาฉันขึ้นจักรยาน ตั้งเส้นทางไว้ แล้วผ่านไปประมาณ 3 นาที หน้าจอ “กำลังออกกำลังกายอยู่หรือเปล่า?” ก็จะเด้งมาทับ จนกว่าจะกดหยุดหรือปิด ทำให้ดูแผนที่ไม่ได้เลย
ฉันคิดว่าหน้าจอนั้นไม่ควรกินเต็มจอ แต่ควรเปลี่ยนเป็นการแจ้งเตือน หรือไม่ก็เมื่อเวลาผ่านไปก็ควรเริ่มบันทึกแบบเงียบ ๆ ไปเลย
ถ้ามีคนที่ Apple พัฒนาสิ่งนี้อยู่ ก็น่าแปลกที่พวกเขาคงต้องเคยเจอปัญหานี้แน่
ถ้าแผนที่ของแอปนี้สามารถยึดหน้าจอไว้ได้ สำหรับฉันมันน่าจะเป็น killer feature เลย แต่พอลองไล่ดูหน้า App Store ก็ยังไม่ชัดเจนว่าฟีเจอร์ไหนอยู่หลัง subscription และฟีเจอร์ไหนไม่อยู่ ฉันไม่ชอบแอปที่ไม่บอกจนกว่าจะตั้งค่าทุกอย่างเสร็จ สุดท้ายก็คงพยายามจำให้ได้ว่าให้เริ่มการออกกำลังกายแบบแมนนวลแทน