มางาน Google IO Extended 2018 ที่มี Android session แน่นที่สุดแห่งปี

Minseo Chayabanjonglerd
MikkiPastel
Published in
18 min readJul 5, 2018

--

ในปีนี้บัตรที่มีอยู่ 1,300 ใบที่แจกจ่าย access code ก็หมดเกลี้ยงเลย

เรียกได้ว่า session ฝั่ง Android แน่นสุดๆ ถ้าดูจาก agenda

งานจัดขึ้นที่ kbank siam pic-ganesha ที่เดียวกับงาน Android Bangkok ดังนั้นน่าจะมากันสะดวกด้วย bts ลงสยาม

ป้ายห้อยคอน่าจะเหมือนกันงาน React Bangkok 3.0.0 ที่มี Agenda ด้านหลัง (อ่านจากบล็อกนุ้งเต่า) แต่ UX ไม่ค่อยดี ตรงสายห้อยคอไม่ได้ยาวมากขนาดนั้น บางทีต้องเอาออกจากคอมาดูเลยทีเดียว แอ้กกกก

คนในงานเยอะมากๆ เรานัดเพื่อนไว้ ไปพร้อมกัน หลงพร้อมกันฮะ ลงทะเบียนสัก
แปปก็ได้ขึ้นไปจับจองที่นั่งชั้นบนเลยจ้า

ปล. session สุดท้ายไม่ได้อยู่เน้อ หิวข้าวเลยออกมากินก่อน แบบเรากับเพื่อนแก่แล้ว นั่งนานไปด้วย 555

ได้เวลาอันสมควรแล้ว เริ่มต้นที่ Welcome Remark โดยพี่โอ๋ค่ะ

Welcome remarks : Wittaya Assawasathian GDG Thailand

ในไทยเราเป็น commulity ที่คึกคัก และ Active ที่สุดใน SEA และมี GDE 12 ท่าน

และมี surprise เล็กน้อย คือ ตอนนี้ได้ GDE หญิงคนแรกในไทย แบบสดๆร้อนๆเลย คือ คุณนาถ GDE Machine Learning ค่าาาาา ขอแสดงความยินดีนะคะ

Opening Keynote : Mr. Chetaphan Siridanupath, Principal Visionary Architect, KLABS, KBTG

จากนั้นเป็น open session โดยสปอนเซอร์หลักของงานนี้ KBTG นั่นเอง ด้วยหัวข้อ Start with why

  • Golden cycle คือควรคิดแบบ outside-in ไม่ใช่ inside-out
  • SpaceX คิดจาก why สุดท้ายได้ยานอวกาศที่สามารถนำกลับมาใช้ใหม่ได้
  • Why KTBG คือ technology for better life ทำยังไงให้คนใช้ง่ายขึ้น เช่น QR code ตามร้านต่างๆ หรือ iBeacon สำหรับผู้พิการทางสายตา ให้ทุกคนสามารถเข้าถึงบริการของธนาคารได้ง่ายขึ้น
  • How : KADE ไม่ได้เน้นความลํ้าของเทคโนโลยีที่ใช้ เน้นประสบการณ์ของผู้ใช้งานเป็นหลัก
  • พัฒนาการของธนาคาร Channel -> banking -> platform (AI/ML)
  • และทิ้งท้ายด้วยประโยคนี้ค่ะ

I/O Keynote

ได้เวลาสนุกแล้วสิ
ปล. ทำไม Google Lens อ่านว่า 1/0 Keynote อ่ะ ฮืออออ

Manikantan Krishnamurthy : Developer Relations, Google Singapore

โดยรวมพูดถึง Google Assistant นะ

ถ้าเราอยากทำเองก็มี Assistance SDK ให้ใช้

เขาอธิบายการใช้ DialogFlow ด้วย รู้สึกว่าง่ายกว่าที่เราลองทำเองอีกแหะ หลักๆจะมี Intent, Entity และ Param

ส่วนอันนี้เกิดอาการมือไม้สั่นกันทั้งงาน กับ Community Partner จ้า แบบเราทำ Action ขึ้นไป ได้เสื้อยืดสุด cool และเครดิตเพิ่มด้วย

ส่วน Startup ก็ไม่น้อยหน้าเช่นกันจ้า พี่กูเกิ้ลจัดให้กับโปรแกรม Google Cloud Startup แสกน QR Code กรอกรายละเอียดได้เน้ออออ

Somkiat Kitwongwattana : GDE Android

ฝั่ง Android ที่อัพเดตเนี่ย เอาจริงๆเยอะจนแทบจะแร็ฟได้เลย โย่ว

ทาง Android จริงจังมากๆที่ให้ developer ย้ายไปเขียน Kotlin และตอนนี้มี version 1.2.50 แล้ว

ในไทยก็มีบางแอปที่เป็น Kotlin แล้วนะ (อันนี้นับจากการใช้ Kotlin บน project 30% ตามกระทู้ที่พี่เอกถาม)

และตอนนี้มี GDE สาขาใหม่ นั่นคือ GDE Kotlin นั่นเองงง (รอมานานล้าว) ซึ่งคนนี้ควบทั้ง 2 ตำแหน่งเลย คือคุณนากิ นั่นเองงง

