คุยกับโปรแกรมเมอร์ ELECT Live เรื่อง Human Error ของระบบ และความรันทดในคืนนับคะแนน

ในคืนวันนับคะแนนการเลือกตั้ง นอกจากหน้าจอทีวีแล้ว สิ่งที่ผู้คนนับล้านทำก็คือการรีเฟรชหน้าจอเว็บไซต์ว่าคะแนนของแต่ละพรรค ผู้สมัคร สส. แต่ละคนได้ไปกี่มากน้อย ด้านหนึ่งก็เป็นดอกผลของเทคโนโลยีอินเทอร์เน็ตที่พัฒนาขึ้น แต่อีกด้านต้องปรบมือชื่นชมคนเบื้องหลังแพลตฟอร์มของแต่ละสำนักข่าวที่ให้ความสำคัญและพัฒนาเครื่องมือรายงานคะแนนเลือกตั้งแบบ realtime ให้สัมผัสได้ผ่านปลายนิ้วคลิก

ไม่ว่าจะรู้ตัวหรือไม่ก็ตาม แพลตฟอร์มที่ถูก capture มาอวดคะแนนกันมากที่สุดแหล่งหนึ่งเป็นของ ELECT Live ที่พัฒนาเรื่อยมาจาก elect.in.th ซึ่งตั้งต้นจาก developer ไม่กี่คน กระทั่งก่อนวันเลือกตั้ง มียอดฝีมือมารุมบนหน้าจอเพื่อพัฒนาและประคับประคองการรายงานผลร่วมกันหลายสิบชีวิต โดยทั้งหมดที่ว่ามานั้นคือ ‘อาสาสมัคร’

WAY คุยกับ รพี สุวีรานนท์ หนึ่งในทีมพัฒนา เพื่อถามถึงที่มาที่ไปแบบเชิงลึกของการออกแบบแพลตฟอร์มนี้ ที่มากกว่านั้นคือเรื่องราวของค่ำคืน 24 มีนาคม 2562 กับข้อมูลรายงานผลพลิกไปพลิกมาชวนน่าเวียนหัวนั้น ต้นสายปลายเหตุมาจากไหน อะไรที่เขาพบเห็น และ ‘human error’ อยู่ตรงรอยต่อใดของสายพานข้อมูลเหล่านี้

– 01 –

โปรเจ็คต์นี้เริ่มต้นมาจากอะไร

ถ้าไล่มาตั้งแต่ elect.in.th มันเกิดจากการคุยตั้งแต่กลางปีที่แล้ว คือตอนนั้นจะมีการเลือกตั้งอยู่แล้ว แต่เราไม่เห็นมีกระแสเลย ไม่มีข้อมูลเลย ไม่มีใครพูดถึง ทุกคนสนใจแต่ดราม่า ก็รู้สึกว่า “เฮ้ย! ทำไมทุกคนนิ่งเงียบนิ่งเฉยจัง” ก็เลยคิดว่าสื่อควรจะลงมาเล่นกับประเด็นนี้เพื่อให้ความรู้ประชาชนได้แล้ว ตอนนั้นคนที่เริ่มคิดเรื่องคือ Boonmee Lab และ The MATTER แล้วก็เลยออกมาเป็นไอเดีย ELECT

ตอนนั้นเข้าใจว่าประมาณต้นปีจะมีเลือกตั้ง ก็เลยตีย้อนกลับมาว่า 4-5 เดือนนี้ เราจะทยอยปล่อยงานออกไป เพื่อค่อยๆ awareness ผู้คน ไอเดียก็คือว่า เราต้องเอา data มาเล่าเรื่องให้ได้ เอา data มาเล่าแบบไม่ใช้อารมณ์ คือที่ผ่านมามันจะมีอารมณ์ที่ทุกคนโหมกระหน่ำ คุยเรื่องการเมืองด้วยอารมณ์ พวกโน้น พวกนี้ เสียส่วนใหญ่ ก็เลยคิดว่า ในยุคหน้ามันควรจะเป็น data citizen รายงานอิงบนข้อมูลที่สงสัย เปิดเผยได้ ก็ตั้งใจให้คนเข้าใจว่าอะไรเป็นอะไร ไม่ใช่ใช้อารมณ์เป็นที่ตั้ง

ช่วงแรกๆ ข้อมูลที่ขึ้นใน elect.in.th ก็จะเป็นพวก สส. บ้านเราอยู่ตรงไหนบ้าง พรรคไหนลงไหนบ้าง คู่มือการเลือกตั้ง เป็นข้อมูลพื้นฐาน

ใช่ คือคิดว่าอะไรที่จำเป็นต้องรู้ก่อนเลือกตั้ง ทั้งกรอบเกณฑ์ แล้วก็จะมีทั้งเกมให้เล่น เป็นประวัติประชาธิปไตยไทย อันนี้ก็เหมือนเอาเกมมาให้คนมี engagement ให้สนใจมากขึ้น ก็มีหลายรูปแบบ

Election Map แสดงเขตที่พรรคต่างๆ ส่งผู้สมัคร สส.

พอข้อมูลเราได้มาแบบนี้ โปรแกรมเมอร์จัดการแปลง data เป็น presentation อย่างไร

ต้องบอกว่างานมันไม่ใช่แค่ของโปรแกรมเมอร์ มันรวมทั้งคนที่รับผิดชอบคอนเทนต์และหาข้อมูล มันเริ่มจากการที่เราต้องการจะเล่าอะไรก่อน แล้วก็ตีกลับไปว่าเรามีข้อมูลอะไรให้ใช้บ้าง หน้าบ้านคือ presentation แล้วก็ด้านหลังคือ information แล้วก็ตีกลับมาว่า ระหว่างทางเราต้องการข้อมูลอะไรบ้าง แล้วก็จะเตรียมข้อมูลยังไง ได้ข้อมูลมาแล้วก็เอาโปรแกรมเมอร์มาเขียน

มีเคสไหนที่น่าสนใจไหม ตอนที่เราเอา data มาทำ presentation

