Flutter 101 เมื่อนกน้อยจะกระพือปีกโผบินออกจากรัง
สวัสดีนักแสวงหาทุกท่าน ผมมีเรื่องจะเล่าให้ฟัง…
เดิมแผ่นดินเมืองจีนทั้งปวงนั้นเป็นสุขมาช้านานแล้วก็เป็นศึก ครั้นศึกสงบแล้วก็เป็นสุข
คำกล่าวนี้เป็นประโยคแรกของการเริ่มต้นมหากาพย์พงศาวดารอันยอดเยี่ยมที่หลายคนยกย่องให้เป็นวรรณกรรมที่ควรค่าแก่การนำมาอ่านมาศึกษา ซึ่งก็ยังเป็นความจริงที่ว่าไม่มีอะไรจะยั่งยืน มั่นคง ถาวรไปได้เป็นเวลานาน ทุกช่วงย่อมมีจุดสูงสุดและต่ำสุดของสรรพสิ่ง เช่นเดียวกันกับการพัฒนาซอฟต์แวร์ที่จะเกิดของเก่าไป ใหม่มา อยู่ตลอดเวลา อันนี้บูม อันนู่นกลับมาฮิต อันใหม่นี่ม้ามืดมาแรงแซงทุกหลุมนะ เกิดกันวนเวียนเป็นวัฏจักรไร้ที่สิ้นสุด
ตั้งแต่มีสมาร์ทโฟนก่อกำเนิดขึ้นบนโลกสิ่งที่มาคู่กันเลยคือแอปพลิเคชันหรือโปรแกรมบนมือถือ ผู้คนต่างสนใจการพัฒนาแอปพลิเคชันบนเจ้าเครื่องมือเคลื่อนที่นี้ และมันก็เปลี่ยนโลกได้จริงๆ จากการย่อโลกทั้งใบมาไว้ในมือได้ สามารถสืบค้นข้อมูล จะสั่งซื้อของ หรือแม้แต่จองตั๋วเครื่องบิน ลามไปถึงที่พักตามโรงแรมต่างๆ ล้วนกระทำการได้ด้วยแอปฯที่อยู่ในเครื่องมือชิ้นเล็กๆนี้
การพัฒนาแอปฯหลักๆสามารถจำแนกได้สองวิธีใหญ่ๆด้วยกันคือ
- Native App
- Hybrid App
แน่นอนว่า Native App นั้นก็ฝั่งใครฝั่งมันที่นักพัฒนา (Developer) จะต้องเลือกฝั่งว่าจะไปอยู่สำนักไหน ไม่ว่าจะ Android หรือ iOS (ต้องขอประทานอภัย OS อื่นด้วย) ซึ่งเครื่องมือในการพัฒนาจะแตกต่างกันอย่างสิ้นเชิงรวมถึงแนวทางในการพัฒนาด้วย ซึ่งอาจจะทำให้เกิดสิ่งที่มีความคาดเคลื่อนกันของแอปฯได้ เช่น ทำไมเฟซบุ๊กของฉัน (Android) ถึงหน้าตาไม่เหมือนของเธอ (iOS) ล่ะ? (ขนาด Platform เดียวกันยังไม่เหมือนกันเลยครับ A/B Testing กันเป็นว่าเล่น) จึงเป็นที่มาของแนวคิด Single code base คือการพัฒนาโค้ดคำสั่งชุดเดียวกันแต่สามารถนำไปสร้างได้ทั้งสอง Platform เป็นอย่างน้อย ซึ่งเจ้า Flutter ก็คือหนึ่งในการทำ Hybrid ที่ว่านี้
เคยได้ยินข่าวคราวของเจ้านกน้อย (Flutter) ตัวนี้ใน Blog ต่างๆหรืองานสัมมนามาบ้าง ในใจของผู้เขียนก็เริ่มมีความสงสัยปนสนใจก่อตัวขึ้นเรื่อยๆ จนสุดท้ายก็ได้วนมาบรรจบทำความรู้จักกับเจ้านกน้อยตัวนี้จนได้
มันคือ…?
Flutter คือ SDK ที่พัฒนาโดยทีมงาน Google บางส่วน (บางส่วนที่ว่าของเค้านี่มีกี่ส่วนกันแน่นะ โปรเจคก์เยอะแยะไปหมด --a) ประมาณ 100 กว่าท่าน ได้จัดทำ SDK ตัวนี้ขึ้นและจัดตั้งเป็นชุมชนผู้สร้างสรรค์และให้กำเนิดนกน้อยตัวนี้ขึ้นมา โดยมีรายละเอียดคร่าวๆ ดังนี้
- ใช้ภาษา Dart ในการพัฒนา ถ้าถามว่าทำไมเพราะ Google เป็นคนสร้างภาษานี้มาไงล่ะ (ถ้าผมไม่ทำแล้วใครจะทำล่ะ!)
- Dart ง่ายต่อการเรียนรู้และกระชับ (หลังๆมา เราจะเห็นว่าภาษาที่เกิดใหม่มักจะใกล้เคียงกับภาษามนุษย์มากขึ้น จึงไม่แปลกใจ)
- การสร้างสรรค์ด้าน UI ที่ทำได้ง่ายมาก (Custom UI) และ Animation ก็ทำได้ง่ายและสวยงาม
- มุ่งเน้นด้านการพัฒนา Mobile Application ที่ได้ทั้งประสิทธิภาพของ Native App และความสวยงามของ UI ไปคู่กันด้วย (โม้ละ มันจะทำได้จริงเหรอ?)
- สามารถพัฒนาแอปพลิเคชันได้รวดเร็วโดยใช้โค้ดชุดเดียว (Single code base) กันทั้งสองฝั่ง นั่นคือ iOS และ Android (แต่นอกจากนี้มันยังใช้ได้อีกอันนะคือ AngularDart ซึ่งเป็น Web platform)
- ตัวชูโรงที่เค้าภูมิใจนักหนาเลยคือ Hot reload! มีผลอย่างมากต่อความเร็วในการแก้ไขโค้ด
- มันข้ามไปเอาโค้ดฝั่ง Native มาผสมปนเปกันได้ด้วยนะ
ข้อดีของการทำ Single code base เพื่อลดข้อผิดพลาดที่ไม่ตรงกันได้ของแต่ละแพลตฟอร์ม (รึเปล่านะ?)
ศาสตราวุธจากสำนักไหนพัฒนาได้บ้าง?
แน่นอนว่าจะเขียนโค้ดเราก็ต้องใช้คอมพิวเตอร์ใช่มั๊ย? มีใครเขียนในกระดาษบ้างล่ะ? (ภาพสมัยเรียนในห้องสอบลอยมาเลยครับ T_T) เข้าเรื่องคือ OS ที่ทำได้มีดังนี้
- Windows
- macOS
- Linux
อ้าว? บอกว่าทำได้ทุก OS ที่นิยมอยู่ในตลาดตอนนี้ก็จบละ ป่าวเลยครับ มันทำได้ทั้งสาม OS แต่สิทธิพิเศษหากต้องการจะทำ Cross Platform จริงๆ ท่านนักเดินทาง ก็ต้องใช้ macOS อยู่ดีครับ เพราะ iOS ไม่สามารถรันบน OS อื่นได้ จบข่าว! แต่ถ้าวันข้างหน้า OS อื่นๆนอกจาก macOS สามารถรัน Xcode หรืออะไรก็ตามที่ใช้พัฒนา iOS ได้ ก็เป็นอีกเรื่องนึง (มันจะมีเรอะ!)
เจ้า Flutter รองรับ Device ได้ถึงขนาดไหน?
Operation System
- Android Jelly Bean (4.1) API v.16 หรือใหม่กว่า (อืม ค่อนข้างที่จะยังไม่ทิ้งหนีกันไปเท่าไหร่)
- iOS 8 หรือใหม่กว่า
Hardware
- iOS Device ต้องเป็น iPhone 4s หรือใหม่กว่า
- Android Device ต้องเป็นชิปประมวลผลแบบ ARM (ก็น่าจะเป็นส่วนใหญ่ของท้องตลาด)
Sneak Peak กันซักหน่อย
ไวยากรณ์ (Syntax) ของภาษาเป็นอย่างไรกันบ้างคงมีถูกใจ ขัดใจกันไปบ้างไม่มากก็น้อยแหละ ส่วนตัวมีงงๆในช่วงแรก เนื่องจากคุ้นชินกับการเขียน Android และห่างเหินการพัฒนา Web App ไปนานแล้ว มีปรับตัวบ้างเล็กน้อยแต่ไม่ยากจนเกินไปครับ เพราะอย่างที่กล่าวไปแล้วภาษาที่กำเนิดขึ้นมาใหม่นั้นมันง่ายขึ้น ผิดกับสมัยก่อนเยอะเลยที่แทบจะคุยกันไม่เป็นภาษามนุษย์
ณ ตอนนี้ Flutter ก็ได้ผ่านการปล่อยนกบินออกจากรังแล้ว โดยการปล่อย version 1.0 เมื่อเดือนธันวาคมของปีที่แล้ว (พุทธศักราช ๒๕๖๑) ทั้งนี้เหล่าชุมชนนักพัฒนาก็ยังให้ความสนใจเพิ่มมากขึ้นคอยประคบประหงมนกตัวนี้ให้เติบใหญ่ต่อไปได้ในภายหน้า
โดยรวมแล้วถือว่าเป็นเครื่องมือในการพัฒนาแอปพลิเคชันอีกตัวนึงที่น่าสนใจเลยทีเดียวครับ มีการพัฒนาอย่างต่อเนื่องลบข้อด้อย ชูข้อเด่นกันอย่างมากมาย สำหรับใครที่กำลังมองหาการพัฒนาแอปพลิเคชันแบบ Cross-Platform ลองรับนกตัวนี้ไปเลี้ยงดูครับ Flutter
สุดท้ายแล้วต้องขอตัวลา ถ้ายังไม่ตายจากกันไปเสียก่อน คงมีโอกาสได้พบกันใหม่