มีโอกาสมาร่วมงาน React Bangkok 3.0.0 จัดโดยทีม ReactJS Developer Thailand
จัดงานที่ตึก Energy Complex ชั้น 6 ซึ่งครั้งนี้จัดยิ่งใหญ่กว่าเดิมมาก
เพื่อไม่ให้เสียเวลา มาสรุปเนื้อหาของงานในช่วงเช้ากันดีกว่า
ส่วนบรรยากาศไว้ตามมาทีหลัง

ในส่วนของเนื้อหาช่วงบ่ายอ่านได้ที่นี่

เริ่มงานมาก็จะติดขัดนิดหน่อยสำหรับการลงทะเบียนเข้างาน

เพราะว่าออกมาจากลิฟท์ก็เจอกับเหล่า React Developer หลายร้อยชีวิตเข้าแถว
เพื่อลงทะเบียน รับเสื้อและของที่ระทึก !!
แถวยาวมาก ๆ ซึ่งเรื่องนี้เป็นปัญหาที่เกิดกับทุก ๆ event เลยนะ
เราจะแก้ไขกันอย่างไรดี
ส่วนชาว developer ก็มาสายเป็นปกติ
เพราะว่า เมื่อคืนทีมชาติเยอรมันลงแข่งตอนตีหนึ่ง
กว่าจะจบก็ปาไปจนตี 3 กันแล้ว !!
แต่โดยรวมบรรยากาศกำลังดีมาก ๆ

เริ่มมาที่เนื้อหากันบ้าง

เปิดด้วย session แนะนำตัวของผู้สนับสนุนสถานที่หลักอย่างเป็นทางการคือ PTT Digital
ซึ่งทำการแนะนำบริษัท ที่ไปที่มา
รวมไปถึงเป้าหมายที่ได้ตั้งไว้ ว่ามีอะไรบ้าง
เพื่อสร้างและพัฒนา service ใหม่ ๆ
รวมทั้งการสร้าง digital platform สำหรับองค์กร
ตลอดจนสิ่งที่กำลังทำเช่น Cloud, Analytic/Big data, Blockchain และ Security เป็นต้น
ไม่รอช้าเริ่มเนื้อหาของ React กันเลย

หัวข้อแรก การเปลี่ยนแปลงที่สำคัญของ Reactในปี 2018

ในปี 2018 นั้น React จะมีการเปลี่ยนแปลงมากมาย
แต่ทางผู้พูดเลือกสิ่งที่น่าสนใจมา 3 เรื่องคือ

  1. React Async Rendering ซึ่งช่วยให้ react app มีการทำงานที่ดีขึ้นอย่างมาก
  2. สิ่งที่จะ deprecated ไปจาก React Life cycle มาจากผลของข้อที่ 1 นั่นเองคือ componentWilMount, componentWilREceiveProps และ ComponentWillUpdate ดังนั้นถ้าใครจะใช้อะไรก็ระวังด้วย เผื่อต้อง migrate กัน
  3. การ Re-architecture ของ React Native เป็นการยกเครื่องใหม่ เพื่อปรับปรุงประสิทธิภาพการทำงาน รวมทั้งการทำงานร่วมกันกับส่วนต่าง ๆ ดีขึ้น น่าจะเป็นอีกเรื่องที่ดีสำหรับอนาคต รอดูกัน

หัวข้อที่สองและสามคือ Gatsby.js vs Next.js

ทำการรวมสองหัวข้อเข้าด้วยกัน
เนื่องจากเป็นสองเครื่องมือที่นำมาใช้คล้าย ๆ กันคือ
การทำ Static Site Generator หรือ Static Site Content
โดยเครื่องมือทั้งสองตัวมีแนวคิดและแนวทางเดียวกันต่างเพียงวิธีการ
รวมทั้งมีข้อดีและเสียต่างกันไป
ยกตัวอย่างเช่น

Gatsby.js จะเหมาะสมกับการเริ่มต้น
เหมาะสำหรับ usecase ทั่วไปที่ไม่ยากและซับซ้อน
ส่วน Next.js นั้นจะใช้กับ use case ที่เฉพาะทางและมีความซับซ้อนสูง
แต่การใช้งาน Next.js ด้วยค่าพื้นฐานนั้น
ประสิทธิภาพจะแย่มาก ๆ ดังนั้นจำเป็นต้องเอาแนวคิดจาก Gatsby.js มาใช้ด้วย
ทั้งเรื่องของ Data splitting และ pre-fetch

