io-00
วันนี้ไปร่วมงาน Google I/O 2016 Extended Bangkok
เป็นงานที่สรุปเนื้อหาต่าง ๆ จากงาน Google I/O 2016 มาให้อย่างเต็มอิ่ม
อาจจะบอกได้เลยว่าข้อมูลมันเยอะมาก ๆ (Information Overflow)
โดยเนื้อหาประกอบไปด้วย

  • Google Assistant
  • Google Home
  • Mobile Development
  • Web Development

แต่ในงานครั้งนี้ผมเลือกที่จะฟังเฉพาะ Mobile Development เท่านั้น
มาดูว่ามีอะไรที่น่าสนใจบ้าง ?

1. มาดูความสามารถต่าง ๆ ของ Android N

io-02

โดยมี session นี้จะทำการแนะนำความสามารถใหม่ ๆ
ทั้งสำหรับ Android development และ Android N

ขอบอกเลยว่ามันเยอะมาก ๆ เช่น

  • Constraint Layout ซึ่งต่อไปน่าจะเป็น layout หลักของการพัฒนา App เหมือนกับ Auto Layout ใน iOS เลยนะ
  • Multi-window หรือ Split screen สิ่งที่ต้องสนใจมาก ๆ คือการจัดการ Life cycle ของ Activity ให้ดี มิเช่นนั้นต้องแก้ไขกันวุ่นวาย !!
  • Picture-in-Picture mode ใน TV ซึ่งสามารถ Drag & Drop รูปข้าม Activity หรือหนาจอได้
  • Notification รูปแบบใหม่ทั้ง template, custom view และ direct reply ที่ iOS ทำได้นานล่ะ !!
  • ในส่วน Setting ของ Android phone เช่น
    • Display size คือสามารถขยาย size ของทั้งหน้า ไม่ใช่เฉพาะ font ทำให้ App สวยขึ้น
    • Quick setting
    • Multi Locale
  • Doze ใน Android N หรือโหมดหลับลึกของ Android เพื่อช่วยทำให้มือถือประหยัด Batt เมื่อไม่ใช้งาน เป็นเรื่องที่นักพัฒนาต้องเรียนรู้และเข้าใจ
  • Project Svelte แปลว่าผอมเพรียว เพื่อปรับปรุงให้ Android สามารถทำงานบน hardware หรือ อุปกรณ์ที่เก่า ๆ หรือ spec ต่ำ ๆ ได้ ทั้งลดการใช้งาน RAM และ Batt นั่นเอง โดยงานหลาย ๆ อย่างจะถูกตัดทิ้งเช่น CONNECTIVITY_ACTION, ACTION_NEW_PICTURE และ ACTION_NEW_VDO ซึ่งให้ไปใช้งานผ่าน JobScheduler ที่เป็น background process แทน
  • Data saver mode ใน Android N ช่วยลดจำนวน data ที่ใช้งานของ App
  • Direct boot ปรับปรุงการทำงานของ app เมื่อเครื่องทำการ reboot ขึ้นมาใหม่
  • Scoped Directory Access เป็นการกำหนด permission ในการเข้าถึง external storage บนเครื่องจาก App ซึ่งสามารถกำหนดเฉพาะ directory ที่ต้องการเท่านั้น เนื่องจากในรูปแบบเดิมสามารถเข้าถึงได้ทั้งหมดเลย ซึ่งน่ากลัวมาก ๆ เป็นการปรับปรุงที่ดีมาก ๆ
  • ว่าด้วยเรื่องของ Vulkan ซึ่งเป็น 3D render ใหม่ซึ่งเหมือน ๆ กับ Open GL นั่นเอง

จากนั้นมาเรื่องที่เกี่ยวกับ Development กันบ้าง
ซึ่งก็มิใช่น้อยหน้าไปกว่ากันเลย

  • ADB shell ที่ทำงานรวดเร็วขึ้น นั่นแสดงว่าติดตั้ง App ได้เร็วขึ้น
  • NDK ตัวใหม่
  • สนับสนุน VR หรือพูดง่าย ๆ คือ 3D mode นั่นเอง
  • ตัวที่สำคัญมาก ๆ สำหรับนักพัฒนาคือ Support Library แน่นอนว่าพลาดไม่ได้เลย เช่น
    • Vector Drawable (VD) ช่วยทำให้ขนาดของ App เล็กลง ซึ่งมีความสำคัญอย่างมาก
    • การเลือกใช้การบีบอัดของรูปภาพมันสำคัญมาก ๆ ทั้ง VD -> WebP -> PNG -> JPG
    • Night mode
    • ใช้งาน RecyclerView เป็นหลักเลยนะ
    • Design Support Library คือสิ่งที่นักพัฒนาอย่าพลาดนะ
    • Bottom sheet
    • Chrome Custom Tab

