เบื้องหลังการพัฒนาระบบโหวตเลือกตั้ง AKB48 “Senkyo48”

2014-04-07 17_44_10

ในปีนี้ได้ก็ได้เริ่มต้นการโหวตไปแล้ว สำหรับ AKB48 Thailand General Election หรือการโหวตลงคะแนนเพื่อจัดอันดับความนิยม AKB48 ในไทย… (แหม๋ ชื่อดูสวยหรู ดูเป็นทางการเชียว 555+) สำหรับ entry นี้ก็เลยอยากมาเขียนบันทึกเอาไว้ในสิ่งต่างๆ ที่ได้ใช้ในการทำระบบตัวนี้ ทั้งในแง่ของ Programming , การจัดการข้อมูล, หรือเทคนิคต่างๆ ที่ได้ใช้ อนึ่งก็เพื่อเผยแพร่ความรู้ในเชิง IT (ล่ะมั้ง) หรือถ้าใครจะมองอีกแง่จะว่าโม้ก็ได้ แต่เหตุผลลึกๆจริงๆ คืออยากสื่อและอธิบายให้เห็นว่า การสร้างระบบในเชิง Application ขึ้นมาซักตัวนั้น มันต้องทำอย่างไร

ที่มา

สำหรับที่ไป ที่มา ของระบบตัวนี้นั้น เกิดจากเมื่อปีที่แล้ว (2013) ผมและพ้องเพื่อนมีความตั้งใจที่อยากจะจัดการโหวตเลือกตั้งเลียนแบบกับการเลือกตั้ง AKB48 ของจริง ที่จัดขึ้นเป็นประจำทุกปี โดย AKS ญี่ปุ่น ซึ่งก็คิดว่า ถ้าเราสามารถวัดความนิยมของแฟนๆ ชาวไทยได้ก็น่าจะดี ถามว่าการวัดความนิยมแบบง่ายๆ ที่สุด ก็คือการ “ตั้งโพล (Poll)” ซึ่งก็มีหลายค่าย หลายกลุ่มได้เคยทำกันมาก่อนแล้ว แต่ผมมองว่ามันดูไม่น่าดึงดูดและปริมาณมันน้อยเกินไปที่จะวัดผลในระดับสเกลใหญ่ๆ อีกอย่างถ้าพูดถึง Poll แล้วนั้น มันค่อนข้างเป็นลักษณะของ 1:1 หรือ 1 คน โหวตได้ 1 ครั้ง ซึ่งรูปแบบก็ต่างกันออกไปแล้วแต่ว่าจะตั้ง Poll กันยังไง แต่สำหรับการโหวตเลือกตั้งโดยการใช้โค้ดโหวต ซึ่งเป็นระบบมาตรฐานที่ AKB48 ใช้กันอยู่แล้วนั้น 1 คนสามารถเลือกโหวตได้หลายครั้ง และครั้งละหลายคน ตามจำนวนโค้ดโหวตที่เรามี ดังนั้นผมจึงเริ่มต้นคิดระบบการโหวตที่น่าจะสามารถวัดผลความนิยมในไทยได้จริงๆ ซึ่งก็ออกมาเป็นระบบ Senkyo48 นี่ล่ะครับ

ว่าด้วยเรื่องชื่อโดเมน Senkyo48

อันนี้มาจากคำเต็มว่า Sousenkyo ที่เป็นภาษาญี่ปุ่นแปลว่าการเลือกตั้ง แต่มันดูยาวเกินไป เลยย่อกลายเป็น Senkyo เฉยๆ เลยเป็นที่มาของโดเมน senkyo.48.in.th ที่เป็นชื่อของหน้าเว็บระบบเลือกตั้งตัวนี้

ที่มาของคะแนนโหวต

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

และคะแนนอีกส่วนนึงจะมาจากการโหวตของคนที่ซื้อสินค้า AKB48 จากร้าน SHOP48 ซึ่งเราจะแถมโค้ดโหวตไปให้ด้วยเช่นกัน

การออกแบบและเขียนโปรแกรม

