android-productive-00
ช่วงนี้ดู Slide และฟัง session ต่าง ๆ จากงาน DroidCon Berlin
มี session ที่น่าสนใจเกี่ยวกับ Android เยอะเลย
หนึ่งในนั้นคือ Effective Android Development
ทำการอธิบายว่า นักพัฒนา software นั้น
ไม่ใช่มีเพียงความรู้ความชำนาญในเรื่องนั้น ๆ เท่านั้น
แต่ยังต้องรู้จักเลือกเครื่องมือให้เหมาะกับงานอีกด้วย

Android ก็เช่นกัน
เพื่อเพิ่ม productivity ในการพัฒนาระบบ
รวมทั้งทำให้ App ที่พัฒนามีความเสถียรมากขึ้น
ไม่ใช่เพียงนั่งทำงานไปวัน ๆ เท่านั้น

มาดูกันว่ามีคำแนะนำดี ๆ อะไรบ้าง ?

เริ่มจาก Android Studio

ทำการตรวจสอบไฟล์ manifest ก่อนที่จะทำการ build ไฟล์ APK ด้วย Merged Manifest Viewer
ซึ่งเป็น feature ที่มีมากับ Android Studio 2.2
ใช้งานง่าย ๆ แค่เปิดไฟล์ AndroidManifest.xml ก็จะเห็น tab Merged Manifest แล้วนะ
แสดงผลการทำงานดังรูป

android-productive-01

หัดใช้ Find Sample Code กันบ้างนะ !!
สำหรับการเรียนรู้ API ใหม่ ๆ แน่นอนว่ามีมากับ Android Studio 2.2 นั่นเอง
แสดงดังรูป

android-productive-02

รู้กันไหมว่า Android Studio มันมี Local History นะ
ตามจริงมันเป้นความสามารถของ IntelliJ IDEA นั่นเอง
ถ้าเราต้องการอยากรู้ว่า code ในเครื่องเรามีการเปลี่ยนแปลงอะไรไปบ้าง (หลังจากการ commit)
สามารถเข้าใช้งานโดยการ click ขวาที่ไฟล์นั้น ๆ
จากนั้นทำการเลือก Local History
หรือไปที่เมนู VCS -> Local History ก็ได้เหมือนกัน
แสดงผลดังรูป

android-productive-03

เมื่อทำการเปลี่ยนแปลง code และ resource ต่าง ๆ แล้วอยากเห็นผลเร็ว ๆ
เป็นความเจ็บปวดระดับโลกของชาว Android
แน่นอนว่า วิธีการแก้ไขปัญหาคือ ใช้เงินซื้อเครื่องแรง ๆ สิ
แต่ในปัจจุบันก็มีเครื่องมือช่วยมากขึ้น (แต่ก็ยังต้องใช้เครื่องแรง ๆ อยู่ดี)
ไม่ว่าจะเป็น JRebel และ Instant Run
ทำให้เราเห็นผลการเปลี่ยนแปลงได้อย่างรวดเร็ว
โดยที่ JRebel นั้นจะมีความสามารถมากกว่า แต่ก็ต้องแลกมาด้วยค่า licence นะครับ
ซึ่งใน session ทำการสรุปข้อแตกต่างระหว่างทั้งสองไว้ดังนี้

android-productive-04

มาดูเครื่องมืออื่น ๆ ที่ช่วยในระหว่างการพัฒนาบ้างดีกว่า

เป้าหมายเพื่อช่วยวัดประสิทธิภาพในการทำงานของระบบ
สิ่งที่ต้องรู้ก็คือ

  • จะวัดความเร็วในการทำงานอย่างไร ?
  • จะทำการแก้ไขและปรับปรุงอย่างไร ?

เริ่มด้วยการ debug และวิเคราะห์การทำงานในของแต่ละ method ด้วย Hugo กันเลย
รวมทั้ง pidcat สำหรับดู log แบบง่าย ๆ
จะได้ไม่ต้องมานั่งอ่าน log ใน logcat กันต่อไป
เนื่องจากมันอ่านยากมาก ๆ

ถ้าต้องการดูและวิเคราะห์ log จากระบบ Network ล่ะ จะทำอย่างไร ?
เนื่องจาก App ส่วนใหญ่ต้องทำการผ่านระบบ network เสมอ
ดังนั้นนักพัฒนาจะทำอย่างไรดีล่ะ ?

  • เปิด log ทั้งหมดในระหว่างการพัฒนาไปเลย แน่นอนว่าทำให้ performance ของระบบลดลง
  • ถ้าใน app ใช้ library ที่ต้องทำงานผ่านระบบ network แล้วต้องทำการแก้ไข configuration เพื่อให้แสดง log การทำงานออกมา
  • ในระหว่างที่ทีม Tester/QA ทำการทดสอบไม่มี console เพื่อดูผลการทำงานนะ ดังนั้นเราไม่สามารถ monitoring traffice ต่าง ๆ ได้เลย

คำถามคือ ทำอย่างไรดีล่ะ ?
ตอบได้เลยว่ามีเครื่องมือช่วยเหลือนะ เช่น Charles Proxy และ Facebook Stetho

ปล. เมื่อไรในไทยจะมีงานแบบนี้บ้างนะ !!