นาน ๆ จะเขียนบล็อกเกี่ยวกับแอนดรอยด์บ้าง มาคราวนี้ก็ขอเขียนเกี่ยวกับงาน Android Conference Bangkok 2018 แล้วกันนะครับ
สำหรับงานนี้ ตามชื่อเลย คืองานสัมมนาเกี่ยวกับ Android และเทคโนโลยีอื่น ๆ ที่เกี่ยวข้อง
จริง ๆ ปีที่แล้วก็ไปงานนี้มาครับ แต่ไม่ได้เขียนบล็อก ตอนแรกก็ว่าจะเขียน แต่…นาน ๆ ไปแล้วลืม เลยไม่เขียนซะงั้น
พอมาปีนี้ ตั้งใจแน่วแน่ว่าจะเขียน เลยโน้ตลงในนี้เลย จบงานปุ๊บ Publish ปั๊บ
(แต่เอาจริง ไม่ได้จบปุ๊บ Publish ปั๊บ เพราะมันเละเกิน ขอเกลา + ใส่รูปสักนิดสักหน่อยก่อนละกัน)
สำหรับงานนี้จัดที่ โรงละครเคแบงก์สยามพิฆเนศ ชั้น 7 Siam Square One
เมื่อเข้ามาที่งาน เราก็ตรงไปที่จุดลงทะเบียนกันเลย
การลงทะเบียนก็ไม่ยาก เอา QR ที่ได้รับในอีเมลไปสแกนที่แท็บเล็ตที่อยู่โต๊ะลงทะเบียน หรือไม่ก็จะมีสต๊าฟเดินมาเอามือถือสแกนให้เลย
เสร็จแล้วก็ไปเดินหาป้ายชื่อของเรา โดยเขาจะเรียงไว้ตามตัวอักษรแล้ว หาไม่ยาก
จากนั้นก็ไปเอาเสื้อ…ปีนี้เสื้อก็ยังสวยเหมือนเดิม
(ที่มุมด้านขวา มี Figure Android ขายด้วย แต่ปีที่แล้วโดนไปหลายตัว ปีนี้เลยปิดตากลั้นใจเดินผ่าน)
เวลาประมาณ 10 โมงนิด ๆ เราก็เดินขึ้นไปที่โรงละคร งานวันนี้มีคุณ Jiraporn Kuhakan เป็นพิธีกรนะครับ
Welcome Remarks – Wittaya Assawasathian, CEO – Apppi
เปิดงานด้วยการพูดถึงหลาย ๆ เรื่องเกี่ยวกับเทคโนโลยีที่เกิดขึ้นในช่วงนี้โดย CEO บ. Appi คุณวิทยา (ไม่ชินกับการเรียกเพื่อนแบบเป็นทางการแบบนี้)
Opening Remarks – Bok Thye Yeow – Google
- ตอนนี้มียอดการใช้งาน Android รอบโลก 1.5M+ Device Activated Daily
- สำหรับในไทยมี Market Share 83.2% ที่เหลือ…ไม่ต้องพูดถึงเนาะ
- ประวัติของ Android ตั้งแต่ Android D, E, F …. จนถึง O
- Mascot ของ Android Oreo เป็นผู้หญิง !?!
- Android Oreo = Powerful, Secure, Fast, Seamless
- Android Go เป็น Android สำหรับเครื่องที่ RAM น้อยกว่า 1 GB เริ่มที่ Android Oreo
- Android P Developer Preview
- Android Things สำหรับ IoT ตอนนี้ออก Developer Preview 7 แล้วนะครับ (ณ วันที่เขียนบล็อกนี้)
- IoT มียอดนักพัฒนาเยอะขึ้นเรื่ย ๆ คาดว่าจะถึง 9.2 ล้านคน ในปี 2020
- บน Google Cloud มี Cloud IoT Core สำหรับจัดการ IoT ให้ใช้งาน ด้วย
- Google Assistant จะรองรับภาษาไทยใรเร็ววันนี้
- AR Core มีคลิปโชว์ว่าตอนปิดไฟ โมเดลก็มืดตามไปด้วย
- Flutter เป็น UI Framework ที่ช่วยในการออกแบบ high-quality native interface สามารถออกแบบได้ทั้ง iOS และ Android
- Mobile First to AI First
- ปี 2017 เปิดตัวTensorFlow LITE สำหรับใช้บน Mobile หรือ embedded Device
- ปีนี้เปิดตัว Google Cloud Auto ML
- เปิดตัว Google Developer Agency Program in Thailand มี Training, Invitation, Recognition, Participation, Certification
- be together not the same
A Tale of Two Companies : Building Silicon Valley Spirit within a Thai Bank
Dr.Thadpong Pongthawornkamol – Principal Visionary Architect, KLABS – KBTG
- 2 บริษัทที่ว่าคือ Google และ KBTG
- KBTG เป็นส่วนหนึ่งของ KBANK
- ความต่างของ 2 ที่ คือ Scale, Language, Diversity, Business, Customers, Culture, Lifestyle
- สิ่งที่เหมือนกันคือ
- A Clear Purpose
- Unknown Setting : (Alphabet & Financial Disruption)
- Vision
- Google : Unified Mobile Platform, Web-Only Operating System, Simplified C++, We-imaging Mobility
- KBTG : Mobile Banking (K+), Cashless Society(K+ Shop), Inteligence (KADE)
- Room to Explore
- Google : 20% project, Product redefinition, Collaborative Environment
- KBTG : K+ Shop
- Empathy (Toutube, Youtube Kid, Youtube Go : K+ Beacon)
- Good Support
Build your app faster and smaller than ever
Jirawat Karanwittayakarn (Tee) – GDE Firebase
Somkiat Wongkitwattana (Ake) – Nextzy / GDE Android
แบ่งเป็น 2 ส่วนคือ Faster โดยคุณเอก และ Smaller โดยคุณตี๋
Faster
ทำยังไง ให้ทำงานบน Android Studio ได้เร็วขึ้น
- Colorize Log Message จะได้ดูง่าย ๆ
- Use Live Template ไม่ต้องพิมพ์อะไรซ้ำ ๆ เยอะ
- Auto Import จะเสียเวลาไป Import เองทำไม เปิดฟีเจอร์นี้โดยเสิร์ชว่า “on the fly”
- Parcelable Generator ถ้าเขียนเอง Boilerplate บานนนนนน แต่…ต้องเป็น Kotlin นะครับ
- Replace method with Autocomplete แทนที่จะใช้ปุ่ม Enter ให้ใช้ปุ่ม Tab แทน
- Style
- Modular Architecture (หลัก, Base, Feature) (รูปข้างบน)
- Too Fast Animation บางที่เครื่องเร็วไป ทำให้ไม่เห็น Effect อะไรบางอย่าง…ปรับเอาใน Developer Options บนมือถือ
- Keep Gradle Update
- Slowly Gradle Building Gradle Build ช้า…ทำไงดี
- Remove unused alternative resources
- Avoid unnecessary process for debug build
- Network Profiler ไว้ใช้ดูว่าเราใช้เวลาในการเรียก API อะไรนานบ้าง
- Android Drawable Importer เครื่องมือในการ Import รูปต่าง ๆ มาใช้ในโปรเจค
- Doze Mode Testing ต้องเทส ๆ
- Use Dagger 2
- Use Kotlin !!!!
Smaller
ทำให้ APK มีขนาดเล็กลง
App size is a user Cost
พี่นู๋เนยกล่าว
- คนส่วนใหญ่ไม่ได้ใช้มือถือ Hi-End ที่มีพื้นที่เยอะ หรือใช้งานจนเหลือพื้นที่น้อย ดังนั้นการทำให้แอปมีขนาดเล็กจึงมีความจำเป็น
- ใช้ APK Analyzer (Build > Analyze APK)
- Remove Unused Resoruces (Refactor -> Remove Unused Resource) ไม่ต้องกลัวว่าเอาออกแล้วจะบรึ้มเหมือนเอาออกแบบ Manual เอง
- Add just dependencies needed (
$ ./gradlew app:dependencies
) ไอ้ play-services นี่ตัวดีเลย เลือกใช้เท่าที่จำเป็น - Build Multiple APKs for screen densities ไปตั้งค่าใน build.gradle
- Build Multiple APKs for ABIs เพราะโลกนี้มันมี CPU หลายประเภทเกิน แต่หลัก ๆ มีแค่ 4 ตัว x86, x86_64, arm64-v8a, armeabi-v7a แค่นี้พอ
- Remove unused alternative resources สมมติว่าจะ build app เฉพาะภาษาไทย กับ อังกฤษ ก็ใส่
resConfigs 'en', 'th'
เข้าไป ในdefaultConfig
- Srhink your code and resources ใส่
minifyEnabled true
และshrinkResources true
ในbuildTypes release
ไม่พอยังต้องใส่-optimize
ให้proguard-android.txt
ด้วย กลายเป็นproguard-android-optimize.txt
- Shape Drawable ขนาดเล็กกว่าใช้รูปภาพที่เป็น .png
- WebP เป็นไฟล์รูปที่ขนาดไฟล์เล็กกว่า PNG 30% (คลิ้กขวาที่รูป เลือก Convert to WebP ได้)
- VectorDrawable ไฟล์ขนาดเล็กกว่า BMP แล้วยังสามารถ resize ให้รองรับจอได้ทุกขนาด โดยไม่เสียคุณภาพ ใช้ได้กับ (API 21+)
- D8 is the default DEX compiler in Android Studio 3.1 ลดขนาด dex ลง 10-15%
- ใน AS 3.2 มี New Code Shrinker และไม่สร้าง APK สำหรับ mips, mips64 และ armeabi by default
พักเที่ยง
มีข้าวกล่องหลายอย่างให้เลือกหยิบกัน
Cloud Firestore Workshop – Kalyan Reddy – Google
Cloud Firestore เป็นบริการ Realtime Database นึงบน Firebase
โดยใน Session นี้ คุณ Kalyan Reddy ให้เราทำ workshop แอปหาร้านอาหารที่ใช้ฐานข้อมูลที่อยู่บน Cloud Firestore ตาม https://codelabs.developers.google.com/codelabs/firestore-android/
Exoplayer – Monthira Chayabanjonglerd – Fungjai
Exoplayer เป็น Open Source Library สำหรับเล่น Media ต่าง ๆ บน Android มีฟีเจอร์เยอะมากกกก ไปหาดูเอาในเว็บของ ExoPlayer เอง
แล้วมันต่างจาก MediaPlayer ธรรมดายังไง
- MediaPlayer ใช้ได้ตั้งแต่ API 1 ExoPlayerใช้ได้ตั้งแต่ API 16
- MediaPlayer ใช้งานได้แค่พื้นฐาน ExoPlayer ใช้งานขั้น Advance
- MediaPlayer เป็น Blackbox ExoPlayer Customize ได้
ExoPlayer ถูกใช้ในแอปของ Google หลายตัว ไม่ว่าจะเป็น Youtube หรือ Photo และแอปของหลายที่ก็ใช้ Library นี้
นอกจากนี้ยังพูดถึงการเขียนโค้ดเพื่อเรียกใช้งาน Library และการ Hanlde State ต่าง ๆ อีกด้วย
และยังพูดถึงการ custom หน้าตาของ player
พูดถึงการเล่นแบบ Streaming และการใช้งานแบบ Background Service
และยังแนะนำ Project ที่น่าสนใจที่นำ Exoplayer มาปรับแต่ง
Building Google Assistant App – Warat Wongmaneekit – GDE
- เนื่องด้วย Android ทุกเครื่องในตอนนี้จะมี Google Assistant ติดมาด้วย และมันยังเป็น Chatbot/Assistant/AI เราสามารถนำมาทำอะไรได้บ้าง
- เราสามารถสั่งงาน Google Assistant ได้ทั้ง ผ่านเสียง (OK Google) และผ่าน UI
- เราสามารถสร้าง Assistant แล้วสามารถใช้งานได้ทั้งบนโทรศัพท์, บน Google Home หรือ บนหน้าเว็บได้ ด้วยสิ่งที่เรียกว่า “Actions on Google” (https://developers.google.com/actions/)
- Dialogflow ใช้สำหรับเปลี่ยนเสียงหรือข้อความของผู้ใช้งานให้เป็นคำสั่ง รองรับ 18 ภาษา รวมถึงภาษาไทย (https://dialogflow.com/)
- SSML (Speech Synthesis Markup Language ) ภาษาสำหรับใช้ในการสร้างเสียงสังเคราะห์ ใช้ในการสร้างประโยคสำหรับตอบผู้ใช้ด้วยเสียง
- UI ในการตอบ user : Text, Suggestion, Basic Card, List, Carousel, Browsing Carousel, Media Response
- Smart Home : ควบคุมส่วนต่าง ๆ ของบ้านผ่าน Google Home
- Content-based Action : Podcast Publishers, Recipe Publishers, News Publishers, Audio News (ยังไม่ Available ในไทย)
- Daily Updates & Notification : ยังไม่รองรับ 3rd Party Appp รวมถึง Google Home
- Lcoation & User Information : จะมีการถามผู้ใช้ว่าจะ Sign In เพื่อเข้าถึงข้อมูลของผู้ใช้มั้ย และยังสามารถเข้าถึงข้อมูลตำแหน่งของผู้ใช้ได้อีกด้วย
- Payment : will support in future
- ตอนนี้ Actions on Google รองรับ 16 ภาษา รวมถึงภาษาไทย
- ช่องทางการเผยแพร่ : มีเว็บให้เผยแพร่ (https://assistant.google.com/explore)
- Google Assistant SDK : สามารถเอาไปใส่ใน Device IoT ของคุณได้ (https://developers.google.com/assistant/sdk/)
- ปิดท้ายด้วยการเดโม Assistant สำหรับอ่านข่าวจากเว็บนึงให้ฟัง
Connect your Android Things with Firebase – Doug Stevenson – Google
สไลด์ https://speakerdeck.com/codingdoug/connect-your-android-things-with-firebase-devfestmn
- Android Thing = IoT ของ Google ที่รัน Android (PICO-PI-IMX7)
- I/O = GPIO, PWM, I2C, SPI, UART
- เนื่องด้วยมันไม่มีหน้าจอ เราเลยต้องให้มันแสดงข้อมูลต่าง บนจอมือถือ โดยในที่นี้จะส่งข้อมูลผ่าน Firebase
- เนื่องด้วย Android Thing เป็น Android มันเลยมี Google Play Service ทำให้ใช้งาน Firebase ได้
- ใช้ Cloud Functions (JS) ในการรับข้อมูลจาก IoT ส่งไปยัง Mobile
- สามารถใช้งานส่วนอื่น ๆ ของ Firebase ร่วมด้วยได้ เช่น Auth, Firestore, Cloud Storage, FCM, Crashlytics
- พูดถึงการ Implement Samrt Doorbell (กดออด, ถ่ายรูป, ส่งเข้ามือถือ, ปลดล็อกประตู)
- ถ่ายรูป ใข้ Android Camera2 API
- Upload รูปขึ้น Cloud Storage
- Cloud Storage trigger Cloud Function
- Cloud Function write ring Firestore เก็บข้อมูลการกดออด( Path ของรูป, id ของรูป และเวลาที่กดออด)
- Cloud send message FCM สั่งให้ส่ง Push Notification
- FCM notify Mobile เมื่อได้รับ Notification ให้แสดง UI
- Mobile อ่านข้อมูล ring จาก Fire Store
- Mobile เอา Id ของ ring ไปเอารูปจาก Cloud Storage มาแสดง
- เมื่อ Mobile มีการกดตอบรับ จะเขียนลงไปที่ Fire Store
- Fire Store trigger Cloud Function
- Cloud Function ส่ง message ไปที่ FCM
- FCM notify Android Thing
- พูดถึงเรื่องความปลอดภัยล่ะ…เพราะมัน read/write กันหนักมาก จะเขียน Security Rules ยังไง….คำตอบคือ ต้องใช้ Authentication
- ใช้ FirebaseUI เพื่อความง่ายในการสร้างหน้า Sign in
- แล้ว Android Thing จะ Sign in ยังไง มันไม่มีจอหนิ…Share an auth credential from app to thing ผ่าน Nearby API คือคำตอบ
Android CI with Kubernetes – Anton Malinskiy – Agoda
อ่านเพิ่มเติม https://medium.com/@Malinskiy/android-ci-with-kubernetes-684713a83eec
(บอกตามตรงว่า Session นี้รัว, เร็ว และเรื่องเฉพาะทางมาก เลยแทบได้มาแค่หัวข้อบนสไลด์)
- ทำไมต้อง CI/CD … เพราะเมื่อโปรเจคนึงมีคนทำงานร่วมกันหลายคน มันควบคุม Git Flow ลำบาก ต้องมีอะไรสักอย่างมาคอยจัดการความโกลาหลนี้
- Prerequisites
- Software
- Docker
- Hardware
- Bare-Bone Kubernetes
- KVM
- Knowledge
- Kubernetes
- Package Manager
- Software
- Unit Testing
- jUnit
- Robolectric
- Mockito (Reported test time for Robolectric is broken)
- JVM Consideration
- Xmx/Xms
- Forking the JVM
- UnlockExperimentalVMOption
- Test different garbage collectors
- Integration Test
- Real Device
- Dedicated nodes with USB Devices
- DemonSet with privilege
- Emulators
- qemu
- การตั้งค่าใน config.ini
- GPU Rendering
- image size
- x86 เร็วกว่า x86_64
- Real Device
- Instrumented Test
- OpenSTF
- Stablity : USB Devices, Software, Hardware, Emulators, Remote Connection
- Monitoring : adb-butler, stf-client, openstf
Homo Kotlin: A brief History of Kotlin in Agoda – Inaki Villar – Agoda / GDE Android
– Verachad Wongsawangtham – Kotlin Thailand Community
– Tipatai Puthanukunkit – Kotlin Thailand Community
พูดถึงแนวคิดในการเปลี่ยนมาใช้ Kotlin เพราะการใช้ Kotlin มันเขียนโค้ดน้อย แต่ได้ผลเยอะ ไม่ต้องมี Boilerplate อะไร ก็สามารถใช้งานได้เหมือนเดิม (เปรียบเทียบกับโค้ดในภาษาก่อนหน้า)
นอกจากนี้ยังพูดถึงการใช้ High-Order Funtions (Funtion ที่รับ Function เป็น parameter หรือ return เป็น function) ในการทำ Testing ด้วยการนำมาห่อ Espresso อีกที (เป็น Library ชื่อ Kakao)
การเปลี่ยนมาใช้ Kotlin ไม่ได้ทำให้เวลาในการ Build ลดลง ไม่ได้ทำให้ขนาดของ APK ลดลง และไม่ได้ทำให้จำนวน Method ลดลง
การเปลี่ยนมาใช้ Kotlin ทำให้การเขียน Data Class ง่ายขึ้นมากกกกกกกก ไม่ต้องเขียนไรเลยยยยยยย แค่ชื่อ Class และ Attribute จบแค่นี้…ง่ายเกิ๊นนนนนน
โชว์ตัวอย่างโค้ดที่เปลี่ยนจาก JAVA อันแสนยืดยาว มาเป็น Kotlin ที่เหลือสั้นกระจึ๋งเดียว
เห็นอย่างนี้แล้ว…มีหรือจะไม่เปลี่ยนมาใช้ Kotlin
TensorFlow for mobile poets – Enrique Manas – GDE Android
นิยาม Artificial Intelligent ,Machine Learning, Neural Network
- AI : คือการทำให้คอมพิวเตอร์ฉลาด
- ML : คือการทำให้ Machine มีการเรียนรู้
- NN : เป็นหนึ่งในหลายวิธีของ ML
ML + Mobile Use Cases
- OCR
- ASR, TTS
- Translation
- NLP
- Motion
- GPS
- and more
Less Traffic & Faster Response
TensorFlow Mobile vs Lite
- Most apps for Mobile will work with lite
- lite is Developer Preview
- Not all model supported by lite
From Training to App
ขนาดของ APK หลังใช้งาน Tensorflow
- TensorFlow Mobile + 8 MB
- TensorFlow Lite + 200 Kb (ไม่ชัวร์)
ใช้ Bazel ในการ Build ด้วย Android Studio
มีตัวอย่าง 3 อัน TF Classify, TF Detect และ TF Style
TF เขียนด้วย C++
มีของ iOS ด้วย
Raspberry Pi ก็มี
Codelab : https://codelabs.developers.google.com/codelabs/tensorflow-for-poets/#0
ก็หมดไปแล้วสำหรับ Session ที่ผมได้เข้าฟังในงานนี้ แต่จริง ๆ ยังมี Codelab ของ Firebase อยู่ที่ข้างนอกโรงละครด้วย แต่ผมไม่ได้เข้าร่วมครับ เห็นว่าใครทำผ่านได้รับ เสื้อ และของที่ระลึกด้วย
หลังจบงานก็มี After Party ด้วย มีขนมปัง ขนมจีบ ซาลาเปา พร้อมกับเสียงเพลงจาก DJ Paka ด้วย (จริง ๆ มีอย่างอื่นด้วย แต่ขออุบไว้ละกันว่าคืออะไร)
ก็ขอจบลงเพียงเท่านี้ครับ สำหรับใครอยากเข้าร่วมปีหน้า หรือต้องการรายละเอียดเพิ่มเติม คลิ้กที่นี่เลยยยย >>> https://android.wi.th/bangkok/