ดังนั้นการใช้งานแนะนำให้นำแนวคิดจากทั้งสองมาใช้งาน
เพื่อสร้างสิ่งที่เราต้องการขึ้นมาตามงานนั้น ๆ ไป
Build app, Not War

หัวข้อที่สี่คือ ประสบการณ์การใช้งาน GraphQL บน production

อธิบายสิ่งที่น่าสนใจ 3 เรื่องคือ

  1. ​การออกแบบเพื่อให้มีความปลอดภัย
  2. การจัดการและดูแลรักษาที่ง่าย
  3. การ monitoring ระบบ

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

ต่อมาเรื่องการดูแลรักษาไฟล์ resolver
ซึ่งจะประกอบไปด้วย type จำนวนมาก
ถ้าระบบเรามีเพียงไฟล์เดียวแล้ว
ทำให้การดูแลรักษายากมาก ๆ ดังนั้นแยกกันซะ
แล้วตอน build ค่อยนำมารวมกัน นั่นคือการใช้งาน Split schema

เรื่องสุดท้ายคือ การ monitoring ระบบ
ซึ่งแนะนำให้ใช้งาน Apollo engine

แนะนำให้อ่าน Best Practice of GraphQL เพิ่มเติม

หัวข้อที่ห้า KotlinJS love React

เป็นอีกหัวข้อที่แปลกแหวกแนว
เนื่องจาก Kotlin นั้นคือภาษาที่ทำงานบน JVM (Java Virtual Machine)
แต่ว่าตั้งแต่ Kotlin 1.2 ขึ้นมานั้นมี Kotlin Multi-Platoform
ซึ่งทำให้สามารถแยก common code ออกมาอยู่ตรงกลาง
จากนั้นเราก็สามารถเขียน code ด้วยภาษา Kotlin ตามแต่ละ device ได้เช่น
KotlinJS สำหรับการทำงานผ่าน browser
Kotlin สำหรับ Android และ Application ทั่วไป
ที่สำคัญ Kotlin นั้นถูกประกาศให้เป็น Official Language ของ Android app ด้วยนะ

อีกสิ่งที่สำคัญ web ของ Kotlin นั้นพัฒนาด้วย React ด้วยนะ
รวมทั้งได้สร้างเครื่องมือชื่อว่า Create React Kotlin App
สำหรับสร้าง react app ด้วย KotlinJS

สำหรับตัวอย่างของ Multi-platform ด้วย Kotlin
สามารถดูได้จาก Kotlin Academy App

หัวข้อที่หก ผมขอเปลี่ยนชื่อเป็น สวัสดี Clojurescript

เป็นอีกหัวข้อทางเลือกสำหรับการพัฒนา web application
ด้วยแนวทางใหม่ ๆ นั้นคือ Clojurescript
ซึ่งมีพื้นฐานมาจากภาษา Clojure นั่นเอง
ซึ่งตัวภาษาบอกไว้ว่า

  • ​Simplicity
  • Data-oriented
  • Pure function

ดังนั้นเมื่อนำมาเขียน web application แล้ว
จะยิ่งช่วยเหลือและจัดการปัญหาต่าง ๆ ได้เยอะ
เช่นการนำ Redux มาใช้
มันก็คือการนำเอาแนวคิดของภาษา Clojure มาพัฒนาในรูปแบบของ JavaScript นั่นเอง
แต่จะดีกว่าไหม ถ้ามาเขียนด้วย Clojurescript ไปเลย
แต่ปัญหาอย่างหนึ่งคือ เรื่องของตัวภาษานั่นเอง
ที่อาจจะต้องปรับตัวและทำความเข้าใจกันหน่อย
แต่ผมเชื่อว่า ถ้าผ่าน JavaScript มาได้หรือทนมาได้แล้ว
Clojurescript ไม่น่ายากนะ !!

ติดตามดูบรรยากาศของงานได้จาก #reactbkk ได้เลย
ส่วนถ้าใครอยากดูแบบสด ๆ ทาง Gucode ก็มีให้ด้วย