
ผมได้ติดตามเป็นแฟนของ beeware มาได้ประมาณร่วมๆจะสองปีแล้วครับ beeware เป็นแพล็ตฟอร์มพัฒนาโปรแกรมแบบ cross-platform ที่อ้างว่าสามารถพัฒนาโปรแกรมแบบ desktop ได้ทั้งวินโดส์ ลีนุกซ์และแมคโอเอส รวมไปถึงแอนดรอยด์และไอโอเอส ปกติผมใช้ PySide2 สำหรับโปรแกรมบนเดสค์ท็อปอยู่แล้วเลยไม่รู้สึกตื่นเต้นตรงที่สนับสนุนโปรแกรมบนเดสค์ท็อปเท่าไหร่นัก แต่สำหรับภาษาไพทอนที่จะไปใช้ได้แบบเนทีฟ (native) บนโทรศัพท์มือถือแอนดรอยด์และไอโอเอส ยอมรับว่าตื่นเต้นพอสมควร

ความนิยมภาษาไพทอนในปัจจุบันเป็นที่นิยมมาก เป็นที่ได้รับการพิสูจน์แล้วว่าเรียนรู้ง่าย ทรงพลัง โดยเฉพาะในด้าน data science และ machine learning ตลอดจนปัญญาประดิษฐ์ (AI) เนื่องจากมีไลบรารีมากมายให้เลือกใช้ในด้านนี้เช่น numpy, pandas และ matplotlib และยังรันบนเดสค์ท๊อปเท่านั้น แต่สำหรับโลกของโทรศัพท์มือถือกลับกลายเป็นอะไรที่แฟนของไพทอน ค่อนข้างขัดเคืองเพราะไม่มีพื้นที่ให้ไพทอนยืนเด่นเป็นสง่า ถ้าจะพัฒนาโปรแกรมบนแอนดรอยด์ก็เลือกภาษาจาวาหรือตอนหลังกลายมาเป็น kotlin แล้ว ส่วนบนไอโอเอสก็ต้อง swift
ทำไมเป็นอย่างนั้น ต้องย้อนเวลากลับไปปี 2006 ซึ่งเป็นปีเริ่มของ web programming และการเติบโตของเทคโนโลยีบนโทรศัพท์มือถือ ช่วงนั้นไพทอนมีปัญหากับการถ่ายเปลี่ยนจากไพทอน รุ่น 2 มาเป็นไพทอนรุ่น 3 ในปี 2006 พอดี ในแบบที่เชื่องช้าและมีปัญหามากเพราะโปรแกรมและไลบรารีที่พัฒนาด้วยไพทอน 2 มีมากมาย การเปลี่ยนถ่ายที่เป็นฝันร้ายจากไพทอน 2 มาไพทอน 3 ใช้เวลาร่วมๆสิบปี ช่วงนี้จาวาสคริปต์ได้แจ้งเกิดภาษาที่นำพัฒนาโปรแกรมสำหรับเว็บ และส่วนจาวาได้กลายเป็นภาษามาตรฐานสำหรับพัฒนาโปรแกรมสำหรับแอนดรอยด์ในที่สุด
ถึงแม้จะมีโครงการอื่นๆที่ใช้ไพทอนสำหรับพัฒนาโปรแกรมบนมือถือเช่นโครงการ kivy แต่จนแล้วจนรอดผมไม่มีโอกาสได้ใช้สักที ตัว kivy เป็นแพล็ตฟอร์มสำหรับไพทอน ที่มี GUI เป็นของตัวเองครอบทับของเดิมอีกที ทำให้โปรแกรมที่พัฒนาบนแพล็ตฟอร์มต่างๆด้วย kivy ในส่วนระบบการติดต่อกับผู้ใช้งานอาจจะดูไม่กลมกลืนกับแพล็ตฟอร์มเดิมมากนัก แต่ข้อดีคือความเร็วในการเรนเดอร์

เอาละครับถึงแม้ไพทอนเนทีฟแบบ beewae จะมาช้าสิบกว่าปี ก็ยังดีกว่าไม่มา โครงการ beeware เป็นโครงการเปิดซอร์ส (open source) นำโดยดร.รัสเซลล์ คีธ เมกี ริเริ่มโครงการในปี 2013 จนปัจจุบัน โครงการเป็นรูปเป็นร่างแต่ยังไม่ถึงจุดมุ่งหมาย ตอนนี้ไประดมทุนผ่าน PSF (Python Software Foundation) ทำให้แนวโน้มโครงการน่าจะไปด้วยดี
จุดมุ่งหมาย (The goal)
- เป็นเครื่องมือที่สามารถทำให้โปรแกรมที่เขียนด้วยไพทอนสามารถไปรันได้ทุกอุปกรณ์
- เป็นเครื่องมือที่สามารถจัดทำแพ็คเกจของโปรแกรมที่พัฒนาด้วยไพทอนและสามารถเอาไปติดตั้งได้ทุกอุปกรณ์
- ไลบรารีที่สามารถเข้าถึงความสามารถของอุปกรณ์ต่างๆได้
- เป็นเครื่องมือที่สามารถช่วยในการพัฒนาโปรแกรม สามารถดีบักโปรแกรมรวมทั้งวิเคราะห์

