สรุปงาน Flutter Interact 2019
สวัสดีครับทุกคน เมื่อวันที่ 11 ธันวาคมที่ผ่านมา ที่ New York , USA ทีมงาน Google Flutter ได้จัดงาน Flutter Interact 2019 ซึ่งเป็นงานสัมนาเกี่ยวกับ Flutter Tech ในบล็อกนี้ผมจะสรุปเนื้อหาในงานผ่าน Livestream ครับ หากท่านใดมีเวลาก็สามารถเข้าไปดู Livestream แบบเต็มใน youtube ได้เลยครับ ความยาวเฉพาะเนื้อหาประมาณ 4-5 ชั่วโมง
โดยงาน Flutter Interact 2019 จัดงานในคอนเซ็ป
“A day dedicated to creation and collaboration with the world, inspired by the makers of brilliant experiences.”
Vision
เริ่มจากคุณ Matias Duarte (Vice-President Material Design, Google) กล่าวเกี่ยวกับวิศัยทัศน์ ว่า Google Flutter มาเพื่อช่วยทุกคน ทั้ง designer developer โดย Google เตรียมทั้งทรัพยากร และเครื่องมือมากมาย เพื่อจัดการกับปัญหาต่างๆ เขารู้สึกตื่นเต้นมาก ที่วันนี้ทุกคนจะได้เห็นมีอะไรใหม่ๆสำหรับ Flutter บ้าง และการลงทุนที่ผ่านมาของทีมงาน วันนี้ก็ไม่แปลกใจเลยว่ามันจะสำเร็จสุดๆ สุดท้ายเขาเชื่อว่า เราสามารถสร้างสิ่งที่เราจินตนาการเอาไว้ให้เป็นจริงได้
“we believe we can make our imaginations real. “
Google Font
Google Fonts มี Fonts ที่ถูกเรียกใข้งาน นับตั้งแต่ 2010 มากกว่า 34 ล้านล้านครั้ง
ตอนนี้ทางทีมงาน Google ได้เพิ่ม package สำหรับใช้ Google Fonts ใน Flutter สามารถเรียกใช้ Font ด้วยการ coding ทำให้เราทำ Custom Fonts ได้ง่ายขึ้น
ซึ่งตัว Font จะถูก cache ในแอป และเมื่อแอป build release mode ตัว Flutter จะคัดเฉพาะ font ที่ถูกใช้งานในแอปจริงๆเท่านั้น แม้ว่าแอปจะ cache font ไว้หลายตัว ทำให้แอปขนาดไม่ใหญ่เกินจำเป็น
รายละเอียดการใช้งานดุได้ที่ pub dev
https://pub.dev/packages/google_fonts
Experimental
คุณ Matias บอกว่า กำลังพัฒนาโปรแกรม engine ตัวนึงด้วย Flutter เป็นโปรแกรมที่จะช่วยให้ design และทำ UI responsive ได้ง่ายขึ้น และอาจช่วย generate code อัตโนมัติ ทำให้ UI จากหลากหลายรูปแบบหน้าจออยู่ใน code base เดียว
ตัวอย่าง engine ที่กล่าวถึง
Product
คุณ Time Sneath (Group Product Manager for Flutter) พูดถึง การเติบโตของ Flutter และ Dart จากเว็บไซต์ Octoverse Github ซึ่งมีสถิติในปี 2019 ที่น่าสนใจ 3 อย่าง
Top and trending projects
โปรเจคที่เป็น trending จัด Flutter อยู่อันดับ 3 (อันดับ 1 คือ vs code ตามมาด้วย Azure doc)
Fastest growing open source projects
โปรเจคที่เติบโตไวที่สุดใน opensource โดย Flutter อยู่อันดับ 2 (อันดับ 1 คือ .NET CORE)
Fastest growing languages
ภาษา Dart อยู่อันดับ 1 ของภาษาที่เติบโตไวที่สุดในปี 2019 (ตามมาด้วย Rust , HCL และ Kotlin)
ดูสถิติดังกล่าวนี้ได้ที่เว็บไซต์
https://octoverse.github.com/
Flutter 1.12 มาแล้วนะ
งานนี้เมื่อเห็น คุณ Tim Sneath ท่านนี้ แน่นอนว่ามักจะประกาศเวอชันใหม่ของ Flutter คือ Flutter 1.12 เพิ่มความสามารถใหม่ๆ
เช่น Dark mode ใน iOS , ตั้งค่าโปรเจคให้ support AndroidX เป็น default และมี widget ใหม่ๆเพิ่มเข้ามา
Stadia App
คุณ Roberto Scaramuzzi เป็น Software engineer ของ Google Stadia พูดถึง Stadia App ที่พัฒนาด้วย Flutter
แอปนี้เป็นแอปที่เชื่อมกับ Game Streaming และทั้งหมดพัฒนาด้วย Flutter อย่างลื่นใหล
ebay motors App
แอป ebay motors เป็นแอปเกี่ยวกับขายอะไหล่และขายรถออนไลน์ที่นิยมมาก โดยแอปนี้ทาง ebay ก็ใช้ Flutter ในการพัฒนาแอปด้วยเช่นกัน
Splice
คุณ Angelina Fabbro (Principal Engineer at Slice) เล่าประสบการณ์ของการพัฒนาแอป Slice ด้วย Flutter
Slice เป็นแอปรวมเสียงดนตรีและเสียง effect ต่างๆ ทางทีม Slice พัฒนาแอปด้วย Flutter บอกว่าได้ประสบการณ์ที่ดีมาก ซึ่งเขากำลังพัฒนาเวอร์ชัน Desktop ต่อในอนาคตอีกด้วย
DartPad
คุณ Zoey Fan และ คุณ Chris Sells นำเสนอเว็บไซต์ https://dartpad.dev/ เป็นเว็บที่ช่วยให้เราสามารถทดลองเขียนโปรแกรมภาษา dart ได้บนเว็บและรันได้เลย ตอนนี้อัพเดทให้สามารถรันโค้ด dart ของ Flutter และแสดงผลได้คล้ายกับใน emulator อยู่ แต่จริงๆมันคือพลังของ Flutter Web
นอกจากนี้ DartPad ก็เชื่อมกับ Document สามารถลองกดรัน ใน example code ของ Doc ได้เลยด้วย
Dev Tools
ตัว Flutter Outline ใน Android studio จะสามารถกดที่ widget แล้ว custom สีได้ผ่านหน้า UI ได้ พร้อม hot reload แสดงผลทันที
ตัว Dart Dev Tools เพิ่ม Layout Explore เช่น เวลามี Overflow เกิดขึ้น สามารถกดที่ widget นั้น ดูรายละเอียดว่า มีอะไรตรงไหนที่เป็นปัญหา
เพิ่มให้ Visual Studio Code สามารถรัน debug ตัว Simulator ของ iOS , Android พร้อมกันได้
พร้อมกับโชว์ Flutter Octopus (ฮ่าๆ) ที่เอาอุปกรณ์ต่างๆมา build ด้วยคอมเครื่องเดียว และลองแก้ code แล้ว hot reload ทุกอุปกรณ์ก็จะถูกอัพเดทในทันที
Supernova
คุณ Jiří Třečák (CEO , Founder at Supernova) แนะนำเกี่ยวกับ Supernova ซึ่งมันคือ เครื่องมือสำหรับช่วยออกแบบ UI มีทั้งเวอชันที่เป็นโปรแกรม Supernova studio และแบบ on cloud
โดยช็อตเด็ดของ supernova คือสามารถ export ไฟล์จาก sketch และแปลงเป็น dart ให้เลย ที่เจ๋งคือมันทำ code ส่วน Animation ให้เลยด้วย ซึ่งสามารถ custom ได้จากใน supernova
Adobe XD
คุณ Kerri Scotts นำเสนอ Adobe XD ที่ใช้งาน plugin XD to Flutter
คือสามารถแปลง XD ออกมาเป็น dart ได้ โดยเมื่อติดตั้ง plugin วิธีการง่ายๆคือกดที่ object หรือ screen ใน XD แล้วไปที่เมนู Plugin กดที่ Export selected for Flutter เท่านี้ XD จะแปลง screen ใน XD ออกมาเป็น code widget ให้แล้ว
ทาง Adobe จะเปิดเป็น Early access ก่อน
https://xd.adobelanding.com/xd-to-flutter/
gSkinner
คุณ Grant Skinner (Founder at gSkinner) เล่าเกี่ยวกับ gSkinner เป็นบริษัทที่รับออกแบบและหา Solution ด้านการออกแบบใหม่ๆ ซึ่งในงานนี้ เขาได้รับโจทย์ให้สร้าง UI/UX หรือ Animation ใหม่ๆให้กับ Flutter
และคนที่มาด้วยกับคุณ Grant คือคุณ Yoon Lee ที่เป็น Designer ของ gSkinner (น่ารักมาก) เธอเล่าเกี่ยวกับการออกแบบ UI/UX ที่เธอออกแบบ มันทำได้โดย Flutter
ซึ่ง UI Animation ที่ gSkinner ทำนั้นเจ๋งมาก เรียกว่าเทพเลยก็ได้ มีให้ลองเล่นหลายตัว น่าสนใจมากๆ สามารถเข้าไปดูได้ที่ https://flutter.gskinner.com/
ตัวอย่างที่ทาง gSkinner ออกแบบและพัฒนา
Material Theming
คุณ Yasmine Evjen (Senior Design Advocate at Google) เล่าถึง Material Design ไม่ใช่แค่ UI จะรวมถึง UX และ User ด้วย ซึ่งประกอบด้วย 3 ส่วนหลัก
Material Principles คือ พวกสี พวก font และการจัดวาง
Content and Context คือการออกแบบอิงตามที่ user ใช้งานจริง
User Intention คือ ความตั้งใจ ความคาดหวังของผู้ใช้งาน
นอกจากนี้ Material design แบ่งลักษณะ UI เป็น 3 กลุ่มคือ small , medium , large
จากนั้นเธอก็ demo เว็บตัวอย่าง ที่ช่วยให้เราเลือก font และทำ generate code ของ text theme ได้
เสร็จแล้วก็ copy code ไปใช้ใน Flutter ได้เลย แน่นอนว่ามันใช้งานร่วมกับ Google Fonts package จึงไม่ต้องยุ่งกับไฟล์ Font ให้ยุ่งยากอีกแล้ว
Rive
คุณ Luigi Rosso และคุณ Guido Rosso (Founder and Co-Founder at Rive) แนะนำ โปรเจค Rive ซึ่งแต่เดิมมันคือ Flare เปลี่ยนชื่อใหม่เป็น Rive นั่นเอง โดยบริษัทเดิมชื่อเก่าคือ 2Dimension ตอนนี้เปลี่ยนมาใช้ชื่อ Rive ชื่อเดียวกับ Product จะได้ไม่สับสน
Rive คือเครื่องมือที่ช่วย design animation vector และ สร้าง asset ไปใช้ใน Platform ต่างๆ ถ้าใครเคยใช้ Flare มาก็คืออันเดิมนั่นแหละ ซึ่งสามารถสร้าง Animation ได้ในเว็บไซต์ของ Rive และ export ไฟล์ไปใช้งานได้เลย
โดย Rive เราจะต้องทำส่วนส่วนคือ เขียน animation ใน Rive Editor จากนั้นก็ไปเรียกใช้งานใน project นั่นเอง
ในตัวอย่างเขาได้แสดงการทำ animation ของห่านจะขยับคอไปตาม cursor ใน Text Field ซึ่งรายละเอียดค่อนข้างเยอะอยู่เหมือนกันนะ เรียกว่า ต้องเข้าใจศิลปะ และหลักสรีระร่างกายเลย
Flutter Desktop
คุณ Time Sneath อธิบายเกี่ยวกับ Flutter Desktop ว่าตอนนี้ Flutter Desktop อยู่ใน Dev channel แล้ว โดย Desktop App จะต้องการ 3 อย่าง
1. Tool chain สำหรับ build ใน OS นั้นๆ
2. Input mechanism เช่น mouse pointer , keyboard
3. UI responsive
สำหรับ MacOS สามารถ build release mode ได้แล้ว
Flutter Web
คุณ Time Sneath เล่าภาพรวมของ Flutter Web ว่าเราจะสามารถใช้ Skill เดิมของ Flutter มาเขียน Flutter Web ได้เลย มันจะเป็น code base เดียวกับ Mobile และทุกอย่างจะถูกแปลงเป็น javascript ที่ optimize มาอย่างดี
ในตอนนี้ Flutter Web เข้าสู่ Beta channel แล้ว
คุณ Ferhat Buyukkokten (Manager Tech Lead, Google) และคุณ Liam Spradlin (Designer Material Design, Google) อธิบายเกี่ยวกับ Flutter Web ที่ในตอนนี้ Flutter Web กำลังจะเข้าใกล้ ระดับที่นำไปทำ Production ได้แล้ว
ข้อดีของการทำเว็บที่ต่างจาก Mobile App ก็คือ User ไม่ต้องติดตั้งอะไรก่อนการใช้งาน และเราสามารถอัพเดทตัวแอปบนเว็บได้ทันที เขาเล่าว่าปกติการพัฒนาเว็บที่ผ่านมา เราจะยุ่งกับส่วน HTML CSS แล้วปล่อยให้ browser นำไปวาดหน้าจอเพื่อแสดงผล
แต่ Flutter จะปรับแนวคิดใหม่ คือ developer จะสามารถทำทุกอย่างทั้งหมดจนถึงขั้นตอนการ render หน้าจอ โดย Flutter ได้เตรียม API rendering ไว้ให้ ดังนั้นเราจะสามารถทำสิ่งต่างๆในเว็บได้มากขึ้น
เขามักจะเจอคำถามว่า Flutter Web code จะใหญ่ขนาดไหน , ตัว library ของ Material App จะใหญ่ขนาดไหน เพราะกลัวจะทำให้เว็บโหลดช้า เขาบอกว่า ตัว Material App ใน Flutter มีขนาดประมาณ 300 kB และกำลังหาทางทำให้เล็กกว่านี้ และตอนนี้กำลังพัฒนาให้ Flutter Web performance ให้ดีขึ้น เขายังอธิบายอีกด้วยว่าเมื่อเราอัพเดท State หรือเรียก setState ตัว Flutter Web จะหาทางให้หลีกเลี่ยงการอัพเดท DOM element บนหน้าจอ แบบไม่จำเป็น หรือในกรณีของ Dynamic ListView ก็เช่นกัน
และตอนนี้ Flutter Web ก็มี plugin ที่ support Web อยู่ 6 ตัว
Building Accessibility
คุณ Dan Field (Software Engineer, Flutter team) และคุณ Victor Tsaran (Accessibility Material Design) โดยคุณ vector เป็นผู้พิการทางสายตาที่ช่วยทำให้ Material Design สามารถใช้งานกับผู้พิการ
ซึ่งเขาก็ได้แนะนำนักพัฒนาให้ทำแอปให้รองรับผู้พิการ เช่น การใช้ Semantic Widget และ ExcludeSemantics เพื่อให้แอปแสดงผลเหมาะสมกับผู้พิการ
Build Clock with Flutter
ช่วงสุดท้าย คุณ Jack Jessup (Software Engineer) และคุณ Kim Tran (Visual Designer) เป็นการพูดคุยเกี่ยวกับการทำแอปนาฬิกา ซึ่งเป็น challenge การทำ UI นาฬิกาซึ่งจะถูกนำไปใช้ใน Lenovo Smart Clock ผู้ชนะจะได้รางวัลเป็น iMac Pro https://flutter.dev/clock
โดยสามารถนำ Animation ที่ทำด้วย Rive มาใช้เป็นตัวเลขของนาฬิกาได้ ใครมีไอเดียก็สามารถส่งผลงานไปร่วมแข่งได้นะ
ช่วงสุดท้ายจะเป็นการ coding แสดงนาฬิกาแบบง่ายๆ
สรุป
จบงานแล้ว สำหรับ Developer และ Designer น่าจะได้อะไรหลายอย่างเกี่ยวกับงานนี้ ที่ผมรู้สึกได้จากการดู Live คือ ได้เห็นอนาคตเกี่ยวกับ Flutter มากขึ้น ทั้ง Mobile , Web และ Desktop มีเครื่องมือหรือฟีเจอร์ใหม่ๆที่ช่วยให้เรา Design App และนำมาใช้ใน Flutter ได้ น่าจะทำให้เขียน Flutter สนุกขึ้นไปอีก ส่วนตัวผมแม้จะทำงานประจำที่ต้องใช้ Flutter อยู่ ตอนนี้รู้สึกสนุกกับการเรียนรู้ Flutter มาก (:
ขอบคุณทุกท่านที่เข้ามาอ่านบล้อกนี้ครับ รูปอาจจะเยอะไปนิดนึงต้องขออภัยครับ
คุณ Yoon น่ารักจริงๆนะ