มีอะไรมาใหม่บ้าง

  • Android Studio 3.2 run on Chrome OS ได้แล้ว
  • Android App bundle มีทั้ง Dynamic Delivery และ Dynamic Feature ซึ่งจะมี session แยกอีกที
  • AndroidX
  • Android Jetpack
  • Android P
  • Slices ทำแล้วมันจะขึ้นที่ Google Search ได้
  • App action
  • Google Play Instant ปีก่อนมี Instant App ไปแล้ว ปีนี้เพิ่มฝั่งเกมส์เข้าไปด้วย
  • Google Play มี Internal Test อันนี้เป็นตัวทดสอบกันเอง ก่อนไป alpha beta และ release (รออ่านบล็อกเรื่องนี้จากเราได้ ฮี่ๆ) แล้วก็ Deprecation Policy คือ API ที่ใช้ในแอปต้องมากกว่า version 26 นะ น่าจะเห็นข่าวกันมาแล้ว
  • Android Thing : Maker with Kotlin

Virot Chiraphadhanakul : GDE ML

  • ในงาน Google I/O เมื่อปีก่อนมีการนำเสนองานวิจัยเรื่องเบาหวานขึ้นตา แต่ปีนี้มีทำนายโรคจากดวงตา ด้วย AI
  • ทาง Google มี concept ว่า ให้ทุกคนเข้าถึง AI ได้
  • ปีก่อนเปิดตัว hardware ตัวนึง คือ Cloud TPU เป็น pubilc beta ตอนนี้เป็น TPU 3.0
  • TensorFlow มีคน download 13 ล้านแล้วนะ แต่ก่อนหน้านี้อาจจะมีคนบ่นว่าใช้ยาก เพราะมันเป็น low-level เนอะ ตอนนี้ขยับมา high level แล้ว
  • on-device Machine Learning สามารถคำนวณเองโดยสามารถทำบน Offline ได้แล้ว -> TensorFlowLite
  • ออก ML Kit ให้ใช้ใน Firebase
  • TensorFlow.js ใช้ในเว็บ
  • TensorFlow Hub เป็น community เนอะ
  • มีคอร์สออนไลน์เรียนฟรีด้วย Machine Learning Crash Course

ขอแปะบล็อกงาน AI day เพิ่มนะ เผื่อใครงงๆว่าตัวไหน คืออะไร

Jirawat Karanwittayakarn : GDE Firebase

ฝั่ง Firebase ก็ไม่น้อยหน้าเช่นกัน ยังมีอะไรใหม่ๆให้เราเล่นเสมอ แถมบางที่ JD ยังระบุถึงเรื่อง Firebase Skill อีกด้วย

ในไทยและในโลกมีแอปที่ใช้ Firebase ประมาณนี้

  • Cloud Function ไม่ beta แล้วจ้า แถม feature มาเพิ่มด้วย
  • Authentication ตอนนี้มี passwordless signin กดเข้าแอปทันทีไม่ต้องมากด signin บ่อยๆ เช่น Medium
  • Performance Monitoring
  • Test lab ตอนนี้มีของ iOS แล้วนะ ที่งานเขาเอาเครื่องมาตั้งให้เราดูเลย
  • Analytics สามารถดูข้อมูลอย่างละเอียดได้แล้ว
  • Project Setting ตอนนี้อยู่ในหน้า Firebase อย่างสวยงาม ใช้ง่าย ก่อนหน้านี้เหมือนเราไป set หน้า Google Cloud ซะงั้นอ่ะ
  • จาก Preditions ที่เปิดตัวไปในงาน Firebase Submit ตอนนี้ออก ML kit ที่ทำงานได้ทั้ง on-device และ on-cloud และสามารถ custom model ได้ด้วยจ้า

Jirayut Nimsaeng : GDG Cloud Bangkok

ฝั่ง cloud มี update เยอะมาก แต่สามารถพูดได้ทั้งหมดในเวลาอันจำกัดนี้

  • open cloud และ open source เริ่มดันเจ้า istio ซึ่งเป็น API Gateway คล้ายๆ Kong นั่นแหละ
  • มี 16 Regions และ 49 Zones ทั่วโลก
  • Cloud Firestore พวก CSS, Wordpress ที่ไม่ลง cloud ก็เอามาลงได้
  • ใช้ GPU บน container เราสามารถลดค่าใช้จ่ายในการทำ Machine Learning ได้ด้วย
  • Clusters อยู่ใน multiple data ไม่ต้องกังวลว่ามันจะร่วงนะ มีสำรอง ประมาณนี้
  • Apache Airflow
  • มี Certificate ใหม่มาด้วย
  • สามารถเข้าไปอ่าน update ใหม่ๆได้ที่
  • Cloud Next
  • สุดท้าย เข้ามา join กรุ๊ปได้นะ

Panjamapong Sermsawatari : GDE Web

Flutter

  • ตอนนี้เป็น beta version 3 แล้วนะ เราสามารถพิมพ์ได้ไวขึ้นเนื่องจากมี hint ขึ้นมาให้เราแล้ว (เราเรียกไม่ค่อยถูกแต่เห็นภาพนะ ฮ่าๆ) และ support Material Design ด้วยนะ เอาจริงเป็น base design ของ Flutter นะ เขาทำงานร่วมกัน
  • release preview 1 เริ่มนิ่งแล้ว
  • มี extension for VS Code ด้วย

