มาทำความรู้จักกับเทคโนโลยีติดตามการพบปะ (Contact Tracing) และแอพ WellMet ที่ผมพัฒนาโดยใช้เทคโนโลยีนี้
ในสถานะการณ์ที่ COVID-19 แพร่ระบาดไปทั่วโลกและยังหาวัคซีนเพื่อป้องกันเชื้อไวรัสยังไม่ได้ แต่ด้วยวิธีการติดเชื้อที่ง่ายดายเพียงใกล้ชิดกับผู้ป่วยหรือสัมผัสกับเชื้อแล้วนำเข้าร่างกาย วิธีป้องกันง่ายๆ และได้ผลดีที่สุดก็คือการล้างมือใช้น้ำยาแอลกอฮอล์ฆ่าเชื้อและหลีกเลี่ยงการใกล้ชิดกับคนอื่น(ถ้าดอกบัวคู่ก็พอได้ 555+) COVID-19 ส่งผลต่อชีวิตคนจำนวนมาก ทำให้ผมเองเลยอยากทำอะไรสักอย่างเพื่อช่วยเหลือเรื่องนี้ แต่จะให้ไปทำแอลกอฮอล์แจกก็กลัวจะต้มเหล้าไว้กินเองมากกว่า เงินก็ไม่ค่อยจะมีใช้จะไปบริจาคให้คนอื่นก็เกรงใจปากท้องตัวเอง สิ่งดีที่ตัวเราเองพอจะทำได้เหมือนคนธรรมดาทั่วไปก็คือพัฒนาซอฟต์แวร์ เลยเป็นจุดเริ่มต้นให้อยากทำแอพแจ้งเตือนการเข้าใกล้กันเพื่อรณรงค์การตระหนักถึงการปลีกตัวจากสังคม (Social Distancing) หนึ่งในวีธียับยั้งการแพร่ระบาดของ COVID-19 แก้ปัญหาให้ตรงจุดกันไปเลย เว็บข่าว นับตัวเลข ทำโมเดลพยากรณ์การติดเชื้อเขาทำไปหมดแล้ว
การที่จะทำให้คนปลีกตัวจากสังคมนั้นได้มันไม่ใช่เรื่องง่ายและสิ่งที่ต้องทำเป็นอันดับแรกก็คือรับรู้ให้ได้ก่อนว่าคนเรานั้นได้มีการพบปะใกล้ชิดกันบ่อยเพียงไหนใกล้ชิดเพียงใด เหมือนจะลดน้ำหนักก็ควรจะรู้ก่อนว่าแต่ละวันเราได้ใช้พลังงานไปมากน้อยเพียงใดจึงมีเซนเซอร์นับก้าวเดินเกิดขึ้นมาเป็นต้น การที่รับรู้ได้ว่าเราเคยเจอใครเมื่อไหร่ที่ไหนนี้ยังเอาไปช่วยในการวิเคราะห์แจ้งเตือนและกักกันคนที่เสี่ยงจะได้รับเชื้อโรคระบาดได้ เทคโนโลยี Contact Tracing จึงน่าสนใจขึ้นมากในยุค COVID-19 นี่แหละ เพราะว่า GPS นั้นบอกแค่ได้ว่าเคยอยู่ที่เดียวกันไม่ได้บอกได้ว่าใกล้ชิดกันและถ้าเป็นอยู่ในตัวอาคารหลายๆ ชั้น GPS ก็ไม่หมดความแม่นยำลงไปแน่นอน เกิดเทคโนโลยีจับตำแหน่งภายในอาคารโดยใช้สัญญาณไร้สาย Bluetooth แบบใช้พลังงานต่ำส่งออกมาเพื่อให้อุปกรณ์รอบข้างรับรู้ว่าเข้าใกล้บางอย่างนะ เทคโนโลยีนี้เรียกว่า Beacon (ที่ไม่ใช่เนื้อหมูเค็ม) แต่ใอ้เจ้า Beacon นี้มันเป็นแค่อุปกรณ์ปล่อยสัญญาณเฉยๆ ฝ่ายเดียว เลยรับรู้การพบเจอกันไม่ได้ ถ้าจะทำต้องปล่อยกันทั้งสองฝ่ายหรือมีการแลกเปลี่ยนข้อมูลกัน
ระหว่างที่ผมกำลังคิดไอเดียทำแอพใหม่อยู่นั้น ก็มีคนบอกว่าที่สิงค์โปร์รัฐบาลเขาได้ทำแอพ TraceToGather ผิดๆ แอพ TraceTogether ขึ้นมาเพื่อช่วยติดตามการพบปะของประชาชนเขาด้วยนะ เพื่อเอาข้อมูลไปช่วยลดการแพร่ระบาด COVID-19 ผมก็เลยไปอ่านดูก็พบว่าเป็นวิธีการที่ใช้ได้เลยแต่ติดปัญหาหลายอย่างอยู่เช่นเรื่องความเป็นส่วนตัวที่รัฐบาลเขาเก็บข้อมูลหลายอย่างไปไปถึงจะเก็บออฟไลน์ก็เถอะเช่นความแรงของสัญญาณ เบอร์โทร รุ่นโทรศัพท์ยกเว้นตำแหน่ง GPS และปัญหาอื่นๆ ก็คือผู้ใช้ไม่ได้รับประโยชน์ทางตรงใดๆ เลย เปิดเปลืองแบตไปเฉยๆ เพราะใช้วิธีเชื่อมต่อและแลกเปลี่ยนข้อมูลกันโดยตรงทุกๆ ครั้งอุปกรณ์ที่เข้าใกล้ ถ้าผมจะทำแอพผมจะต้องแก้ปัญหาเหล่านี้ให้ได้ด้วยถึงจะมีคนใช้
แอพใหม่ที่ผมทำผมตั้งชื่อว่า WellMet เพราะนอกจากจะเป็นคำทักทายภาษาอักฤษโบราณที่ผมจำมาจากเกมแล้วถ้าแยกคำยังมีความหมายดีด้วย ผมให้ความสำคัญเกี่ยวการออกแบบ UX ของแอพมากเพราะอยากให้มีคนใช้เยอะๆ อยากให้เป็นเหมือนแอพ AirVisual ที่บอกคุณภาพอากาศเข้าใจได้เพียงแค่เห็นรูปหน้ากาก เลยได้รูปวงกลมสร้างจากกล่องสี่เหลี่ยมเล็กๆ แทน 12 กล่อง เติมสีเข้าไปเป็น 4 ระดับ ระดับละ 3 กล่อง ระดับสูงสุดจะใส่สีเข้าไปครบทุกกล่องเป็นวงกลมครบ มีตัวเลขบอกจำนวนคนที่เคยพบเจออยู่ตรงกลางพร้อมคำอธิบาย เนื่องจากการแจ้งเตือนเมื่อมีคนเข้าใกล้นั้นอาจจะทำใหำรำคาญได้เลยทำปุ่มปิดใหญ่ๆ ไว้กลางหน้าแอพเลย โดยลอกแอพ 1.1.1.1 ของ CloudFlare มา หน้าต่อมาคือรายการประวัติการพบเจอกันในอดีตและระยะห่างและตำแหน่งที่เจอกันด้วยเพราะว่าจำเป็นต้องเปิดการใช้งานตำแหน่งอยู่แล้วผมเลยเก็บพิกัด GPS เข้าไปด้วยแล้วกดไปดูบน Google Maps ได้ หน้าสุดท้ายเป็นหน้าฟังชั่นเพิ่มเติม เช่นการตั้งค่าการแจ้งเตือน การแชร์ข้อมูลไปให้หน่วยงานอื่น ลิงค์ข้อมูลอื่นๆ ของแอพ
ผมทำแอพเสร็จแล้วส่งขึ้นไป PlayStore แล้วผลปรากฏว่า Google ไม่ให้เอาแอพขึ้นครับ ด้วยเหตุผลว่าผิดนโยบายที่หาประโยชน์จากเหตุการณ์ร้ายๆ ผมนี่งงเลยโค้ดก็เปิดบน Github ไม่มีใส่โฆษณาหาเงินใดๆ ไม่มีแม้กระทั้งการรับบริจาคเงิน ผมเลยยื่นอุทธรณ์ไป จนสองสองต่อมามีข่าว Apple กับ Google ร่วมมือกันพัฒนาเทคโนโลยี Contact Tracing ที่ในสเปคเหมือนที่ผมทำอย่างมากถึงมากที่สุด
หลักการทำงานของ Contact Tracing
- สร้างคีย์สุ่มขึ้นมาประจำตัวผู้ใช้เรียกว่า Tracing Key (TK) จากบนเครื่องตัวเอง
- นำ Tracing Key เข้ารหัสแฮซแบบทางเดียวกับเลขวันที่ของแต่ละวันได้เป็นคีย์ประจำวันเรียกว่า Daily Tracing Key (DTK)
- เอาคีย์ประจำวันไปสร้างเป็นเลขประจำตัวของ Beacon ทุกๆ 15 นาที โดนแฮซทางเดียวกับลำดับของ 15 นาทีนั้นๆ ในหนึ่งวัน เช่นเวลา 00:15 ได้เลข 1 เป็นต้น เรียกว่า Rolling Proximity Identifier (RPI)เอาไปปล่อยให้อุปกรณ์อื่นรับรู้ว่ามีคนอยู่ใกล้ๆ เพราะแฮซทางเดียวทำให้เอาไปถอดกลับว่าเป็นใครคนใดคนนึงไม่ได้
- เก็บข้อมูล Beacon ID ที่เจอสแกนเอาไว้ในเครื่อง
- ถ้ามีการตรวจเจอผู้ติดเชื้อ ให้ดึงข้อมูล DTK ของผู้ติดเชื้อในวันที่คาดว่าหลังจากได้รับเชื้อขึ้นไปเก็บบนคลาวด์
- ผู้ใช้อื่นดาวน์โหลด DTK ของผู้ติดเชื้อ ลงมาสร้าง RPI ใช้เพื่อเทียบว่าตัวเองเคยสแกนเจอกับคนติดเชื้อหรือเปล่าเคยใกล้ชิดกันแค่ไหน ควรจะไปตรวจไหม ตามอัลกอริทึมการคัดกรองผู้ป่วย
แอพ WellMet ใช้วิธีการเดียวกันกับ Contact Tracing ของ Apple กับ Google เลยแตกต่างเพียงไม่มีการใช้ Rolling Proximity Identifier ทุก 15 นาทีทั้งที่เขียนไปแล้ว เพราะเหตุผลทางด้าน UX ที่ตัวเลขนับจำนวนที่ได้หน่วยที่ผู้ใช้จะทำความเข้าใจลำบากเป็น “จำนวนที่พบเจอใน 15 นาทีภายใน 7 วันล่าสุด” เพราะว่าทุก 15 นาทีคนๆ เดิมจะถูกนับใหม่ คล้ายการนับก้าวที่ให้เป็นหน่วยนิ้วต่อวันแทนที่จะให้เป็นจำนวนก้าวต่อวัน ใน WellMet เป็น “จำนวนคนที่พบเจอในหนึ่งวันภายใน 7 วันล่าสุด” ก็จะลดความเป็นส่วนตัวลงหน่อยแต่ได้ความน่าใช้ขึ้นเยอะ แต่ถ้ามันเป็นมาตรฐานออกมาผมก็ยอมเปลี่ยนตาม อีกอย่างที่ผมทำไม่เหมือน Google กับ Apple ก็คือผมใช้ Bluetooth LE มาตรฐาน iBeacon ที่ไอโอเอสและแอนดรอยด์รองรับอยู่แล้ว จับยัดข้อมูลเข้าไปในมาตรฐานเดิมก็พอได้อยู่
เทคโนโลยี Contact Tracing ยังใหม่อยู่ ด้วยความเร่งด่วนในการต้องการใช้เทคโนโลยีเพื่อช่วยแก้ปัญหา COVID-19 อาจจะยังต้องพัฒนาอีกเยอะเพื่อการใช้งานที่หลากหลาย ในความเห็นผมเองเทคโนโลยีนี้อาจจะมีประโยชน์มากกว่านี้ แต่คนอาจจะยังกลัวๆ ที่จะใช้มันเพราะเรื่องความเป็นส่วนตัว คล้ายๆ กับเทคโนโลยี GPS ในตอนแรกที่คนยังไม่กล้าใช้ ตอนหลังมีการประยุกต์ใช้งานมากขึ้นจนคนเห็นประโยชน์ อย่างเช่น กด Uber หรือ Grab เรียกรถคนแปลกหน้ามารับถึงหน้าบ้านแล้ว ปัด Tinder หาคู่จากห้องนอน พอมีอรรถประโยชน์ที่มากพอผู้ใช้ก็ยอมสละความเป็นส่วนตัวเพื่อประโยชน์เหล่านั้นได้ อาจจะเป็นระบบการเข้าที่ทำงานแทนที่การสแกนใบหน้าหรือลายนิ้วมือที่ความเป็นส่วนตัวน้อยกว่า(ที่ต้องเก็บใบหน้าหรือลายนิ้วมือเอาไว้ก่อน) อาจจะมี Tinder ภายในคลับเท่านั้นเกิดขึ้น แต่อาจจะต้องสะดุดถ้ามหาอำนาจทางเทคโนโลยีอย่าง Google กับ Apple ไม่ยอมให้ใช้และพัฒนาเพิ่มเติมในวงกว้าง
ที่มา
https://www.apple.com/covid19/contacttracing
แอพ WellMet ดาวน์โหลดได้ที่
https://github.com/artiya4u/wellmet/releases/latest
ซอร์ซโค้ด
https://github.com/artiya4u/wellmet