สำหรับข้อ 3 นั้น พูดถึงไลบรารีที่ต้องการของโปรแกรมที่พัฒนาด้วยไพทอน จะต้องเป็นไลบรารีที่ผ่านการคอมไพล์สำหรับอุปกรณ์นั้นโดยเฉพาะ ยกตัวอย่างถ้าเป็นมือถือแอนดรอยด์หรือไอโอเอส ยกตัวอย่างเช่น PROJ. ที่โค้ดพัฒนาด้วย C++ จะต้องคอมไพล์เป็นไลบรารีสำหรับซีพียูในตระกูล ARM ถ้าเป็น ARM 64 บิตเรียกว่า ARM64, AArch64 หรือ ARMv8 โครงการเรียกร้องให้การติดตั้งไลบรารีผ่าน pip ให้สามารถเลือก platform ปลายทางได้ ตัวอย่างเช่น pip install pyproj-aarch64 เพื่อให้ทางโครงการ beeware ได้หยิบไฟล์ลิ๊งค์ไลบรารีมาใช้ได้ง่ายๆในการทำ package
จากชุมชนนักพัฒนาจากความหลากหลายสู่ความแข็งแกร่ง

ตอนนี้มีชุมชนมาช่วยพัฒนา beeware กันพอสมควร นอกจากมาช่วยพัฒนา beeware ยังมีงานพวกแปลเอกสารหรือเขียนเอกสารไปด้วยทำนองนี้ เอาละครับใครมีกำลังหรือสนใจก็ไปเข้าร่วมได้ ส่วนผมควักตังค์ช่วยเดือนละสิบยูเอสดอลลาร์ 🙂 ถ้าอนาคตผมทำแอพออกมาขาย ถ้ามีตังค์คงมาช่วยบริจากต่อเดือนมากกว่านี้แน่ๆ
โปรแกรมแรกสำหรับทดสอบ
ผมลองใช้เครื่องมือพัฒนาของ beeware ลองเขียนโปรแกรมแปลงพิกัดจาก UTM เป็น ค่าพิกัดภูมิศาสตร์ ตอนแรกชะงักชะงันไปพอสมควรเนื่องจากผมใช้ไลบรารี PROJ. หรือ pyproj แต่ไลบรารีพัฒนาด้วย C++ ลิ๊งค์ไลบรารีตอนนี้ใช้ได้เฉพาะสถาปัตยกรรม x64 มีคนคอมไพล์ไปใช้ใน raspberry pi ซึ่งเป็นสถาปัตยกรรมเดียวกันกับโทรศัพท์มือถือแอนดรอยด์หรือไอโฟน แต่ผมยังไม่สามารถคอนฟิกให้ beeware เอามาใช้ได้
ผมเปลี่ยนใจไปใช้ pygeodesy ตอนแรกก็ไม่คิดว่า pygeodesy จะดีและเก่ง แค่ลองเล่น พอลองไปสักพักก็รู้ได้เลยเป็นไลบรารีที่ไม่ธรรมดาเลย และที่สำคัญคือไลบรารีเขียนด้วยไพทอนเพียวๆ ตัว beeware สามารถคอมไพล์มาใช้ได้เลย ลองดูโปรแกรมตัวแรกของผมบนแอนดรอยด์ ใช้ไลบราร pygeodesy เป็นภาพที่จับจากอีมูเลเตอร์ก่อน จากนั้นลองไปรันในโทรศัพท์ก็ยังโอเคอยู่ครับ

โครงการถัดไป “Thai Easy Geo”
ผมตั้งใจว่าจะพัฒนาโปรแกรมหลักๆสามารถแปลงพิกัดจาก WGS84 ไปกลับกับระบบพิกัด Indian 1975 และยังสามารถแปลงพิกัดไปยังระบบพิกัดรถไฟความเร็วสูง ไทย-จีนได้ด้วย นอกจากนั้นสามารถคำนวณความสูงจีออยด์ด้วยโมเดล TGM2017 ดูโปรแกรมต้นแบบจากรูปด้านล่างได้ จากภาพถ่ายจริงๆ เครดิตของ Thai Easy Geo ยกให้ ผู้พัฒนาไลบรารี pygeodesy

คงต้องใช้เวลาอีกสักพักใหญ่กว่าโครงการ beeware เป็นรูปเป็นร่าง และเช่นเดียวสำหรับแอพ “Thai Easy Geo” ก็รอรุ่นที่สมบูรณ์เช่นเดียวกัน สำหรับผมในตอนนี้ยกนิ้วให้โครงการ beeware เพราะใช้งานง่ายมาก ติดตามกันตอนต่อไปครับ
thai easy geo ตั้งใจให้ผู้ใช้เพิ่ม Datum เองได้ไหมครับ
ตามชื่อครับ ใช้สำหรับประเทศไทยไม่จำเป็นต้องเพิ่มครับ