การเขียนโปรแกรมนั้นได้ @pingz มาช่วยในการร่วมออกแบบฐานข้อมูล และเขียนโค้ดหลังบ้านให้ ซึ่งเราเลือกใช้ภาษา php ซึ่งเป็นภาษาที่ง่ายและถนัดอยู่แล้ว เก็บข้อมูลต่างๆ ด้วย MySQL เริ่มแรกเลย เราก็ต้องออกแบบฐานข้อมูลกันเสียก่อน ซึ่งก็ใช้เวลาไม่นานมาก และฐานข้อมูลก็ไม่ได้ซับซ้อนนัก เราพยายามเขียนให้ระบบ ง่ายต่อการ Reuse นำกลับมาใช้ใหม่ได้เพื่อที่ว่าจะได้นำมาใช้งานได้ในครั้งต่อไป (ซึ่งก็คือปีนี้นั้นเอง) โดยในการเขียนโปรแกรมจริงๆ เราต้องแยกเป็นสองส่วนใหญ่ๆ คือ…

1. ส่วนของการขอรหัส (Redeem Code) ในส่วนนี้นั้นอย่างที่เราบอกไปว่า เราต้องมีการเชื่อมต่อกับ Facebook API เพื่อเก็บข้อมูลของผู้ขอโค้ด เพื่อที่จะจำกัดระยะเวลา จำนวนของผู้โหวตได้ ในส่วนนี้เราได้โหลด Facebook SDK มาศึกษาและเขียนโค้ดเพื่อดึงข้อมูล Email/Name/Home Town ของผู้ขอโค้ดทุกคนเอาไว้ ซึ่งเราขอสิทธิ์แค่นั้นในการเชื่อมต่อ ดังนั้นวางใจได้ เราไม่ได้ขโมยข้อมูลของคุณไปมากเกินกว่านั้นแน่นอน โดยจะมีการจัดเก็บเวลาของการ Redeem Code เอาไว้ และจะอนุญาติให้คนเดิมสามารถขอโค้ดได้อีกครั้ง หลังจากเวลาผ่านไป 20 ช.ม นับจากเวลาที่ขอโค้ดครั้งที่แล้ว

2. ส่วนของการโหวต (Vote) เราได้มีการเพิ่มข้อมูลสมาชิก AKB48 และวงน้องสาวต่างๆ ลงใน Database ซึ่งเราได้เพื่อนๆ ทีมงานช่วยกันหารูปภาพของน้องๆ แต่ละคน จัดสรรทีม และใส่ข้อมูลชื่อ ทั้งชื่อภาษาอังกฤษ ภาษาไทย และภาษาญี่ปุ่น ลงไป เมื่อเขียนโปรแกรมโหวต ก็จะเป็นการอัพเดทคะแนนโหวตที่ Table ของสมาชิก AKB48 แต่ละคนเพิ่มเข้าไป ซึ่งในส่วนนี้ MySQL ก็สามารถทำงานจัดเก็บข้อมูลในส่วนนี้ได้เป็นอย่างดีอยู่แล้ว

หลังจากเขียนโค้ดหลังบ้านเสร็จเรียบร้อย ก็มีออฟชั่นเสริมนิดหน่อย ที่เราใส่เข้าไป เพื่อเป็นการจูงใจให้มีคนเข้ามาโหวตต่อเรื่อยๆ นั้นก็คือการ Post ไปยัง Facebook หลังการโหวต โดยเราเลือกที่จะสร้าง Application เพื่อ Submit ไปยัง Facebook โดยเราตั้งชื่อมันว่า akbthaivote โดยมันจะขอสิทธิ์ในการโพสไปยังหน้าวอลในส่วนของ Activity ให้ เพื่อที่ว่า คนโหวตจะได้ดูได้ว่า เราโหวตใครไปแล้ว และเพื่อนจะได้เห็นว่าเราโหวตใคร ซึ่งสามารถดูได้จาก Activity Log ของ Account ตัวเอง

https://www.facebook.com/<username>/allactivity?privacy_source=activity_log&log_filter=app_154364891392900