เคสที่น่าสนใจก็มี social listening ที่ทำเป็นกราฟว่ามีใครพูดถึง หรือ mention ถึงพรรคไหนเมื่อไหร่บ้าง จริงๆ อันนี้ค่อนข้างง่ายเพราะว่าตรงไปตรงมา เพราะว่าเรามีพาร์ทเนอร์กับบริษัทที่มีเรื่อง social listening อยู่แล้ว ก็เลยค่อนข้างง่ายว่าไอเดียนี้เราอยากให้เห็นภาพชัดเจน เพราะว่า social listening ส่วนใหญ่มันจะได้มาเป็นตัวเลขเสียส่วนใหญ่ แต่ก็ทำให้เห็นว่า volume ของแต่ละพรรคตอนนี้มันโอนเอียงไปทางไหนบ้าง

มีอีกส่วนหนึ่งที่เป็นแผนที่ เป็นการแบ่งว่าพรรคไหนส่งผู้สมัครลงเขตไหนบ้าง จริงๆ มันก็มีข้อ concern ว่า ที่ผ่านมาเราค่อนข้างขาดข้อมูลเกี่ยวกับ location geography ในประเทศไทยพอสมควร คือมันเป็นอะไรที่ค่อนข้างพื้นฐานมาก แต่ไม่ค่อยมีการเผยแพร่ เปิดเป็นสาธารณะให้หาง่ายๆ ไม่ว่าจะเป็นเขตอำเภอ ตำบล ข้อมูลตรงนี้ค่อนข้างหายาก ต้องมีการหยิบแผนที่ของเจ้าโน้น เจ้านี้ แล้วก็มาปรับเองค่อนข้างเยอะ ซึ่งงานแบบนี้ค่อนข้างใช้แรงงานของเพื่อนๆ เยอะ

พอเห็นฟีดแบ็คเริ่มมีคนพูดถึง ELECT เยอะช่วงไหน เพราะว่านี่คือเว็บใหม่ และเกิดขึ้นมาเฉพาะกิจ

คือตอนแรกเราจะเน้นเรื่องปรับความรู้พื้นฐาน มันอาจจะมีความเงียบๆ นิดหนึ่งในช่วงแรกที่ปล่อยไป เพราะตอนนั้นยังไม่มีกระแสเลือกตั้ง แต่ว่าที่เริ่มบูมขึ้นมาก็ตอนที่ทำ social listening ที่เป็นกราฟว่ามีพรรคไหนโดดเด่นขึ้นมาบ้าง อันนั้นก็เริ่มมีคนสนใจและดูง่ายว่า “อ๋อ… นี่มันคือมีข่าวอย่างนี้ มีพรรคนี้ขึ้นมา” อันนั้นก็คิดว่าเป็นจุดหนึ่งที่คนเริ่มให้ความสนใจ

แต่ว่าจุดหนึ่งที่พีคจริงๆ ก็คือ ตอนที่เราเริ่มเปลี่ยนการนำเสนอข้อมูลอย่างเดียว เป็นมีเครื่องมือเตรียมตัวให้เลือกตั้งจริงๆ เช่น ให้ตรวจสอบผู้สมัครของเขตตัวเอง ให้กรอกเลขไปรษณีย์ อันนั้นทำให้คนเข้ามาใช้เยอะมาก ค่อนข้างเป็นที่รู้จักมากขึ้น คิดว่าน่าจะเป็นเว็บแรกที่ปล่อยออกมาตอนนั้น

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

ตอนนั้นต้องบอกว่ายังไม่เห็นเลยว่ามีใครซุ่มทำอะไรบ้าง ก็เชื่อว่าคงทำกันบ้าง แต่เนื่องจากว่าก่อนหน้านี้ไม่มีกระแสและไม่เคยเห็นตัวอย่างว่าเวลาจะเลือกตั้งแล้วมันจะมีเว็บไซต์ที่รายงานข้อมูลแบบครบถ้วน มันก็เลยเกิดเป็นตัวโปรเจ็คต์นี้แหละที่เราคิดว่าไม่มีใครทำ “เราทำก็ได้วะ” จริงๆ มันก็เหมือนกับว่าเราตั้งใจทำของเรานั่นแหละ ไม่ได้ไปดูหรอกว่าเราจะทำซ้ำกับคนอื่น ใครทำดี ใครทำไม่ดีกว่าเรา อะไรยังไง เราคิดแค่ว่า ถ้ามีสิ่งนี้น่าจะดีสำหรับประชาชนและสังคม

– 02 –

สิ่งที่ทุกคนตื่นเต้นมากคือการรายงานสดผลคะแนนการเลือกตั้ง มันเริ่มต้นจากอะไร

ทุกครั้งที่ผ่านมาแพลตฟอร์มมันอยู่บนทีวี มันเป็นทีวีมาโดยตลอด แล้วการเลือกตั้งปี 54 ตอนนั้นพวกโซเชียลมีเดีย อินเทอร์เน็ตก็ยังไม่ได้แพร่หลายเท่าวันนี้ เราเห็นตัวอย่างการเลือกตั้งทั้งของอเมริกาหรือ Brexit คือรายงานผลมันควรจะเป็นอย่างนี้ อยู่บนเว็บไซต์เป็นหลักด้วยซ้ำ เราก็เลยคิดว่าควรจะทำ ไม่รู้ว่าจะมีใครทำบ้าง แต่ก็คิดว่าเราต้องทำ ตอนแรกคิดว่าทำไม่ได้ เพราะเราไม่มีข้อมูล แต่ว่าพอช่วงก่อนเลือกตั้งไม่นานก็ได้รับรายงานว่า จริงๆ กกต. เขาเปิดฐาน data ให้สื่อนะ แล้วเราไปได้ข้อมูลตรงนี้มาด้วย ก็เลย “เอาวะ… ลองดูสักตั้ง”

ตอนที่คิด elect.in.th ไม่ได้คิดตั้งต้นว่าจะมี ELECT Live?

ไม่ได้คิด ต้องบอกว่า ELECT Live เกิดมาสองอาทิตย์ที่แล้ว

