เมื่อลมพัดหวน : Kivy framework เครื่องมือพัฒนาแอพสำหรับโทรศัพท์มือถือ

จากที่ผมรอคอยโครงการ Beeware มาจะร่วมๆสามปีแล้ว แต่พบว่าความก้าวหน้าของโครงการมีการเคลื่อนไหวน้อยมากเหมือนจะหยุดนิ่งสนิท สำหรับโครงการ Beeware คือโครงการทำเครื่องมือพัฒนาโปรแกรมข้ามแพล็ตฟอร์มเพื่อให้ผู้ใช้งานพัฒนาซอฟท์แวร์ด้วยภาษาไพธอน ให้สามารถใช้งานได้ทุกแพล็ตฟอร์มอย่างหลากหลายโดยเฉพาะบนโทรศัพท์มือถือแอนดรอยด์และ iOS เป็นโครงการเปิดโค้ด (open-source) ที่อาศัยการระดมทุนเพื่อหาเงินให้โครงการสามารถเดินหน้าต่อไปได้

สำหรับ Kivy framework (ภาษาไทยออกเสียงกีวี เป็นคำพ้องเสียง Kiwi ที่เป็นชื่อผลไม้ชนิดหนึ่ง) ผมได้ศึกษาเบื้องต้นเมื่อเกือบจะสิบปีที่แล้ว เป็นโครงการเปิดโค้ดคล้ายกับ Beeware แต่ตอนนั้นยังไม่ได้สนใจนักเพราะโครงการเพิ่งจะเริ่มต้นช่วงนั้นยังขลุกขลักอยู่มาก เคยเอาโครงการตัวอย่างประมาณ แสดงผลว่า “Hello world!” มา build เป็นไฟล์ APK เพื่อติดตั้งบนโทรศัพท์มือถือแอนดรอยด์แต่พบว่ากระบวนการยุ่งยากมาก ต้องใช้ลีนุกซ์ติดตั้งเครื่องมือของกีวีเฟรมเวิร์คที่เรียกว่า “buildozer” และต้องติดตั้ง Android Studio ของกูเกิ้ลด้วย เนื่องจากเป็นมือใหม่ประกอบกับเป็นช่วงเริ่มต้นของโครงการกีวีที่ไม่พร้อม ทำให้ผมไม่สามารถจะ build APK ได้ จึงได้ล้มเลิกไป

เมื่อลมหวนกลับ

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

จุดอ่อนของแอพที่พัฒนาด้วยกีวีเฟรมเวิร์คนั้นคือ Graphic User Interface (GUI) ไม่เป็นเนทีฟหรือธรรมชาติ เพราะว่ากราฟฟิคอาศัยการวาดเองด้วยเอนจิ้นของกีวีเอง แต่ทางโครงการได้นำ Material Design (MD) ของกู้เกิ้ลมาปรับใช้ให้แอพบนแอนดรอยด์สามารถเรนเดอร์ได้ใกล้เคียงกับแอพที่พัฒนาด้วย Android Studio ซึ่งสามารถแก้ไขปัญหานี้ไปได้ อาจจะไม่เต็มร้อยเปอร์เซ็นต์ดีนัก

คู่มือการใช้งานมีพอสมควรในเว็บหลัก kivy.org ส่วนการถามตอบปัญหามีใน stackoverflow.com ค่อนข้างหนาตา ติดขัดโค้ดตรงไหนอาจารย์ stackoverflow ช่วยได้

พัฒนา kivy ด้วย VS Code

สัญญาอนุญาต

สัญญาอนุญาตเป็นแบบ MIT license หรือ LGPL 3 ทำให้สามารถนำไปพัฒนาแอพหรือโปรแกรมในเชิงพาณิชย์ได้ โดยไม่ต้องเปิดโค้ด

นำโค้ดขึ้น github

ปัจจุบันการนำโค้ดขึ้นไปไว้ตาม cloud นับว่าสะดวกมากเนื่องจากไม่ต้องพกโค้ดในฮาร์ดดิสค์ไปไหนอีก ที่ไหนมีอินเทอร์เน็ตสามารถโคลนโค้ดมาแก้ไขและรันได้ จากนั้นก็สามารถอัพโหลดโค้ดขึ้นไป merge กับโค้ดเดิมได้ ตัวอย่างผมนำโค้ดขึ้นไปไว้ที่ github สามารถจัดเป็น private หรือ public ก็ได้ ฟรีไม่มีค่าใช้จ่ายถ้าใช้งานแบบธรรมดา ไม่ต้องการอะไรที่พรีเมียม

โครงการ Super COGO และ Thai Easy Geo

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

ในงานสำรวจแล้ว COGO (Cooridnate Geometry) เป็นงานเรขาคณิตวิเคราะห์ที่เกี่ยวข้องกับระยะทาง พิกัดและมุม ในเบื้องต้นตั้งชื่อแอพว่า “Super COGO” นิยามเป็นนัยๆว่าเป็นแอพที่ช่วยแก้ปัญหาด้านเรขาคณิตที่ใช้งานง่าย สะดวกและทรงพลัง ก็ขอโม้ไว้ก่อนครับ ตัวจริงๆจะเป็นเช่นไรก็มาติดตามชมกัน

แอพอีกตัว “Thai Easy Geo” ก็นิยามเหมือนกันคือใช้งานง่าย สะดวกและมีเครื่องมืออรรถประโยชน์หลายๆตัว ไลบรารีด้าน geodesy ได้ใช้ pygeodesy น่าเสียดายที่ไม่สามารถนำ pyproj ขึ้นมาใช้งานบนแอนดรอยด์ เนื่องจากไลบรารีเหล่านี้พัฒนาด้วยภาษาซีเป็นหลัก การจะนำมาใช้บนแอนดรอยด์จะต้องมีคนมาปรุง “recipe” ให้ kivy platform สามารถคอมไพล์เป็นจาวาได้ ส่วน pygeodesy เป็นโค้ดที่หลักๆแล้วพัฒนาด้วยภาษาไพธอนเพียวๆ จึงสามารถนำมาใช้ได้อย่างไม่มีปัญหา

นับเป็นความโชคดีที่มีคนปรุง Numpy และ MatPlotLib ให้สามารถใช้งานได้บน kivy platform ทำให้แอพที่พัฒนามีทางเลือกในการพล็อทกราฟได้สะดวกไม่ลงทุนลงแรงมาก หรือการคำนวณ least squares ด้วย Numpy ก็จะง่ายขึ้น

ปีหน้า 2023 ตั้งเป้าว่าจะอัพโหลดแอพขึ้นไปกูเกิ้ลเพลสโตร์ ตอนนี้แอพเพิ่งจะผ่านพ้นการตั้งไข่ หนทางยังยาวพอสมควรที่จะพัฒนาให้เสร็จ ก็ธรรมดาตั้งใจว่าแอพจะมีโฆษณา ถ้าจ่ายเงินซื้อก็จะไม่มีโฆษณามากวนใจครับ

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

Leave a Reply

Your email address will not be published. Required fields are marked *