มีคำถามที่น่าสนใจในกลุ่ม Thailand Android Developer ว่า
ในการพัฒนา App ระหว่าง Native กับ Hybrid app ควรเลือกใช้อะไรดี ?
รวมทั้งในแง่ความต้องการของตลาดงาน
รวมทั้งในแง่ความนิยมในปัจจุบันและอนาคต

โดยใน comment มีการตอบที่น่าสนใจเยอะเลย

ตัวอย่างเช่น

  • ดูเรื่องลักษณะของงาน และ feature ก่อนว่าต้องการอะไร
  • ต้องศึกษาทั้งสองอย่างให้เข้าใจก่อน เพื่อจะได้เลือกของที่เหมาะกับงาน
  • ดูเรื่อง performance ของระบบ
  • ถ้ามองเรื่องตลาดแรงงาน แน่นอนว่าเป็น Native และพวก Hybrid ก็แรงขึ้นมาเช่น React Native เป็นต้น
  • เวลาในการเรียนรู้ (Learning curve)

แต่ก่อนอื่นเรามาทำความรู้จักกับ Native และ Hybrid app กันก่อน

มิเช่นนั้นอาจจะเข้าใจผิดและเลือกผิดก็เป็นไปได้

Native app
พัฒนาด้วยภาษาโปรแกรมที่ถูกกำหนดมาใจแต่ละ platform เลย เช่น

  • Android app พัฒนาด้วย Java, Kotlin และ C++ เป็นต้น
  • iOS app พัฒนาด้วย Objective-C และ Swift เป็นต้น

โดยปกติแล้วการพัฒนาด้วย Native นั้นจะมีประสิทธิภาพการทำงาน
ทั้งการ render และ animation ที่ดีกว่า Hybrid (ถ้าเขียนดีนะ)

Hybrid app
เป็น app ที่จะมี Web View หรือส่วนการแสดงผล web
ซึ่งจะอยู่ใน Native app
ทำให้สามารถเราสามารถ run web ใน app ของเราได้
รวมทั้งยังสามารถใช้งานความสามารถต่าง ๆ ของ device ได้
ยกตัวอย่างเช่น กล้องถ่ายรูป และ GPS เป็นต้น

โดยที่ Hybrid app จะสร้างส่วนการติดต่อสื่อสาร
ระหว่าง Web View กับ Native ขึ้น
แน่นอนว่าไม่ได้อยู่ในมาตรฐานของ iOS และ Android
แต่เป็น 3-party tool/framework ที่มาครอบอีกชั้นหนึ่ง
ยกตัวอย่างเช่น Codova, Ionic, NativeScript, Xamarine, PhoneGap และ React Native เป็นต้น

เมื่อทำการ build Hybrid app นั้น
จะทำการ compile code
และแปลง code จะ web มาเป็น Native app ให้
ซึ่งมีขั้นตอนที่เยอะพอสมควรเลยนะ
แต่มันทำให้เราเขียน code ครั้งเดียว
แล้วได้ App ที่ทำงานได้ทั้ง Android และ iOS (ในแง่แนวคิดนะ !!)

มาลองเปรียบเทียบกันหน่อย

Native app

  • พัฒนาด้วยภาษาตาม platform นั้น ๆ
  • แยก code ตามแต่ละ platform
  • มีประสิทธิภาพการทำงานที่ดี
  • ใช้จำนวนคน และ เวลาในการพัฒนาที่สูง
  • รอบการพัฒนาจะช้า สวนทางกับค่าใช้จ่าย

Hybrid app

  • พัฒนาด้วย HTML, CSS และ JavaScript
  • Write once, Run anywhere !!
  • ใช้เวลาและค่าใช้จ่ายในการพัฒนาน้อยลง
  • รอบการพัฒนาเร็วขึ้น
  • ประสิทธิภาพการทำงานจะต่ำกว่า Native

ส่วน Hybrid app นั้นมี tool และ framework มากมาย
ดังนั้นก่อนจะเลือกใช้อะไรก็ต้องศึกษา และ ลองใช้มันก่อน
ว่ามีข้อดีข้อเสีย
ว่ามีข้อแตกต่างกันอย่างไร
ลงมือทำซะตอนนี้เลย

การพูดคุยหรือถกเถียงเรื่องของ Hybrid และ Native app

มักจะคุยเรื่องต่าง ๆ ดังนี้

  • Speed/Time to Market
  • One source code
  • Cross-platform compatibility
  • ง่ายต่อการ update
  • เรื่องของงบประมาณ
  • เรื่องของคนหรือทีมพัฒนา

เมื่อคุยสิ่งต่าง ๆ เหล่านี้ก็มักจะเอนเอียงไปยัง Hybrid app เสมอ
แต่เมื่อต้องดูและรักษาระบบไปนาน ๆ
จะพบว่าต้องเสียเวลามากมายไปกับ
การแก้ไขเรื่องของการทำงานและใช้งาน app
เช่น User Experience และ User Interface ให้ตรงตามความต้องการของผู้ใช้งาน
รวมทั้งการปรับปรุงเรื่องของ performance ต่าง ๆ

ส่วนทาง Native app นั้นก็มีข้อได้เปรียบ
เรื่องของการเข้าถึงการทำงานของ device ต่าง ๆ ได้ง่าย
เช่น กล้องถ่ายรูป, address book และ GPS เป็นต้น
รวมทั้งเรื่องของความปลอดภัยต่าง ๆ อีกด้วย
แต่ก็แลกมาด้วยค่าใช้จ่ายที่สูงกว่าในช่วงแรก !!

ดังนั้นก่อนจะเลือกได้นั้น

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

ถึงอย่างไรก็ตามทั้ง Native และ Hybrid ต่างก็มีข้อดีและข้อเสียด้วยกัน
ลองด้วยตัวเองก่อนนะ

ขอให้สนุกกับการ coding ครับ

ปิดท้ายด้วย Decision Tree ของการตัดสินใจที่น่าสนใจ

Reference Websties
http://blog.techmagic.co/native-vs-hybrid-apps/
https://www.facebook.com/groups/thaidroiddev/permalink/1472477739499373/
https://medium.com/@ankushaggarwal/ionic-vs-react-native-3eb62f8943f8
https://developer.salesforce.com/page/Native,_HTML5,_or_Hybrid:_Understanding_Your_Mobile_Application_Development_Options