2 อาทิตย์?

ใช่ครับ คือสองอาทิตย์ก่อนเลือกตั้ง คือเพิ่งคุยไฟนอลกันว่าจะทำนะสองอาทิตย์ครับ แล้วก็เป็นงานที่ค่อนข้างบ้าดีเดือดพอสมควร ด้วยสิ่งที่เกิดขึ้น งานที่ต้องทำ เวลาที่จำกัด และจำนวนคนที่ในตอนแรก ก็คิดว่าตอนค่อนข้างยากเหมือนกัน แต่เนื่องจากว่าเรามีทุนเดิมอยู่แล้ว เรามีข้อมูลพวกจังหวัด พื้นที่ เขตเลือกตั้ง รายชื่อผู้สมัคร เพราะว่าเราก็ build up เรื่อยๆ ตอนแรกเรื่องข้อมูลไม่ได้ห่วงมากเพราะว่า พอรู้ว่า กกต. เขาจะเปิดข้อมูล API (Application Program Interface-เปรียบเสมือนตัวกลางระหว่างระบบปฏิบัติการที่เชื่อมแพลตฟอร์มให้สามารถเข้าถึงข้อมูลได้อัตโนมัติ) ให้เรา เราก็คิดว่าถ้ามี API มันทำได้ชัวร์ คราวนี้จะเป็นเรื่องปั้นให้มันออกมาให้ได้ในเวลาที่กำหนดมากกว่า

ซึ่งตรงนี้ก็คิดว่าโมเดลมันน่าสนใจเพราะตัว ELECT นี่เอาจริงๆ โดยเฉพาะ ELECT Live มันเกิดจากอาสาสมัครทั้งหมดเลย ที่เห็นเว็บไซต์ออกมา จริงๆ วันแรกๆ มีคนคุยกันอยู่แค่ประมาณ 4-5 คน แต่ว่าเราเลือกตั้งวันอาทิตย์ใช่ไหม ประมาณวันศุกร์ (22 มีนาคม) พอมีคนรู้ว่าคนกำลังพัฒนาตัวนี้ และเป็นแบบ open source ถ้าพูดในทางเชิง developer ก็คือ open source เปิดเผย source code ด้วย เราก็ยินดีให้ community ของคนที่พัฒนาโปรแกรมเข้ามาร่วมได้

ปรากฏว่าตั้งแต่คืนวันศุกร์ วันเสาร์ และวันอาทิตย์ มีคนเข้ามาช่วยกันอัพเดทเว็บไซต์ตลอดเวลา อัพเดทในที่นี้หมายถึงว่า เพิ่มฟังก์ชั่นโน้น เพิ่มหน้านี้ เพิ่มข้อมูลตลอดเวลา ตอนพีคๆ นี้น่าจะมีคนช่วยกันพัฒนาประมาณ 20 – 30 คนแล้ว โดยเฉพาะวันที่กำลังเลือกตั้งอยู่จริง เราก็กำลังพัฒนาโปรแกรมควบคู่ไปด้วย และอัพเดทตลอดเวลา

flow ของข้อมูลตั้งแต่การหย่อนบัตรจนถึงแสดงผลบนเว็บไซต์มันเดินทางมาอย่างไร

เท่าที่ผมเข้าใจ ทางผมก็มองเห็นแค่ตัว data API ที่เขาส่งมา แต่จากการพูดคุยกับทีมที่พัฒนา API ก็คือว่า กกต. มีฐานข้อมูลของเขา แล้วเขาก็ให้เจ้าหน้าที่ทุกเขตในกว่า 90,000 หน่วยเลือกตั้ง พอเริ่มนับคะแนนจะมีการกดส่งข้อมูลเข้ามาที่ฐานข้อมูลกลางของ กกต. เรื่อยๆ ทีนี้ฐานข้อมูลของ กกต. เขา concern ว่ามันอาจจะไม่ได้รองรับการเข้าถึงของสื่อหลายสำนักพร้อมกัน เท่าที่ผมเข้าใจก็คือ มีอีกบริษัทหนึ่งที่เขารับทำ API เขาจะแปลงข้อมูลดิบทั้งหมดนี้มาในรูปแบบ API ในประเด็นต่างๆ ที่คิดว่าสื่อจะได้เอาไปใช้ แล้วก็เป็นคนทำให้ระบบมันไม่ล่ม แล้วสื่อก็ร่วมลงขันรับข้อมูลจาก API น่าจะมีหลายสิบหรือหลายร้อยเจ้า ไม่แน่ใจ เขาหยิบเอาไปใส่แล้วแสดงผล อันนี้คร่าวๆ นะ

ทีนี้ในแง่ตัวข้อมูล เมื่อรอ data แต่ละหน่วยเข้ามาที่ กกต. กลาง ตัว API เขาจะเป็นคนจัดให้ ซึ่งมันจะมีข้อมูลหลักๆ คือข้อมูลเบอร์แคนดิเดต เบอร์ผู้สมัคร เช่น ผู้สมัครเขต 1 พรรค A ได้คะแนนเท่านี้ อันนี้อัพเดททุกๆ 5 นาที แล้วก็อีกส่วนหนึ่งก็คือในเขตนี้ กทม. เขต 1 มีผู้มาใช้สิทธิเท่านี้ เป็นบัตรดีเท่านี้ บัตรเสีย หรือ vote no เท่าไหร่ แล้วอีกส่วนหนึ่งคือผลของปาร์ตี้ลิสต์ หลักๆ ที่คิดว่าสื่อจะได้ใช้คือสามส่วนนี้

อันนี้ตอนแรกเข้าบอกว่า ข้อมูลนี้จะอัพเดททุก 5 นาที จริงๆ คนที่เอาไปใช้ค่อนข้างแฮปปี้มากเพราะว่าใน 5 นาทีก็ถือว่าโอเคแล้วตามมาตรฐานของ กกต. เรา แต่ปรากฏว่าสิ่งที่เกิดขึ้นก็คือ… เดี๋ยวอันนี้ค่อยเล่าแล้วกัน

