เมื่อ Web programmer ต้องเขียนแอพมือถือ : เลือก framework

เมื่อหลายเดือนก่อน ผมได้รับมอบหมายโปรเจคที่ต้องพัฒนาแอพพลิเคชันมือถือ ซึ่งผมเองไม่เคยมีประสบการณ์ในการเขียนแอพพลิเคชันมือถือเลย และ Requirement ที่ได้คือ ต้องพัฒนาทั้งแอพพลิเคชันบน Android และ iOS เลยต้องมองหา framework ที่สามารถเขียน cross-platform mobile apps ได้ คือเขียนแค่ครั้งเดียว ใช้ได้ทั้งสองแพลตฟอร์ม

เริ่มมองหา framework

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

  1. Ionic
  2. React Native
  3. NativeScript

ลองใช้ Ionic framework

Javascript framework ที่ผมถนัดที่สุดนั้นคือ Angular ทำให้ Ionic มาแรงแซงโค้งตัวเลือกอื่นๆ เพราะ Ionic นั้นใช้ Angular ในการพัฒนา

แต่ทว่าหลังจากที่ได้ลองใช้แล้ว animation ของ Ionic ช่างไม่ลื่นไหลเสียเหลือเกิน เพราะแอพที่ได้จากการพัฒนาด้วย Ionic นั้นจะเป็น Hybrid application เป็น แอพที่มีทั้ง Native UI ผสมกับ WebView ทำให้ความลื่นไหลของมันสู้ Native application แท้ๆไม่ได้

มองหาตัวเลือกอื่น

จากที่ผิดหวังมาจาก Ionic ทำให้ผมมีเงื่อนไขเพิ่มเติม คือ แอพที่ได้จากการพัฒนาจะต้องเป็น Native application ซึ่งก็ตรงกับสองตัวเลือกที่เหลือ นั่นคือ React Native กับ NativeScript

เมื่อลองเปรียบเทียบความแข็งแกร่งของ community กันแล้ว ผมให้ React Native เป็นต่อ ประกอบกับ ผมนั้นเคยเขียน React มาบ้าง และ NativeScript เองนั้นต้องพัฒนาด้วย Angular 2 ซึ่งผมมองว่าทั้ง NativeScript และ Angular 2 ต่างยังเป็นของใหม่ทั้งคู่ เป็นเหตุผลที่ทำให้ผมเลือก React Native

React Native

React Native เป็น framework สำหรับใช้พัฒนา cross-platform mobile apps สามารถ build ออกมาเป็น Native application โดยที่เขียนด้วยภาษา Javascript ซึ่ง React Native ใช้ React เป็น JS library ในการพัฒนาส่วนของ UI

ทั้ง React Native และ React ถูกพัฒนาขึ้นโดยบริษัท Facebook และถูกใช้พัฒนาแอพพลิเคชันมือถือของบริษัทต่างๆ เช่น Airbnb, Instagram, Walmart

สำหรับ React Native นั้นผู้ใช้ไม่จำเป็นต้องเขียน Native Code สามารถใช้ Library ที่ตัว React Native เตรียมไว้ให้เรียบร้อยแล้วได้เลย แต่ถ้าหากแอพพลิเคชันมีความซับซ้อนมากขึ้น React Native ก็อนุญาตให้ผู้พัฒนาเขียนส่วนต่อเติมระหว่าง React Native กับตัว Android และ iOS เองได้ด้วยเช่นกัน

หลังจากที่ได้ลอง

หลังจากที่ได้ลองใช้ React Native พัฒนาแอพแล้ว พบว่ายังมีปัญหาอยู่พอสมควร ผู้พัฒนาต้องคอยตามอัพเดทเวอร์ชั่นอยู่เสมอๆเพื่ออัพเดทการแก้ไขบั๊กต่างๆ รวมถึง component ต่างๆที่ยังไม่นิ่ง ยกตัวอย่าง Component ที่จัดการ Navigator ของตัว official เองที่ตอนนี้มีมากมายหลายตัว เช่น NavigatorIOS, Navigator, NavigationExperimental

แต่โดยรวมแล้ว ผมรู้สึกประทับใจมากกับการเขียน cross-platform mobile apps ครั้งแรก ผมสามารถเขียน Native application ได้โดยที่ผมไม่ต้องศึกษา Java, Objective-C หรือ Swift สามารถแก้ไขโค๊ดแค่ที่เดียว มีผลทั้ง Android และ iOS

ตัวเลือกอื่นๆ

จริงๆแล้ว ตัวเลือกอื่นๆสำหรับใช้ในการพัฒนาแอพพลิเคชันมือถือมีอีกมากมาย ไม่ว่าจะเป็น Cordova, Xamarin, PhoneGap รวมทั้งตัวที่กล่าวไปตั้งแต่ข้างต้น Ionic, React Native, และ NativeScript ขึ้นอยู่กับความถนัดของผู้พัฒนา และ ความเหมาะสมของแต่ละโปรเจคที่จะพัฒนาด้วย บางโปรเจคอาจจะพัฒนาเป็น Mobile Web application หรือ Hybrid application ก็เพียงพอแล้ว หรือบางโปรเจคอาจจะต้องการ ความเป็น Native application ก็ต้องเลือกใช้ React Native หรือไม่ก็ NativeScript เป็นต้น

บทสรุป

React Native ทำให้การเขียน cross-platform mobile apps ไม่ใช่เรื่องยาก เหมาะสำหรับแอพพลิเคชันที่มีความซับซ้อนน้อยถึงปานกลาง ช่วยให้พัฒนาแอพพลิเคชันได้รวดเร็ว เขียนเพียงครั้งเดียวได้ถึงสองแพลตฟอร์ม

และด้วยผู้พัฒนาเป็น Facebook รวมถึงบริษัทต่างๆที่นำ React Native ไปใช้พัฒนาแอพมือถือมีไม่น้อยเลยทีเดียว ทำให้อนาคตของ React Native สดใสแน่นอนครับ

Like what you read? Give hawkup a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.