io-03

ยังไม่หมดนะ มี Instant App มาอีก
ทำให้ผู้ใช้งานสามารถใช้งาน App ได้โดยไม่ต้องติดตั้ง
ถือว่าเป็น killer feature ของ Android เลยก็ว่าได้
แต่มันก็ส่งผลกระทบต่อนักพัฒนาไม่น้อยนะ
เนื่องจากต้องทำการ build app แยกออกมานิดหน่อย
และตอนนี้ยังเป็น beta อยู่ซึ่งสามารถขอทดสอบใช้งานได้นะ

พักหายใจหายคอกันหน่อยนึง ….

2. มาดูความสามารถใหม่ ๆ ของ Android Studio 2.2

ขอบอกอีกแล้วว่า มันเยอะมาก ๆ โดยแบ่งออกเป็น 4 กลุ่มใหญ่ ๆ คือ

  1. Design
  2. Develop
  3. Build
  4. Test

io-01

มาดูกันว่าในแต่ละกลุ่มมีอะไรที่น่าสนใจกันบ้าง

กลุ่มที่ 1 :: Design ประกอบไปด้วย
Layout Editor, Constraint Layout และ Layout Inspector
ซึ่งทำให้การออกแบบ UI ของ APP ง่าย สะดวกและรวดเร็วขึ้นมา
รวมทั้งปรับปรุงเรื่องของ Responsive และ Performance อีกด้วย
เนื่องจาก Constraint Layout ช่วยลดความซับซ้อนของ View ลงไปอย่างมากนั่นเอง
ชีวิตของนักพัฒนาน่าจะดีขึ้นกว่าเดิมมาก ๆ ที่ต้องมานั่งแก้ไขไฟล์ XML กันเลย

กลุ่มที่ 2 :: Develop ประกอบไปด้วย

  • เริ่มด้วยตัวทีเด็ดคือ Firebase plugin ช่วยทำให้การพัฒนา App มันง่ายและสะดวกขึ้นอย่างมาก
  • Sample code browser ช่วยทำให้นักพัฒนาสามารถดูตัวอย่าง code สำหรับการใช้งาน API ต่าง ๆ จาก Google Sample

กลุ่มที่ 3 :: Build ประกอบไปด้วย

  • Instant Run ซึ่งตอนนี้ทำการปรับปรุงดีขึ้นอย่างต่อเนื่อง ทำให้การ build project รวดเร็วขึ้น (ใครปิดไว้ ก็เปิดซะนะ !!)
  • Merge Manifest Viewer
  • Project Structure Dialogue ยังไม่ออกมาให้ใช้นะ !!
  • ปรับปรุง Jack compiler ช่วยทำให้ใช้การ build รวดเร็วขึ้น แต่จากการใช้งานจริง ๆ ยังไม่ดีเท่าไรนัก !!

กลุ่มที่ 4 :: Test ประกอบไปด้วย

  • การปรับปรุง Android Emulator ให้ดีขึ้นเป็นอย่างมากรวมทั้งความสามารถครบครัน ทำให้ไม่ต้องไปใช้ Emulator อื่น ๆ แล้ว แถมยังบอกว่าเร็วกว่า device จริงอีกนะ !!
  • Espresso Test Recorder ช่วยทำให้การทำสอบ UI ง่ายขึ้น ซึ่งมีใน Android Studio 2.2 Preview 3 ขึ้นมานะครับ
  • APK Analyzer ช่วยทำให้เราวิเคราะห์ไฟล์ APK ว่าเป็นอย่างไร เช่นขนาดของไฟล์ จำนวน method และขนาดของ resource ต่าง ๆ ทำให้เราสามารถรู้ปัญหาและหาทางแก้ไขได้ง่ายขึ้น
  • Firebase Test Lab ช่วยทำให้เราสามารถทดสอบ App ได้เลย แต่ต้องเสียเงินนะ !!

ปล. มีข้อมูลเกี่ยวกับ Web Development นิดหน่อยคือ Progressive Web App (PWA)

เน้นย้ำว่า เป็นแนวคิดที่น่าสนใจมาก
ไม่ใช่เครื่องมือ หรือ เทคโนโลยีอะไร
โดยที่ PWA ประกอบไปด้วยความสามารถต่าง ๆ ดังนี้

  • Push notification
  • Service Worker
  • Tool ประกอบไปด้วย Angular Mobile Toolkit, Polymer App Toolkit และ SW-Toolbox, SW-Prefetch
  • ทำงานร่วมกับ 3-parties ต่าง ๆ ได้ เช่น ionic framework

 

ยังมีการสรุปใน Part 2 ไว้อีกเรื่อง Espresso UI Test และ Firebase