ตัวข้อมูลที่ได้มาทุกๆ 5 นาที ก็เป็นหน้าที่ของแต่ละสื่อว่าเขาจะเอาไปประมวลผลและนำเสนออย่างไร ส่วนของ ELECT Live สิ่งที่เราทำก็คือ เอาข้อมูลดิบของแต่ละผู้สมัครของแต่ละเขตมาคำนวณเองว่า แต่ละเขตหรือจำนวนผู้สมัคร สส.เขต สส.ปาร์ตี้ลิสต์ ที่น่าจะได้ น่าจะได้คือเท่าไหร่ ก็เอาตรงนี้ไปแสดงผลก่อน

หน้าที่ในการประมวลและคิดเป็น presentation นั้นโปรแกรมเมอร์หรือนักพัฒนาต้องมาหาตัวแปรเป็น สส.บัญชีรายชื่อเอง?

เขามีการสรุปรายจังหวัดกับรายภาคมาให้ แต่เราเชื่อ raw data (ข้อมูลดิบ) มากกว่า ก็มาบวกลบคูณหารเอง มันทำให้สามารถนำไปแสดงผลได้ค่อนข้างละเอียดกว่า สามารถให้ตัว Live มันมี interactive เช่น user เขาอยากเข้ามาดูรายเขต เขาไม่ได้อยากดูรายภาคหรือรายระดับประเทศ ก็สามารถกดคลิกเปลี่ยนได้ทันที แล้วมันก็จะมีบางไอเดียที่เราเสิร์ฟเข้าไป เช่น อยากจะขอดูเขตเมือง กับไม่ใช่เมือง มันมี condition บางอย่างที่เราคิดว่าน่าสนใจ ทำให้เราเห็นแนวโน้มบางอย่างว่าถ้าเป็นเขตเมืองเขาจะนิยมพรรคนี้หรือเปล่า เขตชนบทเขาอาจจะนิยมพรรคนี้มากกว่าหรือเปล่า ซึ่งการที่เราไม่ได้พึ่งของเขาทั้งหมด ใช้ raw data มาคำนวณจะทำให้เราเล่นพวกนี้ได้เยอะ

ข้อมูลที่ กกต. ให้มา เขาก็จะบอกตัวคะแนนดิบว่า สส. แต่ละเขต ใครได้ ได้เท่าไหร่ ส่วนที่เป็นตัวเลือกพิเศษใน ELECT Live สามารถแบ่งเขตพื้นที่ในเมือง นอกเมือง เขตที่ถูกแบ่งโดย คสช. เขตที่มีฐานเสียง แบบนี้คือที่เรามาออกแบบเอง?

ใช่ครับ คิดว่าเป็นมุมมองที่น่าสนใจก็เลยเสริมเพิ่มเข้าไป เพราะจริงๆ ELECT Live มันต่างจากตัวเว็บไซต์อื่นนิดหนึ่งตรงที่ว่า มันเกิดจากคนอย่างผมและเพื่อนๆ ที่ทำ elect.in.th ด้วยกันว่าเราอยากรู้อะไร เหมือน based on ว่า ‘เราอยากรู้อะไร’ เพราะฉะนั้นเราอยากได้อะไร เราเป็นคนที่เป็นทั้งลูกค้าและเป็นคนที่สร้างเองในเวลาเดียวกัน ก็เลยใส่สิ่งที่เราอยากเห็นเข้าไป นี่คือไอเดียพื้นฐาน

เวลาที่เราได้ข้อมูลแบบนี้มา แล้วเราแสดงผลผ่านตัวแปรต่างๆ นานา เราก็ศึกษาข้อกฎหมายด้วย?

แน่นอน เวลาเราตีความว่าอะไรเป็นอะไร เราก็เปิดกฎหมายเลือกตั้งดูเลยว่า vote no หรืออันดับ 1 ต้องเป็นอย่างไร ความน่าสนใจอย่างหนึ่งก็คือว่า เรื่องพวกนี้ ข้อกำหนดในตัวหนังสือของกฎหมายมันอาจจะชัดเจนหรือไม่ชัดเจนในตัวมันก็แล้วแต่ แต่พอต้องมาคำนวณให้ได้เพื่อแสดงผล มันต้องค่อนข้างชัดเจน ฝ่ายที่เป็นโปรแกรมเมอร์ก็จะทำโปรแกรมตัวหนึ่งขึ้นมาเอาไว้คำนวณ สส.ปาร์ตี้ลิสต์อัตโนมัติ โดยที่ไล่ดูกฎหมายทีละข้อเลยว่าเป็นเคสนี้ต้องคำนวณอย่างนี้ ถ้า สส. พึงมีเกินเท่านี้แล้วให้หักลบอันนี้เป็นแบบนี้ เขาเขียนเป็นโปรแกรมสำเร็จรูปมา แล้วมาเปรียบเทียบกฎหมายให้ดู แล้วตัวประมวลผลนี้ก็เผยแพร่ให้คนอื่นเอาไปใช้ได้อีก

ข้อมูลที่ กกต. มาเผยแพร่ในเว็บไซต์ของ กกต. เองก็จะบอกเฉพาะ สส.เขต แต่ สส.ปาร์ตี้ลิสต์ นั่นเพราะแต่ละสื่อ แต่ละแพลตฟอร์มไปจัดการเองใช่ไหม

คิดว่าแต่ละแพลตฟอร์มไปตีความเอง แต่ไม่ใช่ตีความแบบมั่ว เป็นการตีความตามกฎหมาย เพียงแต่ว่าถ้าเราต้องไปรอจนถึง… คือ สส.ปาร์ตี้ลิสต์นั้นจะได้ก็ต่อเมื่อมี สส.เขต และนับคะแนนครบ เพื่อจะได้รู้ว่ามีคนออกมาใช้สิทธิเท่าไหร่ก็ไปหารจำนวนเขตอะไรก็ว่าไปก่อนได้ สส. พึงมี