Dev Tools

  • Eager Evalution แสดงผลแบบ real-time นับว่าเป็นข่าวดีของสาย web ที่อยากจะลองอะไรสักอย่างบน Chrome Console, function auto completion, argument hints
  • Lighthouse 3.0 เร็วขึ้นจากเดิม
  • Chrome OS สามารถ run Linux app ได้ เช่น Android Studio (อันนี้พี่ปันเจได้บ่นว่า หนักเครื่องพอสมควร ฮ่าๆ) และ Android App
  • Polymer ช่วยสร้าง web component เปิดตัว version 3.0
  • LitElement เป็น lit-html เอาไว้ทำ template
  • PWA starter kit ไม่ต้องมานั่งทำ manifest, service worker บลาๆอะไรพวกนี้เองแล้ว (ฮืออออ ดีใจ) แถมมี redux ให้ด้วยจ้า
  • มี .app domain เปิดตัวอย่างจริงจังในงาน Google I/O 2018 โดยมีข้อดีดังนี้

1) สั้น

2) อ่านพยางค์เดียว

3) สะกดง่าย

4) ตอนนี้คนยังใช้น้อย

5) https only

ราคาต่อปีคือ 490 บาท ถือว่าดีงามมากๆ

Apirak Panatkool : GDE UX

คนใช้ Material Design 1.5 ล้านแอปพลิเคชัน แต่เกิดปัญหาคือ แอปหน้าตาเหมือนกันไปหมด ดูเป็นแอปของ Google มากกว่าแอปของ brand ดังนั้นเขาเลยปล่อย Theme เพื่อแก้ปัญหานี้ สามารถแก้พวกสี font ขอบ ได้ตาม CI ของ product เลย

ใน material.io มี update ที่เราควรจะไปดู

1) Design ดูพวกเรื่องสี do/dont TextBox และ Toolbar นั้น ออกแบบตามสไตล์ของแต่ละ platform เลย

2) Develop ทาง material ได้เตรียม library ให้ทุกๆ platform เลย ไม่ว่าจะเป็น Android, iOS, Flutter, และ web

3) Tools มี tool ที่เป็นสะพานเชื่อมระหว่าง Developer และ Designer นั่นคือ Gallery นั่นเอง สามารถทำบน sketch ได้

จากนั้นทานข้าวเที่ยง แถวยาวมากกกกกกกกกกกก แต่อาหารก็อร่อยมากเช่นกัน เยเย้

อยากรู้ชื่อเมนูมาก อร่อยยย

และก็แว่บไปที่บูธของ KBTG อันเป็นสปอนเซอร์ของงานนี้ มีแจกเสื้อด้วยนะจ๊ะ

แล้วมีพวก IoT ให้เราได้เล่นบ้างนิดๆหน่อยๆ เช่นเจ้าตัวนี้ มันจะ detect แบบ real-time เลยว่า นี่คือวัถตุอะไร ถูกบ้าง ไม่ถูกบ้าง เราไม่ได้ซีเรียสนะ เพราะอะไรเหรอ เพราะว่ากล้องหันไปด้านบน มันเห็นโครงเพดานด้วยไง นางอาจจะงงๆว่าชั้นเห็นอะไรนี่

ก่อน session บ่ายเข้ามีอะไรแจกด้วย มาไม่ทันจ้า อด 555

What’s new in Android P : Somkiat Kitwongwattana GDE Android

เริ่มต้นด้วย session ยามบ่าย กับ session ที่ชาว geek Android ต้องรู้

และมีสไลด์ย้อนหลังด้วยยยย วู๊วววว~~

ตอนนี้ Android P เป็น beta 2 และเป็น final API ดังนั้น ไม่มีอะไร update เพิ่มแล้ว เย้

และของใหม่มีอะไรบ้างหล่ะ

  • ไม่มี crash dialog แล้วจ้า เพราะเขาค้นพบว่าการขึ้น dialog มี UX ที่แย่กว่าแอปเด้งออกไปเฉยๆ แต่ dev คนไหนอยากได้ก็เข้าไป setting ใน dev mode ได้จ้า
  • WiFi Round-Trip-Time พวกแผนที่ in-door ต่างๆนั้น ใช้ bluetooth และ WiFi ในการทำงานร่วมกัน
  • Display Cutout ก็ที่หน้าจอแหว่ง เหมือนอะไรนะ เหมือน iPhone X ไง เราสามารถเปิดใน dev mode ได้ เหมาะกับจอ 18:9 หรือ 18.5:9 เพราะ 16:9 มันจะเล็กไปเนอะ

มี 3 รูปแบบ คือ มุม, แหว่งบน, แหว่งบนล่าง

เราควร check app กับ cutout ก่อน release app ด้วยนะ, short edges ดูว่ามันทับกับ layout ไหม กำหนดผ่าน style ได้เลย แบบนี้

  • หลายๆคนคงจะเคยใช้ Bitmap เนอะ ที่ต้องดึงรูปจากอะไรสักอย่างออกมาใช้ต่อ จึงมีเจ้า ImageDecoder มาช่วยในการ create source และสามารถ decode และ resize ภาพให้พอดีได้
  • AnimatedImageDrawable รองรับพวก gif, WebP, Animation ต่างๆ
  • Biometrics API : รองรับ sensor ต่างๆ เช่น fingerprint ถ้ามือถือยี่ห้อนึงออก hardware sensor ใหม่ ไม่ต้องไปทำอะไรกับมันมาก มันจะผูกกับ binder เลย และหน้าตาเขาก็ทำมาให้ ดังนั้นใครเขียน fingerprint เอง ลบออกแล้วมาใช้ตัวนี้นะ
  • Notification -> Enhanced message experience สามารถทำ smart reply ให้แอปเราได้เลย
  • Camera API V2 ความยุ่งยากในการทำแอปกล้องเลย ฮ่า (น้องคนทำบ่นถึงความยาก) สามารถดึงกล้องใช้งานมากกว่า 1 ตัว รองรับ usb แล้วก็ external flash ได้
  • Text ตอนนี้มี Baseline Distanceสำหรับใส่ font ที่ไม่ใช่ Roboto (แบบ font อื่นๆที่ใส่ในแอป เช่น ในแอปฟังใจเป็นต้น) สามารถปรับพวกความห่างระหว่างบรรทัดได้ ประมาณนี้, background text measurement, magnifier แว่นขยาย, smart linkify วิเคราะห์ text -> TextClassified
  • Background Input & Privacy ถ้าแอปไม่ได้ active จะไม่สามารถเปิด camera, microphone, sensor manager ได้ เนื่องจากเรื่อง security เนอะ
  • เวลาเราจะ get serial ของเครื่อง ใช้ Build.getSerial() แทน และเพิ่ม permission ด้วยนะ ไม่งั้นดึงไม่ได้
  • Power Management มี AI ช่วยจัดการ ลํ้าสุดๆ แถมพี่เอกบอกว่ารายละเอียดมันเยอะมากๆเลยหล่ะ

