Hybrid CrossPlatform Development [Part-0 Introduction]

Introduction

Hybrid CrossPlatform Development คืออะไร ?

คือจริงๆ ไม่รู้จะหานิยามมาอธิบายคำนี้ยังไง จริงๆ อาจจะมีน่ะครับ แต่ผมกากเองหาไม่เจอ อธิบายง่ายๆ คือ

  1. ทำ Web
  2. ทำ App บน IOS
  3. ทำ App บน Android

โจทย์ฟังดูง่ายน่ะครับ แต่ความเป็นจริงแล้วยากมากๆ !!!

เกริ่นนำพื้นเพมาก่อน ….

ผมเคยเขียน Web ขำๆ เมื่อนานมาแล้วใช้ PHP , html , css เมื่อเนิ่นนานมามาก ตั้งแต่ ยังไม่มี Smart-Phone พอเข้ามายุค Smart-phone ก็เกิดมาซึ่ง Application ที่รันบน Platform ของตัวเองเช่น App บน IOS , Android เท่าที่ผมทราบผมกับเพื่อนเคยพยายามที่จะใช้ PhoneGap ในการเขียน CrossPlatform ทั้ง IOS , Android แต่สิ่งที่แลกมาคือความช้าแบบหาที่เปรียบไม่ได้ (ซึ่งจริงๆ จะทำให้ PhoneGap รันด้วยความเร็วที่เทียบเท่า Native มีความเป็นไปได้แต่คุณต้องใช้ท่าที่ค่อนข้างโหดร้ายมว๊ากๆ) จึงทำให้ความตั้งใจที่จะใช้ PhoneGap หายไป จนเบนเข็มตัวเองไปเป็นสายผลิต Game เปิด Studio เกมเล็กๆ ชื่อ GamingIdea มีผลงานที่ภูมิใจนำเสนออยู่ไม่เยอะ 555+ ลองดูเกมที่ทางบริษัทผมทำเล่นๆ ดูก็ได้ครับ Spinology ที่กล่าวไว้ก็คือ ที่เบนเข็มมาสายทำเกมเพราะ GameEngine ที่ใช้ (Unity3d) มีความสามารถในการ CrossPlatform สูงมากๆ คือรันได้ทั้ง Web , IOS และ Android ซึ่งตอบโจทย์ตัณหาเล็กๆ ในใจว่า เขียนครั้งเดียว มันควรจะรันได้ทุก Platform (OK มันต้องมีปรับแก้กันบ้าง แต่ควรจะต้องใช้ทีมเดียวกัน หรือแก้ไขน้อยมากในระดับที่ไม่ต้องเขียนใหม่ทั้งหมด) ระหว่างที่ใช้ unity3d ก็ค้นพบเครื่องมือที่คล้ายๆ PhoneGap แต่ประสิทธิ์ภาพดีกว่า เช่น Xamarin (เขียนด้วย C# แล้ว CrossPlatform ไปได้ทั้ง IOS / Android) แต่ๆ มันยังข้ามไปเป็น Web ไม่ได้ !!! จึงทำให้สนใจในระดับนึงแต่ไม่มาก ….. จนกระทั่ง !!!

Solution

เหมือนฟ้าเป็นใจ ค้นพบทางสว่างตอบโจทย์

React Is Real.

React คือ อะไรไม่ขอพูดถึงน่ะครับ ขี้เกียจอธิบายในนี้อยากรู้มากกว่านี้ Google เอา เอาเป็นว่ามันเป็นคำตอบที่จะพัฒนา Hybrid CrossPlatform ในนิยามของผม React เกิดมาจาก เทคโนโลยี พัฒนา Web-App จาก Facebook จนมันแตกตัวเป็น React-Native ที่ใช้ Concept ของ React เพื่อทำ Application บน IOS และ Android.

คำถามคือ เขียน ครั้งเดียว มันรันได้ทุก Platform จริงๆ ?

คำตอบคือ ไม่ครับ !!!

อ่านมาตรงนี้แล้วคงจะร้องว่า

อ้าว เห้ยยยยย …. ไม่เหมือนที่คุยกันไว้นิหน่า !!!

อย่าเพิ่งตกใจไป … ก่อนอื่นต้องเข้าในก่อนว่า ทั้ง Website , IOS , Android โครงสร้างมันไม่เหมือนกันเลย จึงต้องมีคำพูดที่เรียกว่า Platform Dependency ความหมายก็คือ แต่ล่ะ Platform มันก็มีอะไรบางอย่างที่ต้องการไม่เหมือนกัน

ยกตัวอย่าง

File ภาพ .svg สามารถแสดงผลบน Web-Browser ได้ แต่ไม่สามารถ แสดงผลบน IOS, Android ได้

มันจึงไม่สามารถทำเหมือนกันได้ 100% จริงๆ แต่เอาเป็นว่าถ้ามีเวลาผมจะมาเขียนแนวทางการพัฒนาการในการเป็น Hybrid CrossPlatform Development With React ต่อแล้วกันน่ะครับ

สุดท้ายก็ขอฝากบทความไว้เท่านี้น่ะครับ แล้วพบกันใหม่เมื่อเวลาอำนวย :)

จริงๆ React ไม่ใช่คำตอบเพียงข้อเดียวน่ะครับ ที่จะทำ Hybrid CrossPlatform Development จริงๆ มีอีกตัวแต่ไม่ขอกล่าวถึง คือ Ionic มีการ Benchmark เทียบกันระหว่าง Ionic กับ React น่ะครับ ลองดูกันได้ที่ Link นี้ 
https://medium.com/react-id/ionic-framework-hybrid-app-vs-react-native-4facdd93f690#.p3j0krsnn

Ionic ไม่รู้คิดขึ้นมาโดยใครแต่มันทำงานร่วมกับ Angular ได้ดี
สรุปคือ ชอบ Facebook ใช้ React, ชอบ Google ใช้ Angular + Ionic เพื่อ CrossPlatform น่ะครับ

หัวข้อต่อไป

Hybrid CrossPlatform Development [Part-1 Preparation]