ประเด็นก็คือ เราจำเป็นต้องรอไฟนอลวันสุดท้ายที่ กกต. ประกาศผลเป็นทางการออกมาหรือไม่ ผมมองว่าไม่จำเป็น เราสามารถดูแนวโน้มและเข้าใจผลคร่าวๆ ได้ตั้งแต่วันที่กำลังเริ่มนับเลย

โอเค มันมีความแกว่งแน่นอน เพราะมันกำลังนับอยู่ เราก็ปรับตัวฐานไปเรื่อยๆ แต่เราก็อยากจะให้เห็นเหมือนกับว่า เพิ่มความตื่นเต้นเข้าไปด้วยในการรับชมส่วนหนึ่ง อีกส่วนหนึ่งก็คือ ประชาชนจะได้เห็น realtime ว่าตอนนี้คะแนนโดยรวมมันเทไปทางไหนหรือชักเย่อกันอย่างไร ในแง่หนึ่งมันก็เป็นการตรวจทานกับ กกต. ด้วยว่า ข้อมูลที่เขานับๆ กันอยู่นั้นมันตรงกับที่ประชาชนเห็นมากน้อยแค่ไหนด้วย ไม่งั้นถ้าเรารอ 30 วัน 50 วันก่อนที่ กกต. เขาจะประกาศ ข้อมูลมันก็หายไปหมดแล้ว

ระหว่างที่มีการนับคะแนน สิ่งที่น่าสนใจอีกอย่างก็คือ การเปลี่ยนแปลงของค่าคะแนนที่นับ อันนี้ กกต. ก็ส่งคะแนนที่เป็นข้อมูล live มาให้เรื่อยๆ แต่สิ่งที่เราทำเพิ่มเติมคือการเก็บคะแนน ณ ช่วงเวลานั้นไว้ด้วย ตั้งแต่ปิดหีบแล้วคะแนนเริ่มไหลมาสัก 6 โมงเย็นอะไรแบบนี้ ทุก 5 นาทีก็จะเก็บไว้เพื่อเราจะได้เห็น

อย่างมีคนสงสัยว่าทำไมอยู่ๆ คะแนนของบางเขตมันพุ่งขึ้น หรือบางครั้งตอนแรกพรรคนี้นำอยู่ แต่จู่ๆ คะแนนค้างไป ตื่นเช้ามาดู อ้าว ทำไมคะแนนมันสลับลำดับกันโดยสิ้นเชิง มันเกิดอะไรขึ้น สิ่งที่เราทำก็คือเก็บ snapshot (สำรองข้อมูล) ตลอดเวลา มันทำให้เรา replay ดูได้ว่า มันเกิดปัญหาขึ้น ณ ช่วงเวลาใด ที่เขตไหนบ้าง

จริงๆ เมื่อคืน (25 มีนาคม) ก็มีการประมวลผลข้อมูลแล้วก็โพสต์ลงไปใน Facebook ด้วย มันจะเป็น timeline ว่า นครราชสีมาเขต 1 ที่ตอนแรกอนาคตใหม่นำอยู่นิดหนึ่ง แล้วจู่ๆ คะแนนค้างไป เปิดมาอีกทีอนาคตใหม่แซงออกไปหลายพัน หรือพลังประชารัฐพุ่งขึ้นมา มันเกิดอะไรขึ้นนะ ก็มาเช็คทวนได้ว่ามันเกิดขึ้นประมาณ 4 ทุ่มนะ ตอนแรกมันเกิดอะไรขึ้น ทาง กกต. เขากดคะแนนผิดหรือเปล่า เกิดอะไรขึ้น หรือเกิดอะไรที่ระบบ อันนี้เราไม่ฟันธงว่าสาเหตุเป็นเพราะอะไร แต่เราเห็นความเปลี่ยนแปลงของข้อมูล ข้อมูลที่เข้ามามันไม่โกหกหรอก

– 03 –

หมายความว่ามันเห็นความเปลี่ยนแปลงที่น่าสนใจในช่วง 4 ทุ่ม ของวันเลือกตั้ง?

ข้อมูลมันมีการ… คะแนนมันลดลงได้อย่างไร อันนี้ก็เป็นประเด็นหนึ่งที่เขาสงสัยกัน กับบางเขตที่อยู่มันมีพรรคเพื่อนไทยคะแนนพุ่งไป 200,000-300,000 มันเป็นไปได้ยังไง แล้วจู่ๆ ตอนเช้ามันก็ตกกลับมาที่เดิม ซึ่งอันนี้ถ้าเราย้อนกลับไปเพื่อ cross check กับ data forensics คือการชันสูตรข้อมูล ก็อาจจะทำให้ตีความได้หลายอย่าง

แต่มันมีคนที่ทำงานข้างในบอกว่า ที่ข้อมูลมันเด้งมาที่พรรคเพื่อนไทย ก็อาจเป็นเพราะเขามีการสลับวิธีการกรอกข้อมูล API เป็นใช้มือคนกรอก แล้วเจ้าหน้าที่คนหนึ่งเขาอาจจะกรอกตัวเลขผิดเกินมา 1 หลัก หรืออาจจะกรอกให้ผิดพรรค เพราะเป็นการกรอกมือ จาก ‘เพื่อไทย’ แล้วเป็น ‘เพื่อนไทย’ อะไรแบบนี้ เป็นไปได้ไหม ก็เป็นข้อสังเกตของหลายคน

ก็ยังสันนิษฐานว่า กระบวนการแบบนี้มันอาจจะ error ได้เพราะมัน manual มาจากคน?

ใช่ครับ อันนี้ต้องเล่าย้อนนิดนึงว่า ตอนแรก กกต. บอกว่าจะมี API ให้ มีการอัพเดททุกๆ 5 นาทีอะไรแบบนี้ นั่นก็เป็นแบบ ideal มากๆ แต่พอวันจริง เขาเปิดนับคะแนนปั๊บ คิดว่าข้อมูลจะไหลๆ มาปรากฏว่า API พัง ข้อมูลไม่เข้า ล่มอยู่ประมาณครึ่งชั่วโมงหรือชั่วโมงหนึ่ง สุดท้ายได้รับข้อมูลมาว่าเขาเปลี่ยนวิธีการ อย่างที่บอกมา คือใช้คนมากรอก แทนที่จะใช้วิธีการดูดจากฐานข้อมูล กกต. แทน มันเหมือนกับมีปัญหาเชิงเทคนิค คือเชื่อมข้อมูลแล้วมันรับโหลดไม่ไหว เลยทำให้ทาง กกต. ล่ม