App standby Bucket มันเป็นตะกร้าๆ แบ่งว่าเราใช้แอปนี้บ่อยแค่ไหน

  • Active แอปกำลังถูกใช้งานอยู่ ซึ่งนับการเข้ามาโดยเข้าแอป, foreground service และ click notification เท่านั้น
  • Working Set ใช้งานบ่อย แค่ตอนนี้เราไม่ได้เปิดแอปนี้เท่านั้นเอง
  • Frequent มีการเข้าใช้งานเป็นระยะๆ เช่น ออกกำลังกายทุกวันเสาร์ จะเปิดแอป Google Fit หรือแอปตรวจหวยที่บางคนใช้ประจำวันที่ 1 และ 16 เป็นต้น
  • Rare ไม่ค่อยได้ใช้ เช่น นานๆจะมีไปรษณีย์ส่งของมาหาเรา
  • Never ลงแอปในเครื่องแล้ว แต่ไม่ใช้

แต่ๆๆๆ อย่ากังวลไป มันเป็น dynamic ถูกย้ายได้ตลอดเวลานะ ต้องมี Launcher Activity ในแอป Notification ต้องกดได้ ส่วน FCM ก็อย่ายิงบ่อยนะ เดี๋ยว user ปัดทิ้ง ระบบจะเห็นว่า user รำคาญแอปนี้ ชอบส่ง noti มาอยู่ได้ เลยเสนอว่า block noti แอปนี้ไหมจ๊ะ ถ้า user block บ๊ายบายจ้า ยิง noti ไปเขาจะไม่เห็นแล้วรู้ไหม

ยกตัวอย่างสมมุติ แบบเมื่อก่อนไม่ค่อยเข้าแอปฟังเพลง (Rare) พอส่งเพลงจีบสาวแล้วเข้าแอปเพลงแล้วส่งรัวๆ (active or working set)

  • Background Retribution : กรณีที่โดนเก็บ คือ wake lock เกิน 1 ชั่วโมง แล้วก็ background service บน API ตํ่ากว่า 26 แล้วไม่ update sdk version ในแอปเรา
  • Battery Saver ปิด background service และการเข้าถึง internet และโหมด doze มี solution คือ charing มือถือตลอดเวลา เช่น grab สำหรับ driver เป็นต้น

ถ้าอยากรู้ว่าแต่ละ state มีอะไรบ้าง จิ้มเข้าไปดูได้จ้า

  • Testing ใช้ command line ในแต่ละ case ได้ด้วยแหะ

ปล. มี FC สาวอายุ 24 ปี บอกว่าติดตามพี่เอกมานานแล้วด้วย ><

Hello, Android Studio 3.2 & Android Bundle : Somkiat Kitwangwattana GDE Android

กลับมาพบกับ speaker คนเดิม เพิ่มเติมคือ session ใหม่จ้าาาา

  • เจ้า Android Studio 3.2 นั้น base on IntelliJ 2018.1.1 นะจ๊ะ
  • จริงๆการปล่อย version ของ Android Studio นั้น จะมี
    canary -> beta -> stable
    ซึ่งเจ้า beta กับ stable สามารถลงควบคู่กันได้ และทำงานโปรเจกเดียวกันโดยไม่ต้องแก้อะไร (ซึ่งข้อเสียที่เราลองลงควบคู่กัน คือ หนักเครื่องนั่นเอง ฮ่าๆ)

เนื้อหาแบ่งเป็น 2 ส่วน ตามหัวเรื่องเนอะ

Android Studio 3.2

1) Developer

  • Android X : Migrate code มาเป็นตัวใหม่ ถ้าโปรเจกใหม่ก็ไม่ต้องทำอะไรเพิ่มเนอะ
  • Navigation หน้าตาก็จะคล้ายๆ Storyboard อ่ะ
  • App Bundle
  • Slice Provider Generator
  • sample data ช่วยคิดว่าตอนที่เรา mock up UI ว่าที่ทำไป แสดงผลตามที่เราตั้งใจไว้หรือไม่ และมี preview ด้วย อันนี้เราว่าดีอ่ะ
  • What’s new assistance อันนี้จะบอกว่าตอนนี้มีอะไรใหม่ๆบ้าง

