เปลี่ยนชื่อแอพ
ในที่สุดผมก็เข็นครกดันเอาแอพรุ่นแรกสำหรับแอนดรอยด์ออกมาได้สำเร็จ “Ezy Geo Pro” เมื่อวันที่ 9 มกราคม 2023 ที่ผ่านมาก ตัวแอพผ่านการเปลี่ยนชื่อมาแล้วหลายครั้งจาก “Thai Easy Geo” เป็น “A Ezy Geo” สุดท้ายเป็น “Ezy Geo Pro” ครั้งแรกตั้งใจจะทำแอพใช้กันเองในประเทศไทยของเรา แต่ก็มีแฟนเพจเป็นอาจารย์สอนวิชาสำรวจที่สปป.ลาว ที่อยากใช้แอพด้วย ผมก็เลยคิดว่าไหนๆจะทำใช้ที่สปป.ลาวด้วย ก็ทำให้มันใช้ได้ทั้งอาเซียนเลยจะดีกว่า ก็เลยกลายเป็นที่มาของการเปลี่ยนชื่อแอพ
เปลี่ยนภาษาและเครื่องมือพัฒนา
นอกจากเปลี่ยนชื่อแอพแล้ว ยังมีการเปลี่ยนเครื่องมือการพัฒนา ตอนแรกโครงการนี้เริ่มต้นจาก Beeware ที่ใช้ไพทอนเป็นภาษาแต่พบว่าโครงการเดินหน้าได้ล่าช้ามาก เพราะติดขัดเรื่องเงินทุน ได้เปลี่ยนมาใช้ Kivy ที่พัฒนามานานแล้ว ใช้ภาษาไพทอนเช่นเดียวกัน แต่ฟีเจอร์ก็ติดหลายอย่างที่ไปไม่สุด เพราะโครงการติดขัดเรื่องเงินทุนเช่นเดียวกัน เปลี่ยนครั้งสุดท้ายคือเปลี่ยนมาใช้ภาษาดาร์ท (Dart) และใช้เครื่องมือฟลัตเตอร์ (Flutter) ผลสะเทือนของการเปลี่ยนภาษาและเครื่องมือก็คือเวลาในการเรียนรู้ที่ค่อนข้างใช้เวลามากพอสมควร โดยเฉพาะการเปลี่ยนครั้งหลังค่อนข้างจะหฤโหดเพราะว่าเป็นภาษาใหม่ทำให้ learning curve สำหรับผมค่อนข้างชันมาก แต่เนื่องจากดาร์ทและฟลัตเตอร์ได้รับความนิยมพอสมควร ก็เลยสามารถหา tutorial ได้ง่าย มีคนถามตอบใน stackoverflow.com มากหนาตา
ฟีเจอร์ของแอพ
สำหรับ “Ezy Geo Pro” คือแอพสำหรับงาน Geodetic engineer หรือ Geodesy ธงหลักของโปรแกรมคือการแปลงค่าพิกัดข้ามระบบพิกัดต่างๆที่ใช้งานในย่านอาเซียน แต่ขณะนี้ใช้ได้เฉพาะประเทศไทยและสปป.ลาว และกำลังจะออกรุ่นอัพเดทในเดือนกพ. 2023 นี้ สนับสนุนระบบพิกัดของฟิลิปปินส์ และฟีเจอร์รองลงมาคือใช้สำหรับคำนวณหาสเกลแฟคเตอร์และความสูงยีออยด์ โดยจะแสดงสถานที่ของหมุดบน Google maps ตลอดทุกการคำนวณ มีเครื่องมือที่เกี่ยวกับแผนที่บน Google maps เช่นแสดงค่าพิกัดปัจจุบันตาม GPS ของโทรศัพท์มือถือ สามารถเลือกแสดงระบบพิกัดอื่นๆได้แบบ realtime นอกจากนั้นมีของแถมเช่นเครื่องมือวัดระยะทางและพื้นที่ เครื่องมือแปลงหน่วยต่างๆ (ได้รับแรงบันดาลใจจาก Converter Now)
หน้าหลัก (Main menu)
แปลงพิกัด (Transform Coordinate)
แกนหลักไลบรารี
ใช้ไลบรารี PROJ ที่ได้นำโค้ด C++/C มาแยกคอมไพล์และบิวท์เป็นไบนารีใช้บนแอนดรอยด์และบนไอโอเอส การคำนวณต่างๆผ่านทาง API ของ PROJ เป็นหลัก ยุ่งยากกว่าใช้ pyproj ในภาษาไพทอนมากๆ เนื่องจากต้องเกี่ยวข้องกับ pointer เครื่องมือภาษาดาร์ทจัด FFI มาให้ทำให้ชีวิตง่ายขึ้นมานิดแต่ไม่ได้เรียบง่ายเหมือนที่คิด การคอมไพล์และบิวท์ PROJ ในแอนดรอยด์ทำได้ไม่ยาก แต่มาติดขัดตอนไปคอมไพล์และบิวท์ใช้บน iOS ดั่งประหนึ่งว่าตกหลุมขวากห้อเลือด เสียเวลาในการ config ให้ใช้งานได้ประมาณสองเดือน
มองอีกมุมหนึ่งแอพ Ezy Geo Pro คือภาคย่อหรือรุ่นย่อของ Surveyor Pocket Tools จาก Desktop PC เหมือนกันบางส่วนและมีฟีเจอร์อื่นที่ต่างกันออกไปหลายอย่าง
ผู้ร่วมพัฒนาแอพไม่มีครับ ตอนนี้มีคนเดียวครับคือผมเอง ผมว่าถ้าใจไม่รักจริงขอให้หลีกเลี่ยงเพราะมีหลายอย่างนอกจากโปรแกรมมิ่ง เช่นเรื่อง artwork เรื่อง marketing เรื่อง support & help เช่นการเขียนคู่มือวิธีการใช้ต่างๆ ที่ต้องอาศัยคนถนัดแต่ละด้านมาช่วยกัน ดังนั้นการพัฒนาแอพในรูปบริษัทหรือหลายๆคนมาช่วยกันน่าจะดีกว่า
นำแอพขึ้น Google play store
กระบวนการนำแอพขึ้น Google play store นี้ไม่คาดฝันมาก่อน เนื่องจากไม่ได้ศึกษาหรือถามผู้รู้ในเบื้องต้น การลงทะเบียนและกรอกข้อมูลเข้าค่อนข้างจุกจิก บางทีก็เข้าใจหรือไม่เข้าใจ ต้องไปหาอ่านในฟอรั่มต่างๆ แม้กระทั่งการกรอกข้อมูลธนาคารในกรณีผู้ซื้อแอพและกูเกิ้ลแบ่งรายได้มา จะต้องไปตอบคำถามเรื่องภาษีที่ทำให้งุนงง ภาษีในไทยไม่เท่าไหร่ แต่ไพล๋ไปถึงภาษีอเมริกา
ลงทะเบียน Google Admob
การขอนำโฆษณาไปไว้ในแอพก็ต้องไปลงทะเบียนใน Google Admob เงื่อนไขก็จุกจิกแต่น้อยกว่า paly store มาก สิ่งเหล่านี้ถ้าผ่านไปครั้งเดียว และทำแอพตัวที่สองออกมาน่าจะง่ายและไว สิ่งอำพันละน้อยเหล่านี้ทำให้เสียเวลาร่วมๆเดือนกว่าเหมือนกัน สำหรับการลงทะเบียนเข้าเป็นนักพัฒนากูเกิ้ล ครั้งเดียวจ่าย 75 US$ ตลอดชีพ นับมาว่าลุงกูเกิ้ลยังมีความเมตตาปราณี
การทดสอบแอพ
จากนั้นเป็นการส่งแอพขึ้นไปทดสอบกับ Google play store ผมเลือก Closed testing โดยจะมีลงรายชื่ออีเมล์ของเพื่อนๆน้องๆ ให้ช่วยทดสอบไปที่กูเกิ้ล กูเกิ้ลจะใช้เครื่องจริงและอีมูเลเตอร์เพื่อทดสอบแอพเรา และส่งรายงานให้ดูก่อนเป็นเบื้องต้น รายงานแรกอ่านนี่ตกใจ เพราะว่ามีแครชด้วย ไปอ่านดูก็เจอเครื่องรุ่นเก๋ากึ๊กส์ที่กูเกิ้ลนำมาทดสอบคืออีมูเลเตอร์ pixel 2 นอกจากนั้นแอพมีอาการบู๊ตช้า นอกจากนั้นมีติเรื่องไอคอนที่ไม่ชัดเจน หลายอย่างครับ ประมาณสองวันทางกูเกิ้ลแจ้งว่าการรีวิวผ่าน ก็เลยไปตัดการสนับสนุนสถาปัตยกรรม X86 ในตัวแอพออก เพื่อไม่ให้กูเกิ้ลเอาไปทดสอบกับ pixel 2 อีก
ถัดมาเป็นการทดสอบการซื้อขายแอพ ต้องเอาอีเมล์ของผู้ที่จะทดสอบไปลงที่ License Tester ด้วย และอีเมล์ชื่อเดียวกันส่งไปที่ Closed tester ผมเคยพลาดเพราะไม่ได้เอาอีเมล์ของน้องๆไปลงใน License Tester ปรากฎว่าน้องท่านนี้ได้ซื้อแอพผมไปจริงๆ โดนกูเกิ้ลจัดจากบัตรเครดิตไปจริงๆ
เตรียมแอพขึ้น Apple Store
ตอนนี้กำลังจะแอพขึ้นไปแอปเปิ้ลสโตร์ในลำดับถัดไป ไปสมัครเป็นผู้พัฒนาของแอปเปิ้ล เสียค่าพัฒนารายปีๆละ 100 US$ ทำให้คนเบี้ยน้อยหอยน้อยอย่างผมขนหน้าร่วงไปหลายเส้น นับว่าแอปเปิ้ลเขี้ยวและเค็มสมคำร่ำลือจริงๆ ตอนนี้ยังไม่ได้ลงทะเบียนอื่นๆ แต่ก็ทราบล่วงหน้าว่าการกรอกรายละเอียดผ่านสโตร์คงจะจุกจิกไม่น้อยกว่าของกูเกิ้ล ตอนนี้ทำใจเนิ่นๆ สำหรับเครื่องที่จะบิวท์แอพไปใช้บน iOS ก็ต้องเป็นครื่องตระกูลแมคที่ติดตั้งโอเอส “Monterey” เป็นอย่างน้อย (ที่จริงรุ่นเก่าหน่อยก็ได้มีคนทำไฟล์แฮ็คไปแก้ให้ใช้ได้ ทางแอปเปิ้ลก็ไม่ว่าอะไร) ต้องหาเครื่องไอโฟนจริงมาทดสอบการใช้งานด้วย แทนที่จะเป็นเครื่องอีมูเลเตอร์จริงๆ เนื่องจากผมเป็นสาวกแอนดรอยด์ คงได้หายืมเครื่องจากแหล่งอื่นมาทดสอบเป็นที่วุ่นวาย
ตอนนี้ได้เริ่มทดสอบแอพบนเครื่องไอโฟนแล้ว ใช้ไอโฟนเครื่องเก่าของที่บ้านที่ไม่ได้ใช้แล้วเป็นไอโฟน 7 เก๋ากึ๊กส์ ติดตั้ง iOS รุ่น15.7.2 ใช้แมครันโอเอส “Big Sur” ติดตั้ง XCode ได้เต็มที่คือรุ่น 13.2.1 ก่อนหน้านี้ตอนเอาโค้ดฟลัตเตอร์มาทดลองรันก่อนหน้านี้สักสี่เดือนผ่าน XCode และตัว XCode เตือนสารพัดว่าติดนู่นนั่นนี่ แต่พอผมลงทะเบียนเป็น Apple developer เสียเงินมาเรียบร้อย คำเตือนดังกล่าวไม่ปรากฎให้เห็น รันบนไอโฟน 7 ได้สบาย เพียงแต่ว่ามันอืดหน่อย อืม…กุศโลบายแอปเปิ้ลนี่แยบยลจริงๆครับ
ประสิทธิภาพโทรศัพท์มือถือ
สำหรับความเร็วโทรศัพท์มือถือและประสิทธิภาพในปัจจุบัน ผมว่ามันเร็วมากและยังมีแรมที่เผลอๆจะมากกว่า PC ที่เราใช้เสียอีก ตลาดเกมส์ก็มีส่วนเร่งพัฒนาในเรื่องนี้ ดังนั้นมันมีประสิทธิภาพที่จะเอามาคำนวณอะไรต่างๆทางวิทยาศาสตร์ได้เหลือเฟือ ข้อจำกัดคือเรื่องการป้อนข้อมูลที่ทำลำบาก การจัดเก็บไฟล์ข้อมูลในเครื่องที่ไม่สะดวกนัก แต่ปัจจุบันสามารถนำไปจัดเก็บในคลาวด์ได้ ซึ่งมีมากมายให้เราใช้อย่างเป็นธรรมชาติตัวอย่างของผมใช้ของกูเกิ้ล ไมโครซอฟท์ ทีมีพื้นที่ให้ใช้งานอย่างจุใจ เนื่องจากผมเป็นคนรุ่นเก่า จึงไม่ค่อยเอาข้อมูลที่ฝากไว้กับคลาวด์มากนัก นี่เป็นข้อเสียส่วนตัวของผมเองอีกอย่างหนึ่ง
ความจริงผมก็มองข้ามเรื่องโทรศัพท์มือถือมาตลอด ในแง่ที่จะเขียนแอพขึ้นไปใช้งานในด้าน engineering ผมมองว่ายังไงก็ไม่มีอะไรมาทดแทน Desktop PC หรือโน๊ตบุ๊ค สุดท้ายตอนหลังต้องเปลี่ยนใจเพราะยูเซอร์นิยมใช้โทรศัพท์มือถือติดตัวตลอด มันเป็นอย่างนี้สำหรับคนทั้งโลก สมัยแต่ก่อนวิศวกร อย่างน้อยๆต้องมีโน๊ตบุ๊คสักเครื่องหนึ่ง บางคนใช้งานได้แอดวานซ์มาก บางคนเอามาประดับบารมี สมัยนี้ คนที่มีโน๊ตบุ๊คส่วนตัวมีน้อยกว่าสมัยก่อนๆมาก บางคนทำงานโดยไม่มีโน๊ตบุ๊คก็สามารถทำงานหน้างานได้ พวกเขาหาความรู้เพิ่มเติม อ่านบทความ ท่องโซเชียล เล่นเกมส์ ล้วนแล้วแต่ใช้โทรศัพท์มือถือ
โปรแกรมมิ่งยุคเก่าและยุคใหม่
บางครั้งก็อยากจะเขียนแอพสำหรับโทรศัพท์มือถือ 15 กว่าปีก่อนหน้านี้ มีบางช่วงไปศึกษาจาวาด้วยตัวเอง แต่ก็หมดแรงก่อนเพราะ learning curve ชันพอได้ และอีกอย่างคือขาดแรงจูงใจ สมัยนั้นต้องพึ่งหนังสืออย่างเดียว ทำให้เสียโอกาสพอสมควร หลังๆมานี่ไม่กี่ปี พอจะเขียนแอพด้วยไพทอนที่ถนัดก็กลับมาติดกับเครื่องมือที่จะใช้ กลายเป็นว่าไพทอนยังไม่เก่งสำหรับโทรศัพท์มือถือ (แบบทำงาน front end) จนถึงปัจจุบันนี้
พอมาเปลี่ยนศึกษาดาร์ทและฟลัตเตอร์ ศึกษาไปเขียนพัฒนาแอพไปก็ดูจะเข้าที ได้ศึกษาเรื่อง async await future ประมาณนี้ ตอนแรกสงสัยว่าโค้ดของเรา บางอย่างอยู่หลังทำไมรันก่อน เหมือนนักกีฬาวิ่ง 400 เมตร บางคนวิ่งอยู่ข้างหลังเราดีๆ แต่วิ่งลัดสนามแซงเราไปอย่างนั้น โดยไม่ผิดกฎมาทราบทีหลังว่าอ๋อ อยากให้รอไม่แซงเราก็จัด async await ให้ประมวลผลให้เสร็จก่อน รวมถึง future ที่ให้ประมวลผลแล้วส่งข้อมูลให้เราในอนาคต
หมายเหตุแบบจำลองความสูง (Earth Gravitation Model : EGM)
ผมได้รับแบบจำลองความสูงยีออยด์จากสปป.ลาว (EGM Laos) แต่พบว่าพื้นที่ที่ใช้งานได้ยังไม่ครอบคลุมพื้นที่สปป.ลาวทั้งประเทศ ข้อมูลขาดด้านตะวันออกเฉียงใต้ ทั่วๆไปสามารถใช้ EGM2008 มาทดแทนได้ แต่เนื่องจาก EGM2008 มีขนาดใหญ่ ผมเลยไม่เอามาลงเพราะจะทำให้แอพมีขนาดใหญ่มาก หรือจะใช้ TGM2017 แทนก็ได้เพราะครอบคลุมไปถึง
ผมชอบระบบพิกัดของฟิลิปปินส์ที่ลงทะเบียนไว้ใน EPSG ทำให้ค้นหาง่าย ปัจจุบันมีแบบจำลองความสูงยีออยด์ (Philippines Geoid Model 2018 : PGM2018) ที่เคลม accuracy ไว้ที่ 1.2 ซม. ผมไม่มีโอกาสได้ลองใช้จึงไม่ทราบว่าดีขนาดนั้นไหม ได้แต่ฝากพรรคพวกเพื่อนฝูงที่ไปก่อสร้างรถไฟความเร็วสูงให้ช่วยทดสอบเมื่อมีการรังวัด GNSS สำหรับ Ezy Geo Pro รุ่นอัพเดทครั้งหน้าจะมีระบบพิกัด PRS92 ของฟิลิปปินส์ให้คนฟิลิปปินส์หรือคนไทยที่ไปทำงานที่นั่นได้ใช้งานด้วย
ฝากอุดหนุนแอพ
ผมได้เล่าเกร็ดเล็กเกร็ดน้อยจากการพัฒนาแอพ Ezy Geo Pro ที่ผ่านมาร่วมๆปีจนกระทั่งสามารถปล่อยแอพเข้ากูเกิ้ลเพลย์สโตร์ และกำลังจะนำแอพเข้าแอปเปิ้ลสโตร์ในเร็วๆนี้ การประมวลผลของแอพใช้เครื่องของยูเซอร์ล้วนๆ ไม่มีการประมวลผ่านเซิฟเวอร์หรือคลาวด์ใดๆทั้งสิ้น ก็ขอฝากแอพไว้ให้ทุกท่านได้ลองใช้ ถ้าไม่อัพเกรดเป็นพรีเมียมก็ทนดูโฆษณาไปก่อน ถ้าอยากอุดหนุนขอให้อัพเกรดเป็นพรีเมียม ซึ่งมีสองแพ็คเกจคือครึ่งปี (หกเดือน) และหนึ่งปีเต็ม
เครดิต: ขอขอบคุณอ.กอนชะนะ ยมเลืองสา จากสปป.ลาว ที่เอื้อเฟื้อด้านการแปลภาษาให้
แอพยังมีอะไรให้อัพเดทในอนาคตอีกพอสมควรเช่นสามารถจัดเก็บจุดที่คำนวณเข้าเก็บในสื่อบันทึกได้ สามารถ copy paste ข้อมูลต่างๆได้ สามารถ export จุด พื้นที่ออกเป็น excel, kml หรือ shapefile ได้เพิ่มระบบพิกัดของแต่ละประเทศในอาเซียน สำหรับผู้ใช้ไอโอเอสของแอปเปิ้ล แอพจะออกในเร็วๆนี้ โปรดติดตามครับ
ขอบคุณอาจารย์มากๆครับ
ขอบคุณมากๆครับที่ติดตาม ลองช่วยทดสอบแอพให้ด้วยครับ
ขอบคุณมากครับ สำหรับ App ดีๆ มีประโยชน์มากสำหรับอาเซียน ครับ
ขอบคุณมากครับ
ขอบคุนคับ