ซึ่งก็พบว่า ระบบสามารถทำงานได้ตามที่ต้องการเป็นอย่างดีทีเดียว ขั้นต่อมา คือในเรื่องของการดีไซน์หน้าตาเว็บไซต์ให้น่าใช้

ในปี 2013 นั้น ผมเลือกใช้ Bootstrap ซึ่งเป็น Framework CSS สำเร็จรูปที่ผมกำลังฝึกฝนอยู่ จึงนำมาใช้ในการปรับดีไซน์หน้าเว็บต่างๆ ให้ดูดีขึ้น โดยประกอบไปด้วย หน้าแรก/หน้าเลือกทีม/หน้าเลือกสมาชิก/หน้าโหวต/หน้าหลังโหวต/หน้าขอโค้ด รวมไปถึงหน้าประกาศผลในปี 2013 ด้วยเช่นกัน

Screen Shot 2557-04-14 at 11.56.47 PM

สำหรับในปีนี้ 2014 ตัวผมค่อนข้างที่จะเบื่อ Bootstrap ล่ะ ก็เลยแหวกแนวหาตัวอื่นมาลองเล่นดูบ้าง จนไปเจอ Framework ชื่อ Metro UI ที่แน่นอนว่าคงได้สไตล์การออกแบบมาจากค่าย Microsoft หลังจากเห็นว่าหน้าตาดูดี พอไปวัดไปวาได้ ก็เลยเลือกใช้ และเริ่มเอาโค้ดเดิมที่เคยทำมา Reuse ข้อมูลต่างๆ และปรับ Design ต่างๆ ให้ดูดีขึ้นจากเดิม จนได้เป็น Senkyo48 ครั้งที่ 2 ประจำปี 2014 นั้นเอง ซึ่งผมใช้เวลาในการ Reuse Code และ Redesign หน้าต่างๆ ทุกหน้า รวมไปถึงการทำ Artwork รูปภาพต่างๆ ใหม่เป็นระยะเวลา 1 สัปดาห์เต็มๆ ก็ต้องขอขอบคุณทีมงานหลายๆ คนที่ร่วมมือกัน ทั้งการแก้ข้อมูลน้องๆ อัพเดททีมต่างๆ ให้เป็นปัจจุบัน การหารูปมาใส่แทนที่ และการทำรูปประกอบต่างๆ ให้ใหม่มา ณ ที่นี่ด้วยครับ

jggkj

อนึ่งหลังจากเปิดกิจกรรมไปในครั้งแรกเมื่อปี 2013 ก็พบว่ามีผู้ให้การตอบรับพอสมควร สรุปเบ็ดเสร็จมีคะแนนโหวตทั้งสิ้นกว่า 16,000 คะแนน ซึ่งทำให้เรารู้ฐานแฟนคลับของ AKB48 คร่าวๆ ในประเทศไทยไปบ้างแล้ว ซึ่งข้อมูลตรงนี้เป็นข้อมูลเปิด และผมเองก็ยินดีหากจะมี Agency เจ้าไหนสนใจ หรือนำผลคะแนนนี้ไปใช้ในการทำตลาด หรือวางแผนกลยุทธ์ใดๆ ที่เกียวกับ AKB48

ในปีนี้ก็เช่นกัน การโหวตเลือกตั้งครั้งที่ 2 ในครั้งนี้ ผมเองก็มีความคาดหวังที่จะได้เห็นการเติบโตของแฟนคลับ AKB48 ในประเทศไทย ตลอดระยะเวลา 1 ปี ที่คิดว่าน่าจะมีฐานแฟนๆ เพิ่มมากขึ้น สังเกตได้จากแฟนเพจที่เกียวกับ AKB48 เว็บไซต์ต่างๆ หรือการนำเสนอข่าวที่ต่างก็มีมากขึ้น จนเรียกได้ว่า น่าจะทำให้เกิดกระแส AKB48 ในไทยได้บ้าง ไม่มากก็น้อย

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

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

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

 

0 Total Views 0 Views Today

Leave a Reply

Your email address will not be published.