2) Build

  • D8 ใช้แทน Dx
  • R8 ใช้แทน Proguard
  • ลบ CPU Architecture เก่าๆบางตัวทิ้งไป
  • แน่นอนว่ามัน build เร็วขึ้นถึง 16% performance ดีสุดๆ
  • AAPT2 โดนย้ายไปอยู่ใน Google Maven Repository ถ้านึกไม่ค่อยออกว่าคืออัลไล ลองเปิด build.gradle ของโปรเจก ก็จะเจอ google() ซึ่งตัวใหม่จะโอเคขึ้น เพราะพอมาอยู่ด้วยกัน ก็จะได้ update ใหม่ได้ตลอดเลย
  • multidex

3) Test

  • Emulator ไม่ต้องนับหนึ่งถึงสามล้านแล้วววววววววว เพราะมันเร็วขึ้นมาก ลบเจ้า GenyMotion ทิ้งไป 55555555
    - Snapshot โหลด state แล้วกลับมาทำใหม่
    - Screen Recording ทำได้แล้วเน้อ นํ้าตาจิไหล
    - Virtual Scene ของกล้อง เหมือนเราถ่ายรูปจริงๆมากขึ้น มีฉากสวยงาม มี TV แปะ QR Code เผื่อจะลองสแกน QR Code งี้
  • ADB connection assistance

4) Optimize

  • Energy Profiler
  • profilling Recorder

Recap ทั้งหมดในสไลด์เดียว และแหล่งศึกษาหาอ่านเพิ่มเติมจ้า

Android Bundle

  • publishing format : เราจะไม่สามารถ download นอก store มา install เองได้ เพราะ เครื่องแต่ละคนก็ไม่เหมือนกันเนอะ มันจะมองเป็น bundle นึง ซึ่งเจ้า bundle ก็จะคล้ายๆกับ metadata file อ่ะ
  • เป็น dynamic เนอะ
  • spilt APK ติดตั้ง Configuration หลายแบบ แต่บนแอปมีแบบเดียว ซึ่งรองรับ Lolipop ขึ้นไป
  • ทำ build bundle ได้
  • dynamic feature คือแบ่งแต่ละ feature เช่น ทำแอปอะไรสักอย่างนึง คนนี้ใช้ feature A คนนึงใช้ feature B แล้ว module แยกกัน แล้วค่อยโหลดเท่ามาตอนที่คนนั้นๆเรียกใช้

Update: Session นี้ Slide ย้อนหลังมาแล้วจ้า

Android Jetpack Android X : Theerasan Tonthongkam. Eatigo

จริงๆเราก็เคยอ่านบล็อกพี่คนนี้อยู่เหมือนกันนะ

หลายๆคนคงจะเห็นแล้วเนอะว่า Android Jetpack เป็นการรวบรวมซุปเปอร์ฮีโร่ เอ้ยยย support library ต่างๆเข้าด้วยกัน อย่างอันใหม่ใสกิ๊กมี KTX, Slice แล้วเป็น dependency ชุดใหม่ นามว่า Android X

พี่เขาเล่าความเป็นมาของ support library ของแต่ละ version แล้วก็ hint error meassage เกี่ยวกับเลข version ต่างๆ ที่มี alpha beta ทั้งหลายแบบงงๆ

1) bug refector -> Android X

  • Artifacts ดูหน้าตาชื่อ dependency นั่นสิ
  • Android Support Library จะจบที่ 28.0.0 ไม่มี feature อะไรมาใหม่นะ และเริ่มต้นใหม่ที่ Android X 1.0.0 มีการเรียงเลขเป็น major.minor.bug ถือว่าเป็นหลักการที่เราก็น่านำไปใช้ในแอปเราได้เหมือนกัน ในการทำ version app
  • ตัว dependency จะมี format ที่สวยงาม คือ androidx.<feature>:<classname> กับอีกอันที่มี feature รองหน้า classname มั้ง ถ้าจำไม่ผิด

2) Migration Tool : Android Studio 3.2 canery 15 ขึ้นไป

  • migrate เป็น version 28 ก่อน แต่มันจะพัง เพราะมี bug อยู่ ในรูปคือตัวอย่างเน้อ อาจจะเจอแบบนี้ได้ตอนทำ RecyclerView
  • inspect code, full path, 3rd party -> jetifier

มีการ demo project ส่วนตัวที่เป็น recyclerView ให้เราได้ชมกันด้วย รองรับ touch, mouse event และการันตีเรื่อง lifecycle ด้วยนะ

แล้วก็ Slice ทำให้ส่วนใดส่วนหนึ่งขึ้นบน Google app มี provider template ให้

โค้ดทั้งหมดอยู่ที่นี่จ้า

Android X ดูน่าใช้เนอะ แต่ๆๆๆๆๆๆๆ อย่าเพิ่งใช้บน production เพราะยังเป็น alpha อยู่เลย เตือนแล้วนะ

*Kotlin Extension -> Android KTX

ปล. ลองอ่านเรื่องนี้ต่อจาก speaker ท่านนี้ได้เจ้า ตอนนี้มีมเซฟป้อมนั้น มีความหมายเอามากๆ ฮ่าๆ รอปล่อยตัวเต็มแล้วค่อยใช้บน production นะ

Update: Slide มาแล้วจ้า ส่วนบล็อกกำลังตามๆมาจ้า

hello KTX : Verachad Wongsawangtham, Tipatai Puthanukunkit, Agoda

แบ่งเป็น 3 ประเด็นหลักๆ

