Cross Platform vs Native App
ถ้าจะสร้างแอพที่มีเพียงแค่การแสดงข้อมูลที่ดึงมาจาก network การพัฒนาแอพแบบ cross-platform ก็อาจจะเป็นตัวเลือกที่ดี อย่างไรก็ตาม ถ้าการใช้งานการประมวลผลที่หนักหรือต้องการใช้งาน low-level API เช่น bluetooth อาจจะต้องหันมาใช้การพัฒนาแอพแบบ native
ค่าใช้จ่าย
การพัฒนาแอพ native app จะทำให้ได้ประสิทธิภาพสูง แต่ก็ต้องใช้ค่าใช้จ่ายที่สูงในการพัฒนา แต่ถ้ามีข้อจำกัดในเรื่องของงบหรือค่าใช้จ่ายในการพัฒนา การพัฒนาแอพแบบ cross-platform ก็จะตอบโจทย์ที่สุด เราอาจจะประหยัดค่าใช้จ่ายได้ถึง 30ในช่วงหลายปีที่ผ่านมานั้น การพัฒนาแอพมือถือนั้น มีการพัฒนามาเรื่อยๆ จนถึงปัจจุบัน โดยอดีตนั้น การพัฒนาแอพมือถือ ก็จะมีการพัฒนาที่อิงโดยตรงจากอุปกรณ์ที่ใช้งาน อย่างที่เรารู้จักกันสอง แพลตฟอร์มใหญ่ๆ ก็คือ iOS และ Android ดังนั้นการพัฒนาจึงจำเป็นจะต้องพัฒนาโดยใช้ภาษา หรือ programming language หลัก ของสองแพลตฟอร์มนี้ หรือที่เราเรียกกันว่า native app แต่ในปัจจุบันนั้น ก็ได้มีการพัฒนาจนถึงจุดที่มีการพัฒนา framework ที่ช่วยให้สามารถพัฒนาครั้งเดียว ภาษาเดียว แต่สามารถได้ผลลัพธ์เป็น แอพของทั้งสองแพลตฟอร์ม หรือที่เรียกกันว่า cross-platform จึงส่งผลให้มีการพูดคุยกันอย่างยาวนานว่าแล้วการพัฒนาแบบไหนล่ะ ที่ดีกว่ากัน
Native app development คืออะไร
การสร้างแอพแบบ native app บนมือถือเป็นการพัฒนาแอพสำหรับแพลตฟอร์มเดียวโดยเฉพาะ แอปนี้จะถูกสร้างขึ้นด้วยภาษาการเขียนโปรแกรมและเครื่องมือเฉพาะสำหรับแพลตฟอร์มเดียว ตัวอย่างเช่น คุณสามารถพัฒนาแอพ Android native app ด้วย Java หรือ Kotlin และเลือกภาษา Swift และ Objective-C สำหรับ iOS native app.
แอพที่เป็น native app เป็นที่รู้จักกันดีในการมอบประสบการณ์การใช้งานที่ดีเยี่ยมให้กับผู้ใช้งาน เนื่องโดยทั่วไปแล้วแอพ native app จะมีประสิทธิภาพที่สูงอยู่แล้ว ดังนั้นประสบการณ์ของผู้ใช้งานก็จะยังได้รับการยกระดับให้ขึ้นไปอีก ซึ่งเห็นได้จากภายที่ได้รับการปรับแต่งให้เหมาะสมกับประสบการณ์ของผู้ใช้งาน (User Experience/UX) จากที่เราได้รู้ว่าประสิทธิภาพที่ได้จากการพัฒนา native app นั้นจะสูงและยอดเยี่ยมก็ตาม แต่ก็ยังเป็นความกังวลใจสำหรับธุรกิจสตาร์ทอัพเช่นกัน ที่จะต้องมานั่งกังวลใจในเรื่องของค่าใช้จ่ายที่สูงในการพัฒนาแอพ native app เนื่องจากจำเป็นอย่างมากที่ จะต้องพัฒนาพร้อมกันให้ได้ทั้งสองแพลตฟอร์ม (iOS & Android)
ข้อดีและข้อเสียของ Native App
ข้อดี
- การทำงานฟังก์ชันที่กว้างและหลากหลาย
เราจะสามารถเข้าถึง API และเครื่องมือที่มีให้โดยแพลตฟอร์มที่เรากำลังพัฒนาอยู่ ซึ่งในทางเทคนิคแล้ว ไม่มีข้อจำกัดในการที่นักพัฒนาจะทำงานหรือเขียนโปรแกรมสำหรับแอพใหม่ๆ
- การสนับสนุนบน Store ของแต่ละแพลตฟอร์ม ที่ดีกว่า
Native app นั้นง่ายมากที่จะทำการเผยแพร่และถูกจัดอยู่ในลำดับที่สูงๆ บน store ของแพลตฟอร์มนั้นๆ เนื่องจากว่าแอพจะสามารถให้ประสิธิภาพและความเร็วที่ดีกว่า
- เพิ่มประสิทธิภาพในเรื่องของความยืดหยุ่นของแอพ
แอพที่สร้างขึ้นบนสภาพแวดล้อมของแพลตฟอร์มนั้นๆ เอง มีแนวโน้มที่จะปรับขนาดของแอพได้มากกว่า ด้วยความยืดหยุ่นในการจัดการทรัพยากรและปริมาณของเครื่องมือมากมายที่มีให้
- ประสิทธิภาพสูงและ User Experience ที่ยอดเยี่ยม
การโต้ตอบกันระหว่างโค้ดที่เขียนและทรัพยากรพื้นฐานในแอพส่งผลให้ประสิทธิภาพสูง นอกจากนี้ โดยทั่วไปแล้ว native app มักจะมีการปรับให้มี User Experience ที่ดีกว่าเพื่อให้ได้ความหมายที่ตรงกันกับแพลตฟอร์มนั้นๆ
ข้อเสีย
- ค่าใช้จ่ายสูง
การสร้าง native app ขึ้นมาจะมีค่าใช้จ่ายที่สูง เมื่อคุณต้องการที่จะปล่อยแอพนั้นขึ้นบน store ของทั้ง iOS และ Android หมายความว่าเราจำเป็นที่จะต้องมีสองทีม เพื่อที่จะจัดการกับการพัฒนาแอพของทั้งสองแพลตฟอร์ม
- ระยะเวลาที่ใช้
การพัฒนา native app นั้น จะใช้เวลาที่นาน เนื่องจากว่าการทำงานให้เสร็จลุล่วงไปไปด้วยดีสำหรับแต่ละแพลตฟอร์มนั้น ไม่สามารถ duplicate หรือทำซ้ำเพื่อออกมาได้ จึงจำเป็นต้องแบ่งทีม เพื่อพัฒนาในเวอร์ชันอื่นแทน
Cross-platform app คืออะไร
การพัฒนาแอพแบบ cross-platform เป็นการชี้ให้เห็นถึงกระกวนการการสร้างแอพที่สามารถทำงานได้บนหลายแพลตฟอร์ม ทำได้โดยใช้เครื่องมือต่างๆ เช่น React Native, Xamarin และ Flutter ซึ่งแอพที่ทำขึ้นมาสามารถปรับใช้ได้ทั้งบน iOS และ Android
ในขณะที่การพัฒนาแอพแบบ cross-platform นั้นประหยัดทั้งค่าใช้จ่ายและเวลา แต่เราก็อาจจะต้องยอมศูนย์เสียในเรื่องของประสิทธิภาพในกระบวนการต่างๆ ไป เป็นเรื่องยากที่เราจะทำการปรับแต่งแอพที่ทำงานอย่างเหมาะสมบนแพลตฟอร์มต่างๆ และแอพจำเป็นที่จะต้องการใช้กระบวนการเพิ่มเติมในการทำให้แอพทำงาน ผลจากกระบวนการที่เพิ่มเติมขึ้นมานั้นก็จะส่งผลทำให้ ประสิทธิภาพของแอพนั้นลดลง
เหล่าธุรกิจสตาร์ทอัพจะชอบการที่จะได้ลดระยะเวลาและค่าใช้จ่ายในการพัฒนาแอพแบบ cross-platform อย่างไรก็ตาม การที่จะปรับแต่งแอปที่นอกเหนือจากที่อนุญาตของแต่ละ framework ก็อาจจะทำได้ยากขึ้น
ข้อดีและข้อเสียของ Cross-platform app
ข้อดี
- ค่าใช้จ่ายน้อย
ในขณะที่ native app ต้องใช้ถึงสองทีมเพื่อการพัฒนา cross-platform ใช้เพียงแค่ทีมเดียว เพื่อพัฒนา จึงทำให้ค่าใช้จ่ายที่ใช้นั้นลดลง
- การพัฒนาที่เร็วขึ้น
เพียงแค่กระบวนการการพัฒนาแอพทำรอบเดียว เพื่อสร้างแอพที่ทำงานได้บนหลายแพลตฟอร์ม
- การใช้ภาษาโปรแกรมเดียว
เนื่องจากการพัฒนาแอพนี้ที่สร้างขึ้นด้วยเครื่องมือในการพัฒนา cross-platform app เพียงอย่างเดียว จึงทำให้เกิดการสร้าง code based เพียงหนึ่งเดียว
ข้อเสีย
- แอพอาจช้าลง
การที่แอพจะต้องใช้กระบวนการเพิ่มเติมขึ้นมาอีกนั้น จะทำให้การ render ของแอพนั้นใช้ระยะเวลาที่มากกว่าของ native app
- ข้อจำกัดในเรื่องของการใช้ฟังก์ชัน
นักพัฒนาจะเข้าถึงการใช้งานฟังก์ชันต่างๆ ของแพลตฟอร์มนั้นยากขึ้น เช่น กล้อง ไมโครโฟน ตำแหน่ง ซึ่งสิ่งเหล่านี้สามารถทำได้ง่ายกว่ามากบนแอพ native app
- ข้อจำกัดของ UX (User Experience)
แอพแบบ cross-platform นั้นไม่สามารถใช้ประโยชน์ได้โดยตรงจาก native component หรือ component ที่สามารถใช้งานบน native app ได้โดยตรง จึงไม่สามารถที่จะทำให้แอพนั้นทำให้ ผู้ใช้นั้นมีประสบการณ์ที่เหมือนกันได้ บนสองแพลตฟอร์ม
การตัดสินใจเพื่อเลือกการพัฒนาที่เหมาะสม
ความซับซ้อนของแอพ
40% สำหรับการเขียน single codebase(หรือการเขียนจากโค้ดชุดเดียว) เพื่อการสร้างแอพที่สามารถทำงานได้ทั้งบน iOS และ Android
ระยะเวลาในการพัฒนา
ในบางโปรเจค เราอาจจะต้องการแอพที่เป็น MVP(Most Viable Product) หรือการทำให้แอพเป็นลักษณะที่ focus ที่แก่นแท้ของผลิตภัณฑ์และตัดฟังก์ชั่นเสริมที่ยังไม่จำเป็นออกไป ให้โดยเร็วที่สุด นี่อาจจะเป็นจุดที่เราจะต้องพิจารณาในการใช้วิธีการพัฒนาแอพแบบ cross-platform ไม่จำเป็นจะต้องพัฒนาแบบสองเวอร์ชันของแอพ โดยใช้การพัฒนาที่จำเป็นเพียงแค่รอบเดียว เพื่อให้ได้แอพทั้ง iOS และ Android
UI/UX
หากว่าเราต้องการจะมองหาการแสดงให้เห็นภาพและประสบการณ์ที่น่าทึ่ง คำตอบที่แน่ชัดก็คือการพัฒนาแอพแบบ native นักพัฒนาจะสามารถเข้าถึงส่วนประกอบของ UI/UX ได้เมื่ออยู่ในสภาพแวดล้อมของการพัฒนาแอพแบบ native การเลือกใช้การพัฒนาแบบ cross-platform จะจำกัดองค์ประกอบในการเลือกใช้ UI/UX ของแอพอย่างมาก
ดังนั้นจากการที่ได้ข้อสรุปต่างๆ ทั้งข้อดีข้อเสียและลักษณะการพัฒนาที่ต่างกันนั้น ก็ต้องมีปัจจัยในการตัดสินใจที่เหมาะสมในการเลือกใช้ ทั้งจากค่าใช้จ่าย ระยะเวลาที่ต้องใช้ รวมถึงการโต้ตอบปฏิสัมพันธ์ระหว่างแอพกับ user ว่าต้องใช้ process มากน้อยแค่ไหน ก็จะสรุปได้ว่า เราต้องใช้วิธีการแบบใดในการพัฒนาแอพ