เขามีแผนสำรองคือ นอกจาก กกต. เขาจะให้ฐานข้อมูลมาแล้ว เขายังถ่ายหน้าจอ กกต. ไว้ด้วยว่านับถึงไหนแล้ว อันนี้ผมเข้าใจจากที่อ่านเองในอินเทอร์เน็ตนะว่าเขาเปลี่ยนเป็นโหมดที่ให้เจ้าหน้าที่นั่งดูหน้าจอของ กกต. แล้วนั่งกรอกอัพเดท API ให้ มันก็เลยเกิด human error เยอะมาก แล้วก็จะเห็นว่าตั้งแต่หัวค่ำ ข้อมูลจะค่อยๆ มาอย่างช้าๆ ยกเว้นภาคใต้แทบไม่มาเลย ข้อมูลจากภาคใต้หายไปเลย เช่น จังหวัดตรังนั้นกว่าจะมาก็ตอนเช้า เพราะว่าเข้าใจว่าเจ้าหน้าที่กรอกมือเขามีจำกัด ทำให้ไม่สามารถกรอกได้ครบทุกเขต อันนี้ไม่แน่ใจ แต่เข้าใจว่าภาคใต้เขาไม่ค่อยกรอกเท่าไหร่ เป็นเพียงข้อสังเกตที่เห็นจาก data snapshot timeline ที่เราทำ บวกกับเห็นที่คนมาแชร์

กราฟแสดงข้อมูลของเขตเลือกตั้งในภาคใต้ จะเห็นว่าข้อมูลมาตอนเช้าของวันที่ 25 มีนาคม

เมื่อวาน กกต. ออกมาแถลงตอนบ่าย น่าจะมีสองประเด็นที่เป็นข้อถกเถียงกันอยู่ ข้อมูลที่ กกต. feed ให้นั้น กกต. ยืนยันว่าถูกต้องแล้ว แต่สื่อไปตีความผิดเพี้ยนกันเอง?

อันนี้ผมคิดว่าสามารถไปเช็คทวนได้เลย เข้าใจว่าสื่อแต่ละเจ้าก็ใช้ข้อมูลชุดเดียวกันหมด จริงๆ ที่เราสงสัยว่าข้อมูลที่ไหลมานั้นมันถูกต้องหรือเปล่า ทำไมมันโดด ทำไมมันช้า เราก็มีการตรวจสอบจากเว็บอื่นๆ เราก็พบว่าเว็บอื่นๆ ได้ตัวเลขเดียวกันหมด ว่าคะแนนโดดจากหลักหมื่นเป็นหลักแสน หรือคะแนน 30,000 อยู่ๆ ตกไปเป็น 20,000 เราเห็นเลยว่าทุกเว็บไซต์รายงานผลเหมือนกันหมด ก็เป็นข้อยืนยันว่า data ที่ออกมาจาก API ของ กกต. ให้ข้อมูลผิด หรือผมไม่พูดว่า กกต. ให้ข้อมูลผิดแล้วกัน แต่สื่อมวลชนเอาข้อมูลจาก กกต. มารายงานข่าวจริง ส่วนกรณีการเอาไปประมวลว่า สส. ปาร์ตี้ลิสต์ได้มากได้น้อยนั้น มันแล้วแต่วิธีการคำนวณของแต่ละเจ้านะ ซึ่งจริงๆ มันควรจะคล้ายๆ แต่รายละเอียดนั้นผมไม่แน่ใจ แต่ที่เป็นประเด็นจับต้องได้คือ คะแนนของแต่ละเขตนั้นต้องได้รับรายงานเท่าเทียมกัน

อีกข้อหนึ่งคือ กกต. บอกว่าระบบที่เขาออกแบบนั้นดีแล้ว ถูกต้องแล้ว แต่สิ่งที่เป็นปัญหาก็คือ human error อันนี้เป็นเหตุผลที่สามารถรับฟังได้ไหม

ผมมองว่าปัญหามีทั้ง human error และการออกแบบระบบที่ไม่ดี และการวางแผนการทำงานโดยรวมเพื่อรายงานผลที่ไม่เคลียร์ไม่ชัดเจนตั้งแต่แรก ทำให้มันเกิดปัญหาในวันเลือกตั้งจริง

human error เป็นแค่แผนสำรองที่เกิดขึ้น เนื่องจากว่าแผนแรกนั้นมีปัญหา human error (ซึ่งเป็นแผนสอง – ผู้เขียน) ก็เลยยิ่งชัดเจนมากขึ้น คือถ้าวางแผนมาดีและระบบมีประสิทธิภาพ ทดสอบพร้อม มันจะไม่เกิดปัญหาแบบนี้ ผมคิดว่ามันเป็นสิ่งที่ควบคุมได้

อีกประเด็นคือ กกต. อธิบายว่าโดนโจมตี คือเราเข้าใจว่าหมายถึงโดนแฮ็คสามครั้ง ทำให้ล่มสองครั้ง อันนี้เป็นไปได้ไหม

ถามว่าเป็นไปได้ไหม ความเป็นไปได้มันก็มีครับ แต่ว่าเนื่องจากผมไม่เห็นระบบข้างในของ กกต. ผมเป็นแค่คนรับข้อมูลท้ายสุดของก้อนนี้ แต่ว่าเท่าที่ฟังดู setup ของ กกต. เขาค่อนข้างระแวดระวังการให้ข้อมูลอยู่แล้ว เพราะว่าเขากลัวว่าระบบฐานข้อมูลของเขาจะล่มถ้าสื่อเป็นร้อยสำนักมาเชื่อมต่อพร้อมๆ กัน เขาเลยคุยตกลงกันว่า จะมี API แค่หนึ่งเจ้า ที่ไปดูดข้อมูลของ กกต. มา แค่หนึ่งท่อเท่านั้น ซึ่งหนึ่งท่อนี้ ต่อให้เขียนระบบแย่แค่ไหนก็ไม่ล่มแน่นอน แต่มันก็ล่ม…