1) Pain point

  • บางอย่างผูกกับ Java อยู่ เช่น listener, as Model Class, หรือ ::class.java (เจ้านี่คือคำตอบว่ามีอะไรใน Kotlin ที่เราไม่ชอบ)
  • เนื่องจากมันไม่มี static เวลาใช้ TextUtills หรือ method ต่างๆ มันก็ไม่ขึ้น auto ให้ ทำให้เราเกิดความเข้าใจผิดว่าใช้ท่านี้ไม่ได้ จริงๆมันได้
  • มี composite type เยอะแยะ เช่นการวาดรูปต่างๆ มันไม่ smooth (อันนี้หมายถึงการใช้งานนะ ไม่ใช่วาดออกมาไม่สวย) มันต้องใส่ค่าซ้าย บน ขวา ล่าง
  • ดังนั้นเจ้า KTX ทำให้ชีวิตชาว Android Kotlin Developer ง่ายขึ้น แบบนี้

2) Extensions อันนี้มี demo ให้ดู อย่างเพลินอ่ะ

  • Spannable Text โค้ดจะเป็นประมาณในรูป คือ เราสามารถ custom text เป็นรูปแบบต่างๆตามใจได้ง่ายกว่าเดิม ปกติมันจะทำยากใช่ไหมหล่ะ
  • inline มีการเปลี่ยนโค้ดอะไรบางอย่างที่ไม่สวย เป็น inline function ซะ ดูสวยงามใช้ง่ายขึ้นเยอะ
  • reified type

โค้ดทั้งหมดอยู่ในนี้นะ

3) Final Take Away

หลายๆคนคงจะเห็น Event นี้ใน Facebook แล้วเนอะ งาน MobileConf 2018 ที่รวบรวมท้ัง iOS, Android, cross platform ซึ่งตอนนี้รับ speaker และ sponsor อยู่จ้า

ปล. ก่อนจบมีคำถามนึงน่าสนใจ มีใครอยากเขียน Kotlin แล้วที่ทำงานไม่ให้เขียนบ้าง ลองดู session นี้จากงาน Android Bangkok 2018 ย้อนหลังได้จ้า ว่าการเปลี่ยนถ่ายยุคสมัยต้องเจอกับอะไรบ้าง

Android Navigation : Nonthawit Doungsodsri, Nextzy

บางคนคงจะเคยอ่านบล็อกของเดอะแข็งมาบ้างแล้ว (รวมถึงเราด้วย) ทำไมถึงชื่อนี้หล่ะ เพราะเจ้าตัวชื่อนํ้าแข็งจ้า

ก่อนอื่น ไปกด download slide มาดู แล้วเริ่มไปพร้อมกันเลยจ้า

ด้วยความที่ตัวสไลด์อ่านเข้าใจตามได้ไม่ยาก ก็เลยไม่ค่อยได้จดหรือถ่ายรูปอะไรมาก ถ่ายแค่ตอน demo เอง แหะๆ

ก่อนที่จะเริ่มเนื้อหาจริงจัง จะเล่าถึง Activity และ Fragment เป็นการทบทวนความรู้และทำความเข้าใจตรงกันก่อน ในการเรียกใช้ ซึ่ง pain point ของเรื่องนี้ คือ Activity และ Fragment เรียกไม่เหมือนกัน ในการแปะหน้า ส่งค่า บลาๆ แล้ว lifecycle ก็ตามกันด้วย

ดังนั้น เจ้า Navigation จะลดความยุ่งยากในการเรียกลง โดยทำผ่าน xml ทั้งหมด ด้วยคำสั่งบรรทัดเดียว

และมี demo ให้ดู หน้าตาก็จะคล้ายๆเจ้า Storyboard ใน XCode เนอะ ฮ่าๆ แล้วก็ลากเส้นให้ดูตาม flow ที่กำหนดไว้ แน่นอนผลออกมาทำงานได้ดังใจหมาย

การใช้คำสั่ง ใช้วิธีในการโยน id ของ action ซึ่งดีกว่าใช้ fragment ซึ่งเรากำหนด option ได้ผ่าน code แต่ผิด concept ในวันนี้จ้า

// must do
Navigation.findNavController(view).navigate(
R.id.action_next,
bundle,
options)
// wrong concept
Navigation.createNavigateOnClickListener(
R.id.createBlogFragment,
bundle)

Safe Arguments ช่วยแก้ปัญหาใช้ชื่อผิด ประเภทตัวแปรที่ใช้ได้ มี String, Int, Boolean จะคล้ายๆเจ้า Data Binding

มีการทำ Deep Link ให้ดูด้วย Explict ยังแอปอื่นๆ เช่น Widgets และ Implicit แอปอื่นมาแอปเรา เช่น เปิดจากเว็บเข้ามา

ถ้ามีหลายๆ graph ต้องใส่ class เดียวกัน

ปล. อย่าเพิ่งใช้บน Production นะเออ มัน alpha อยู่

Advanced Topics (DB/R8-Nitrogen-ART) : Inaki Villar, GDE Android

มี 3 ประเด็นที่คุณนากินำเสนอจ้า

1) Testing : เล่าถึงการทำ Test ในระดับต่างๆ โดยจะเน้นที่ Unit Test โดยมี library ที่พูดหยิบยกขึ้นมาพูด

  • ฝั่ง Kotlin ก็มี library ที่เอาไว้ทำ Test ด้วยแหะ
  • Robolectric 4.0 support AndroidX และ Espresso

สามารถอ่านต่อได้ที่นี่นะ เราอ่านไปรอบนึงแล้วแต่ลืม ฮ่าๆ

  • Nitrogen