ผมเชื่อว่าอาจจะมีปัญหาที่ตัวเชิงเทคนิคของทาง กกต. หรือเปล่า ที่ปรับระบบมาไม่ค่อยดี ทำให้มันล่มง่ายมาก แต่เรื่องแฮ็คนี่ ถ้าเรามองว่า กกต. เขามีความหวงข้อมูล ระวังข้อมูลระดับนี้ ก็ไม่น่าจะเปิดให้คนข้างนอกเข้าถึงได้ง่าย หรือแฮ็คได้ง่ายขนาดนั้น คิดว่าเป็นไปได้ค่อนข้างยาก เพราะเขาค่อนข้างระวังอยู่แล้ว เท่าที่ผมเข้าใจคือข้างนอกเข้าถึงได้แค่เจ้าเดียว

– 04 –

ถ้าถอดบทเรียนจาก ELECT Live เราเห็นอะไรบ้าง

ก็ถ้าพูดถึงในเชิงข้อมูล ก็อยากให้ข้อมูลมันครบมากว่านี้ เพราะจริงๆ สิ่งที่เราออกแบบมาคืออยากจะให้ลุ้นติดตามผล ว่าเขตนั้นเขตนี้กำลังค่อยๆ กลายเป็นสีแดง สีน้ำเงิน สีฟ้า สีส้ม อะไรอย่างนี้ครับ ค่อยๆ สลับกัน มีการคู่คี่สูสีกันมา แต่ปรากฏว่าสิ่งที่เกิดขึ้นจริงคือ data มันไม่ค่อยเข้าอย่างที่คาดหวังไว้ ส่วนตัวคิดว่ามันมีวิธีอื่นอีกไหมนอกจากรอคะแนนจาก กกต. จริงๆ สิ่งที่ทำได้คราวหน้าก็อาจจะเป็นแบบ เราสามารถลองขอ กกต. ขอข้อมูลจากประชาชนหน้าหน่วยเลือกตั้ง ให้รายงานผลได้ไหม มาทวนตรวจสอบกัน ซึ่งจริงๆ ตรงนี้ผมเข้าใจว่าอย่าง vote62.com เขาก็ทำระบบตรงนี้ไว้เหมือนกัน นั่นก็น่าสนใจตรงที่ให้คนเข้าไปถ่ายรูปหน้ากระดานนับคะแนนมา

ถ้าจะให้ไปไกลกว่านั้นก็คือ ถ้ามันสามารถแสดงมาได้หมดเลยว่าเขตไหน หน่วยไหนยังไม่มีคนเข้าไปถ่ายรูป ยังไม่มีคน feed ข้อมูลมา คนอื่นในพื้นที่อาจจะได้ลงไปช่วยกัน ก็จะเป็นอีกแรงหนึ่งที่ภาคประชาชนสามารถทำเพิ่มได้ หรือสื่อเองทำก็ได้ เป็นต้น

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

หรือว่าอีกอันหนึ่งที่เพิ่งเสร็จเมื่อคืนแล้วก็ปล่อยไปแล้ว ทำเสริมหลังจากที่เลือกตั้งจบไปแล้วก็คือ เรื่อง time machine (คลิกดูได้ผ่านไอค่อน time machine ด้านล่างขวาของ elect.thematter.co) ก็คือว่าเราสามารถ replay ตัวที่บอกประชาชนว่า ตั้งแต่ 6 โมงจนถึง 10 โมงเช้าของอีกวัน คะแนนมันขึ้นๆ ลงๆ อย่างไร แต่ละเขตมีการคู่คี่สูสียังไงบ้าง อันนี้ก็เพิ่งทำเสร็จ จริงๆ ถ้ามันเล่นได้ตั้งแต่ตอนนับคะแนนก็น่าจะสนุกดี

สิ่งที่เราทำขึ้นมา developer สามารถนำ source code ที่เผยเเพร่ผ่าน github (แพลตฟอร์มที่สามารถเปิดให้เข้าถึงข้อมูลได้) ไปพัฒนาต่อได้ใช่ไหม

ใช่ครับ คืออันนี้จริงๆ ต้องบอกว่าโปรเจ็คต์นี้ถ้าจ้างคนมาทำ โห… เเพงนะ (เว้นวรรค และย้ำ) เเพงเลยแหละ เเละด้วยระยะเวลา บุคลากรที่มาช่วยต้องมีโปรไฟล์ไม่ธรรมดา เเต่ว่าความตั้งใจของเราก็คือว่า ในเเง่สังคมและมาตรฐานของข้อมูลที่มันควรจะเป็น อีกด้านหนึ่งก็คือเราพยายามจะสร้าง community ของคนที่มาร่วมกันพัฒนา เรียกว่าอะไรดีล่ะ ยกระดับโปรแกรมเมอร์ หรือวงการเทคโนโลยีไทย ก็มีหลายประเด็นที่ไปด้วยกันได้กับโปรเจ็คต์

นอกจากงานโปรแกรมเมอร์ เว็บดีไซเนอร์แล้วยังมีงานด้านข้อมูลอย่าง iLaw และ The MATTER

โปรเจ็คต์นี้มันเกิดมาได้เพราะว่ามีกลุ่มคนที่สนใจ ที่เเคร์เรื่องการเมือง เเล้วพอดีมีความสามารถในการทำเว็บไซต์ ก็เลยเหมือนกับว่า boost โปรเจคนี้ให้มันเกิดขึ้นมาได้ เเต่ว่าระหว่างทางมันโตมาถึงขั้นนี้ได้ เพราะว่ามันไปกระตุ้นให้โปรแกรมเมอร์คนอื่นที่เขามีความสามารถอยู่เเล้ว เขาอาจจะสนใจการเมืองหรือไม่ ไม่รู้ เเต่เขาอยากจะทำอะไรที่ contribute ให้กับสังคม ให้กับประเทศไทยอะไรอย่างนี้ เเล้วปรากฏว่ามันมีโปรเจ็คต์นี้พอดี เเล้ว หนึ่ง-เขาได้ทำอะไรที่มัน challenge ที่เขาไม่เคยทำ เเล้วก็ได้ฝึกฝีมือด้วย ก็เลยดูดคนเข้ามาได้เรื่อยๆ อันนี้มองว่าเเต่ละคนเข้ามาด้วยเหตุผลต่างๆ ไม่ได้จำเป็นว่าจะต้องสนใจการเมืองอย่างเดียว บางคนก็สนใจในเชิงเทคนิค ว่าปกติทำงานที่บริษัทเขาก็ต้องทำแบบหนึ่ง เเต่โปรเจ็คต์นี้ไม่มีหัวหน้ามาชี้ว่าต้องเป็นอย่างนั้นอย่างนี้ ก็เกิดจากการคุยกันว่า อันนี้ดีนะ โยนไอเดียไป ทุกคนโอเค จัดไป

ช่วงที่พีคที่สุดคนดูพร้อมกันมากแค่ไหน

เยอะสุดประมาณ 100,000 กว่าคน ณ เวลาเดียวกัน ก็ถือว่าเยอะมาก ตั้งเเต่ทำเว็บไซต์มาไม่เคยเจอขนาดนี้มาก่อน ก็เป็นความภูมิใจของทีมเล็กๆ ที่เราสามารถทำเว็บให้มีคนมาดูเป็นเเสนคนได้ คืออย่างที่บอกนอกจากจะบอกว่าเราไม่เคยทำเเบบนี้เเล้วมันก็เป็น challenge ด้วย ตั้งเเต่แรกที่บอกว่าถ้าปล่อยไปคนมาเยอะเเน่นอน เเล้วมันก็มี challenge ว่าระบบจะเร็วไหม จะล่มไหม ข้อมูลจะอัพเดททันไหม มี challenge ในเชิงเทคนิค ซึ่งก็วางเเผนมาเเล้วผลก็ออกมาน่าพอใจ

สีหน้าความดีใจของทีมงาน เมื่อยอดคนเข้าใช้งานเว็บพร้อมกันเกินแสน (ในภาพ รพี สุวีรานนท์ ซ้ายสุด ใส่แว่นตา)

ถ้าให้คะเเนนความพึงพอใจ 0-10 ได้เท่าไหร่

ในเเง่ไหน

ภาพรวมครับ

คิดว่า 8 ค่อนข้างดีครับ ยกเว้นเรื่องข้อมูลนี่เเหละ คือจะเห็นว่าเเต่ละเว็บไซต์เขาก็มี concern ที่ต่างออกไป เขาจะมีเรื่องที่ให้ประชาชนมีส่วนร่วม อันนี้ก็น่าสนใจ หรือว่าของ Workpoint เขาก็มีการแทรกข่าวเข้ามาด้วย มีการนำเสนอแผนที่ สามารถซูมเข้าไปดูได้ หรือว่าของ Voice TV ที่เขาทำเป็นเเบบสองฟากทางการเมืองมาชนกันเเล้วก็สามารถลากวางเปลี่ยนขั้วได้ เป็นการสมมุติการจัดตั้งรัฐบาล อันนั้นก็ดี

ให้คะเเนนทาง กกต. เท่าไหร่

ให้ดีไหมนะ (หัวเราะ) ก็ค่อนข้าง… ถ้าให้คะเเนนก็คง 2 ครับ

คือเหมือนกับว่าเตรียมการมาค่อนข้างฉุกละหุก คือระบบโอเคเเล้วเเหละ เเต่ว่าอาจจะเตรียมความพร้อมน้อยไปหน่อย มีเวลาน้อยมาก คือระบบเขาไฟนอลกันจนถึงนาทีสุดท้ายวันเสาร์ ซึ่งจริงๆ พวกนี้มันควรจะเสร็จหนึ่งเดือนก่อนหน้าด้วยซ้ำ เเล้วพอวันจริงก็มีปัญหาอะไรอย่างนี้ ผมไม่เเน่ใจว่าเป็นครั้งเเรกหรือเปล่าที่มีเหตุใหญ่เข้ามา ไม่เเน่ใจว่ารอบที่เเล้วเป็นอย่างไร คือตอนนั้นก็เห็นผ่านหน้าจอทีวี ไม่รู้ว่าเขารายงานเข้ามาอย่างไรบ้าง เเต่ว่าก็คราวหน้าหวังว่าคงจะดีขึ้น

คือคราวนี้ก็ถือว่าเป็นมาตรฐานเเล้วแหละว่า เขาก็คง… เนื่องจากว่าเขาไปดูงานมาหลายที่ คิดว่าน่าจะได้ดีกว่านี้ ได้สมบูรณ์กว่านี้ เเต่ว่าทำไมไม่รู้ก็มีความฉุกละหุก ทั้งๆ ที่เลือกตั้งเราก็เลื่อนมาหลายรอบ เวลาก็น่าจะมีเยอะ

Author

โกวิท โพธิสาร
เพลย์เมคเกอร์สารพัดประโยชน์ผู้อยู่เบื้องหลังเว็บไซต์ waymagazine.org มายาวนาน ก่อนตัดสินใจวางมือจากทีวีสาธารณะ มาร่วมปีนป่ายภูเขาลูกใหม่ในฐานะ ‘บรรณาธิการ’ อย่างเต็มตัว ทักษะฝีมือ จุดยืน และทัศนคติทางวิชาชีพของเขา ไม่เป็นที่สงสัยทั้งในหมู่คนทำงานข่าวและแม่ค้าร้านลาบ

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ โดยการเข้าใช้งานเว็บไซต์นี้ถือว่าท่านได้อนุญาตให้เราใช้คุกกี้ตาม นโยบายความเป็นส่วนตัว

Privacy Preferences

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
Manage Consent Preferences
  • Always Active

บันทึกการตั้งค่า