2) D8/R8 :

  • D8 : dex file ปัญหา multidex ที่มีหน้าตาต่างๆมากมายทั้งหลายจะหมดไป เจ้านี่จะช่วย solve ซึ่งอยู่ใน gradle 3.0 ขึ้นไป จาก session ก่อนหน้านี้เราก็รู้แล้วว่าประสิทธิภาพมันดีจริมๆ

อันนี้เป็น case study จากแอป Agoda จ้า พบว่าลดทั้งขนาดและเวลากันเลยทีเดียวในการ build app แต่ละที

  • R8 : ลดการใช้ proguard ทั้งหลายลง แต่ยังปลอดภัยอยู่นะเออ

3) ART : ก่อน lolipop จะใช้เจ้า Dalvik ใช่ไหมหล่ะ เขามีเปรียบเทียบความต่างให้ดูด้วยนะ

อันนี้เป็นเรื่องของ JIT จา

แล้วเรื่อง Inline Function เขาแนะนำให้อ่านบล็อกนี้ ฮ่าๆๆๆๆๆ (มีความ Tie-in รู้สึกดีใจ 555)

และ video ที่เกี่ยวกับ session นี้ เผื่ออยากฟังเพิ่มเติม

ML Kit for Firebase : Jirawat Karanwittayakarn GDE Firebase, Virot Chiraphadhanakul GDE ML

อันนี้สนุกมากๆ มันส์สุดๆ tie-in ก็ด้วย ฮ่าาาๆๆๆ ไม่ใช่สิ demo อย่างเจ๋งเลยอ่ะ ใน session นี้มีพี่ต้ากับพี่ตี๋สลับกันเล่านะ

จริงๆแล้ว Deep Learning มันมีมานานแล้ว (เราก็เคยลงเรียนวิชาพวกนี้ตอนปี4) แต่เพิ่งมาบูมเอาช่วงนี้ เพราะเริ่มมีการนำ data มาใช้มากขึ้นนั่นเอง

รูปที่อธิบายเรื่อง Neuron Network เป็นอย่างดี คือรูปนี้นั่นเอง เป็นรูปที่เราเห็นแล้วชอบมากๆ เข้าใจง่ายดี

เราถึงขั้น save เก็บเลยทีเดียว ชอบรูปนี้มากๆเลย

เมื่อก่อนเจ้า Machine Learning ยังไม่แม่นเท่าสมัยนี้นะ แต่เขาก็พัฒนามาเรื่อยๆ จนมี error ~3% ซึ่งน้อยกว่าคน ซึ่งมี error 5%

ในสมัยนี้คนก็ใช้มือถือ smqrtphone กันเยอะเนอะ (ซึ่ง Smartphone ในทางทฤษฏี คือ เป็น Embedded Device ตัวนึง) ซึ่งมีการเอาไปใช้แบบ on-device ในหลายๆแอป เช่น

  • Google Translate ถ่ายรูปป้ายแล้วให้มันแปลภาษาให้ ตอนนี้มี text-to-speech ด้วยหล่ะ
  • Yousician สอนคนเล่นดนตรี มันจะรู้ว่าเรากำลังดีดกีตาร์คอร์สไหน คีย์อะไรอยู่ ซึ่ง implement ด้วยภาษา C++
  • Evernote คือแอปจดโน้ตนั่นแหละ สามารถ detect ตัวหนังสือได้

ซึ่งเมื่อก่อนทำได้นะ ในแอป แต่ยาก

ดังนั้นจึงมีเจ้า TensorFlowLite มาช่วยทำ Machine Learning แบบ on-device

ซึ่งมือถือรุ่นนึงที่ใช้เจ้า Nerual Network API ของ Android นั่นคือ เจ้า P20 นั่นเอง

ML kit for Firebase จะทำให้ชีวิตเราง่ายขึ้น มี 5 ตัวเช่นกัน คือ Text Recognition, Image Labeling, Barcode Scanning (รวมพวก QR code ด้วยนะ), Face Detection และ Landmark Recognition

และเราสามารถ custom model ได้ด้วยนะ เช่น ดอกไม้นี้คือดอกไม้พันธุ์อะไร ปลาที่ตกได้คือปลาอะไร เราสามารถ upload model บน firebase ได้เลย

เจ้า Label Detection API ถ้า on-device ก็ฟรีนะ ส่วน on-cloud ใช้ฟรี 1,000 API call ของแต่ละ feature นะ หมายความว่า เราใช้ Image Labeling ได้ฟรี 1,000 ใช้ Text Recognition ได้ฟรี 1,000 นับแยกประมาณนี้นะ

ความแม่นยำของ on-cloud จะมากกว่า on-device นะ ดูรูปเอาได้

ใน Firebase จะเป็นไฟล์ TensorFlowLite นะ ซึ่งพอเอามาย่อจากเจ้า TensorFlow อาจจะมี overfit case เกิดขึ้นได้นะ

ระหว่างนี้มี demo ให้ดูแต่ละตัวเลย ซึ่งรูปที่จะอัพไปประมวณผลแบบ on-cloud นั้น พี่ตี๋แนะนำว่าควร resize รูปก่อนอัพขึ้นไปนะจ๊ะ

เริ่มที่ Text Recognition กันก่อนเลยจ้าาา ถุง Starbucks ก็อ่านได้อยู่แล้ว ส่วนขวดนํ้าในงานภาษาไทยและอื่นๆอ่าน on-cloud จะได้ผลแม่นยำกว่านะ และรูปปราบเซียนแบบคนอ่านตัวหนังสือไม่เห็น นางก็อ่านได้จ้า กราบบบบบ

ต่อมาคือ Face Detection พี่ตี๋ขออาสาสมัครขึ้นมาหนึ่งคน ให้หลับตาและทำหน้าบึ้ง และดูผลว่าเป็นอย่างไร ปรากฎว่าเห็นตาผิดสองข้างกับไม่ยิ้ม มั้ง

และลองรูปเฌอปราง (ซึ่งถ่ายรูปคามิโอชิตัวเองไม่ทัน ฮ่าๆ) กับแพตตี้ ผู้เป็นสมบัติของชาติฝ่ายหญิง

จริงๆช่วง Demo เริ่มมีคนแซวพี่ตี๋แล้วจ้า Tie-in บริษัทที่ทำงานอยู่ ฮ่าๆ Wallpaper แซลลี่กับแอปอะไรเขียวๆนะ ฮ่าๆ

ไหนๆโดนแซวขนาดนี้แล้ว ในส่วนของ Image Labeling นั้น พี่บราวน์ก็มาจ้าา คือไหนๆ ก็ไหนๆแล้ว ไหนๆจะแซวกันขนาดนี้แล้ว

ผลออกมาเป็นดังนี้ ขยายรูปเอาแล้วกันนะ ฮ่าๆ แต่ไม่เห็นว่าเป็นพี่บราวน์ เห็นเป็นตุ๊กตาหมีมั้งถ้าจำไม่ผิด

จริงๆมีตัวอย่างอื่นๆอีกนะ ซึ่งอ่านในบล็อกพี่ตี๋น่าจะเห็นภาพชัดกว่า

ในอนาคตเราสามารถ convert file TensorFlow เป็น TensorFlowLite ใน Firebase ได้ด้วยนะ แล้วก็ตัวอื่นๆที่จะมาเสริมทัพ เช่น Face Contours ถ้าอยากเล่นก่อนใครไปสมัครที่นี่ได้เลย

กรอกผ่านนี่ได้เลยหรอเนี่ยแอบงง ถ้าไม่ได้ จิ้ม https://docs.google.com/forms/d/e/1FAIpQLSd7Uzx6eepXeF5osByifFsBT_L3BJOymIEjG9uz1wa51Fl9dA/viewform

ปล. เราอยู่ไม่ถึงตอนจบ แต่ได้ยินมาว่า Best Close Remark Speech เลยทีเดียว

แต่มีคนสรุปเสร็จก่อนเราอีก กราบจ้าาา

อันนี้เป็นเกร็ดเล็กเกร็ดน้อย

  • จริงๆคืนก่อนวันงาน พี่เอกได้ตั้งกระทู้ถามว่าแอปไหนใช้ Kotlin เขียนบ้าง และตอน keynote ฝั่ง Firebase โดยพี่ตี๋เอง ก็บอกว่าแอปไหนใช้บ้างในไทย เราเองมีไอเดียนะ ทำเว็บที่เป็น Kotlin base รวบรวมแอปที่เขียนด้วย Kotlin และใช้ Firebase จะได้มีข้อมูลกลางชุดเดียวไปเลย >> สนใจมาคุยกันได้นะ ช่วยๆกันทำ ฮ่าๆ
  • อยากทำ side project คือ เพจแนะนำการใช้งาน Google Assistance ฮ่าๆ
  • ได้เจอหลายๆคนเลย มีน้องจ็อปจอห์น คู่หูเด็กฝึกงานสายเว็บเมื่อปีก่อน (โอชิคุณนุ้ยด้วยยย เอ๊ะนี่เราเผาเรื่องนี้เป็นรอบที่สองนี่นา) ทีมKotlin รุ่นน้องคณะ และอีกหลายคน แต่ที่รู้ว่ามางานแต่ไม่ได้เจอ ก็มีเช่นกัน 555
  • ได้ลองใช้ Google Lens แบบจริงจัง เผื่อช่วยเขียนบล็อกได้บ้าง ซึ่งเจ้านี่จะมีที่ Google Assistance และ Google Photo และผลที่ได้คือ Agenda ไม่ต้องมาพิมพ์เองหล่ะ ก็อปแปะจากที่มันอ่านได้, เจ้า QR code ก็อ่านได้ แปะได้เลย ส่วนที่เราจดนั้น มันคงอ่านยากจริงๆแหละนะ…..
กด Text selection แล้วก็ก็อปวางได้เลย จัดวางนิดๆหน่อยๆ ไม่ต้องพิมพ์เอง, QR Code สบายหล่ะ, ส่วนที่จด note เออนางรู้เว้ยว่าพูดถึงนางอ่ะ

สุดท้ายนี้ขอบคุณทาง Google Developer Group Thailand ที่จัดงานนี้ขึ้นมานะคะ และสปอนเซอร์ที่มา support งานนี้ด้วยนะคะ

และท้ายสุด Android Developer ทุกท่านค่ะ มาเขียน Kotlin กันได้แล้วค่าาาาาาา เพื่อชีวิตที่ดีและแฮปปี้นะจ๊ะ และทาง Google นี่เขา First Support Kotlin เลยนะจ๊ะ

ปล. SongShakes เป็นแอปที่เขียนด้วย Kotlin นะ ใกล้คลอดแล้ว อย่าลืมมาเล่นกันนะ เป็นแอปประกวดเพลง cover ต่างๆน๊าาา

--

--

Minseo Chayabanjonglerd
MikkiPastel

Android Developer | Content Creator AKA. MikkiPastel | Web2 & Web3 Contributor