"Yesterday is gone and Tomorrow may never come so.. Live for Today!!"
เก็บมาเล่า รายงาน Android Fragmentation ของ Open Signal vs ความเป็นจริงที่ต้อง Concern
25 Aug 2014 00:50   [5974 views]

เป็นช่วงชีวิตที่ Blog ที่ต้องเขียนเยอะเกิ๊นนนนนนน T^T เรื่องราวในชีวิตเยอะจริงอะไรจริง ดังนั้นช่วงนี้อาจจะอัพ Blog ถี่หน่อยนะ อาจจะมากกว่าวันละ 1 Blog

สำหรับเรื่องที่กำลังจะเขียนนี้เกี่ยวกับรายงานของ Open Signal เจ้าเก่าที่ออกมาวันก่อน ว่าด้วยเรื่องของ Fragmentation บน Android โดยอ้างอิงจากผู้ที่ใช้ แอพฯ Open Signal มียอดโหลดอยู่ระหว่าง 5M-10M รายงานบอกไว้ดังนี้

สร้างกระแสฮือฮาได้พอสมควร เพราะจากมือถือ 682,000 เครื่องที่ตรวจสอบ (ซึ่งเทียบกับยอดโหลดแล้ว แปลว่ามี Active User น้อยมากเลยนะเนี่ย) มีมือถือรุ่นต่างๆกันไปถึง 18,796 รุ่น !!! เพิ่มจากปีที่แล้วที่มีอยู่เพียง 11,868 รุ่น (เรียกว่าเพียงดีเปล่าฟระ) โดย 43% ในนั้นเป็นมือถือซัมซุง และมี 20.9% เป็น KitKat

วันนี้จึงขอมาเขียนสรุปข้อมูลที่ Open Signal เผยแพร่ออกมา พร้อมทั้งเขียนในแง่ของการวิเคราะห์ให้อ่านกันด้วยว่า แท้จริงแล้วมันเป็นเรื่องใหญ่หรือไม่ หรือก็แค่เรื่องธรรมดา

มาดูข้อมูลต่อไป นี่เป็นภาพของ Device Fragmentation โดยแต่ละช่องคือหนึ่งรุ่นและขนาดของช่องคือ Market Share

ภาพด้านบนก็แสดงให้เห็นว่ามีรุ่นเพิ่มขึ้นมาเพียบเลย แต่ Market Share สูงสุด (ที่ลงแอพฯ Open Signal) ยังคงเป็น Samsung Galaxy S3

ภาพต่อไปเป็น Market Share ของ Brand

Samsung กิน Market Share ไป 43% ลดลงจากปีที่แล้วที่กินอยู่ 47.5%

ทางด้าน OS Fragmentation ถือเป็นเรื่องน่ายินดีที่ OS เก่าอย่าง Android 2.3.3 - 2.3.7 ลดลงเหลือต่ำกว่า 20% แล้ว

ซึ่งเป็นการยืนยันอีกทีว่า จากนี้ทำแอพฯไม่ต้องไปแคร์ 2.3.x แล้ว ให้โดดไปที่ 4.0 (API 14 หรือ 15) ได้เลย

ถึงบทสรุปข้อนี้ ทาง Open Signal จะเขียนว่า

The Android operating system is the most fragmented it has ever been.

Open Signal

แต่เราก็ไม่ค่อยเห็นด้วยเท่าไหร่นัก เพราะ Open Signal ให้ค่าของ Android Version แต่ละตัวเท่ากัน แต่จริงๆมันไม่เท่า Fragmentation ที่เลวร้ายที่สุดคือการ Fragment ระหว่าง 2 กับ 4 แต่นี่ 2 หายไปจากตลาดจนไม่เหลือความสำคัญแล้ว ทางด้าน 4 ถึงจะมีเลขเวอร์ชั่นที่ต่างกันออกไป แต่โดยรวมก็ค่อนข้างเหมือนกัน ดังนั้นตอนนี้ Fragmentation ด้าน Android OS ถือว่าต่ำลงกว่าแต่ก่อนครับ (รอตอน L ออกมาค่อยว่ากันอีกที)

และกราฟต่อไปนี้ ผมว่าน่าสนใจมาก เพราะไม่ค่อยเห็นใครสรุปเท่าไหร่คือ "Fragmentation ตามฐาน GDP" แยกให้เห็นว่าประเทศร่ำรวยกับประเทศยากจน มี Fragmentation ของแอนดรอยด์ต่างกันอย่างไร

ในประเทศร่ำรวย(กราฟบน) มี Market Share ของ Android 4.4.x KitKat สูงมากกว่า 30% และมีถึงกว่า 90% ที่เป็นเวอร์ชั่นตั้งแต่ 4.0.x เป็นต้นไป ในขณะที่ประเทศยากจน(กราฟล่าง) มีเพียง 12% ที่ได้ KitKat แต่ยังดีที่มีถึง 85% ที่เป็นเวอร์ชั่นตั้งแต่ 4.0.x เป็นต้นไป ส่วน 2.3.x ยังกินตลาดอยู่ 15%

ส่วนเรื่องของ Fragmentation ทาง OS Version เทียบกับ iOS แล้ว ...

ยังคงเป็นเหมือนเดิมคือเมื่อ iOS ออกตัวใหม่ ให้ย้ายฐานการพัฒนาไปยังรุ่นก่อนหน้ารุ่นนึงได้เลย เช่นเมื่อ iOS 8 ออกอย่างเป็นทางการแล้ว ก็ย้ายฐานการพัฒนาไปบน iOS 7 ได้เลย แล้วไม่ต้องแคร์ iOS 6

แต่กับ Android ต้องสนับสนุนย้อนหลังไป 5-6 รุ่น แล้วแต่สถานการณ์ตอนนั้นๆ ให้ไปดูหน้า Dashboard เพื่ออัพเดต Market Share เรื่อยๆครับ

(อิจฉา iOS Programmer เป็นที่สุด)

สำหรับตอนนี้ นักพัฒนาแอนดรอยด์ให้ย้ายฐานการพัฒนาไปที่ Android 4.0 (API 14 หรือ 15) ได้เลยครับ ไม่ต้องห่วง Android รุ่นก่อนหน้าแล้ว

เรื่อง Software พอจะดีลได้ แต่กับ Hardware ก็คงต้องปวดหัวกันต่อไป เพราะต่างค่ายก็ต่างผลิตกันไป แม้แต่ Sensor ก็ยังไม่มีมาตรฐานอะไรมากมาย แล้วแต่ว่ารุ่นไหนจะมีอะไรตามยถากรรมและราคา

เช่นเดียวกันกับขนาดหน้าจอทาง Physical ที่เรียกว่าเป็นส่วนที่สร้างความปวดหัวส่วนใหญ่ให้กับนักพัฒนาชิ้นใหญ่ที่สุดเลยก็ว่าได้ ตอนนี้หน้าจอยิ่งกระจัดกระจายเข้าไปอีก

เพลินกันไปเลย ...

โดยรวมจากรายงานก็เป็นเช่นนี้ครับ

แล้วสถานการณ์จริงๆเป็นยังไง Fragmentation สูงขึ้นมั้ย? สร้างปัญหารึเปล่า? อะไรที่ต้อง Concern จริงๆ? ขอเขียนในฐานะผู้ทำจริงดังนี้ครับ

สถานการณ์จริงของ Android Fragmentation กับสิ่งที่ต้อง Concern

จริงอยู่ที่มีรุ่นเพิ่มขึ้นเยอะ จริงอยู่ที่ขนาดจอมี Fragmentation สูงขึ้น แต่สถานการณ์โดยรวมเรียกว่าดีขึ้นครับ

เพราะการที่มีรุ่นเพิ่มขึ้น ขนาดหน้าจอเพิ่มขึ้น ไม่ได้ทำให้อะไรเลวร้ายเพิ่มจากแต่ก่อนเลย เพราะความลำบากมันหยุดเพิ่มตั้งแต่มันมีหน้าจอ 10 ขนาดแล้ว หลังจากนั้นก็ลำบากเท่าเดิม

หากดีลกับ Fragmentation เรื่องหน้าจอเป็นแล้ว เพิ่มมาอีกล้านกว่ารุ่น หน้าจออีกสองล้านกว่าขนาด ก็ไม่ได้ทำให้การเขียนโปรแกรมยากขึ้น

เพียงแต่สิ่งที่อาจจะทำให้ลำบากคือความละเอียดหน้าจอที่เพิ่มขึ้น อาจจะพ่วงมาด้วยการทำ Resource เพิ่มสำหรับ dpi นั้นๆ ล่าสุดจอ 1080p และ 4K โผล่ขึ้นมา ก็มี xxxhdpi เพิ่มขึ้นมาอีก

(รูปจาก tabtec.com)

ใครออกแบบแอพฯให้ใช้ไฟล์ Resource เยอะๆ ก็คงต้องตัดไฟล์เพิ่มเพื่อให้สนับสนุนหน้าจอที่ละเอียดขึ้น และแน่นอนว่าไฟล์ก็จะใหญ่ขึ้น ขนาดแอพฯโดยรวมก็จะเพิ่มขึ้นเป็นเท่าตัวอีกด้วย แต่ถามว่าถ้าไม่ตัดเพิ่มจะยังใช้งานได้มั้ย? ความฉลาดของระบบ UI Scaling บน Android OS จะช่วยให้สามารถใช้งานได้อยู่แล้วครับ แค่ภาพอาจจะไม่คม ซึ่งบางทีบนจอละเอียดจัดๆ มนุษย์ก็อาจจะดูไม่ออกด้วยซ้ำ (เช่น 4K ใช้ Resource ของ 1080p ก็คมแล้ว เป็นต้น) ก็คือไม่ได้เหนื่อยเพิ่มขึ้นเลย

นาทีนี้ หากหลีกเลี่ยงได้ ให้หลีกเลี่ยงการออกแบบแบบ Realism ให้มากที่สุด และขอแนะนำให้ออกแบบโดยใช้ Flat Design จะช่วยดีลกับปัญหา Screen Fragmentation ชุดใหญ่ที่กำลังจะเกิดในปีข้างหน้านี้ทั้งฟาก iOS และ Android จากหน้าจอที่ละเอียดเกินไปจนใช้ขนาดไฟล์เก็บภาพใหญ่มาก หากใช้ Flat Design จะช่วยประหยัดพื้นที่ไปได้มากและความคมชัดยังคงอยู่ ข้อมูลเพิ่มเติมอยากให้ลองย้อนไปอ่าน Blog เก่า "รู้ไว้ใช่ว่า มือถือจอยิ่งชัด ยิ่งมีพื้นที่เหลือให้ใช้น้อย" ดูครับ

แล้วที่บอกว่าดีขึ้นคืออะไร? ทำไมถึงดีขึ้น?

เพราะปัญหาที่แท้จริงของแอนดรอยด์ก่อนหน้านี้มีอยู่สองอย่างคือ

1) Software: การโยกจาก Android 2.3.x มาเป็น Android 4.x และการพัฒนาที่เร็วเกินไปของ Android OS

2) Hardware: มีรุ่นที่ Hardware "กาก" เยอะเกินไป

ปัญหาของ Software มีสถานการณ์ที่ดีขึ้นจากการที่ Android 2.3.x มี Market Share ลดลงจนตอนนี้ไม่ต้องไปสนใจแล้ว ผนวกกับการที่ Android Support Library ตอนนี้สมบูรณ์มาก จนสามารถดึงความสามารถของ Android รุ่นใหม่ไปใช้บนรุ่นเก่าอย่าง 4.0.x ได้ ปัญหาของ Software Fragmentation จึงไม่ใหญ่มากแล้ว พร้อมกันนี้ Android OS พักหลังก็ยังพัฒนาช้าลงมาก ทำให้ทุกๆอย่างเริ่ม "นิ่ง" ขึ้น และส่งผลดีให้ทั้งนักพัฒนาและผู้ผลิตมือถือทำงานกันได้ง่ายขึ้น

ส่วนเรื่อง Hardware ก่อนหน้านี้ Hardware ในตลาดล่างก็ยังไม่ดีพอจะทำให้ Android ทำงานได้ลื่นไหล แต่ตอนนี้มือถือราคา 3000 บาทก็ลื่นแบบไม่ติดขัดแล้ว ทำให้การเขียนโปรแกรมทำงานได้ง่ายขึ้นมากและทำอะไรแปลกๆได้เยอะขึ้นด้วย อาจจะมีบ้างที่มีปัญหาต่อชีวิต (เช่น Galaxy Pocket) แถม Market Share เยอะซะด้วย พวกนี้แนะนำให้ซื้อมาทดสอบเลย หากทำให้มันใช้ไม่ได้จริงๆ ก็เอาออกไปจาก Supported Device ไปก่อนก็ดี แล้วไปโฟกัสกับตลาดบนแทน มี Potential กว่าเยอะ

อีกเรื่องนึงคงเป็นเรื่องของขนาดหน้าจอที่เยอะเกินไป

แต่ทำไมตัวเราถึงไม่บอกว่ามันเป็นปัญหา? เพราะแอนดรอยด์พัฒนาระบบตรงนี้มาดีแล้ว ปัญหานี้แท้จริงแล้วเกิดจากการที่นักพัฒนาไม่เข้าใจเรื่องระบบ dpi เอง แอนดรอยด์ทำงานได้ดีและสมบูรณ์มาก หากคิดว่ามันเป็นปัญหา จงอัพเกรดฝีมือตัวเอง!

ให้ศึกษาเรื่อง dpi และ Fragment ดูครับ จะช่วยจัดการเรื่องปัญหาจอๆได้เยอะเลย ใช้ dpi จัดการเรื่อง Resource และใช้ Fragment เพื่อแบ่งหน้าจอเป็นส่วนๆสำหรับ Tablet

จบจ้า ^_^

บทความที่เกี่ยวข้อง

Oct 20, 2014, 20:41
16167 views
[Geek] Best Practices ของการทำ Push Notifications บนแอนดรอยด์
Jul 28, 2014, 01:26
9222 views
ล้วงแคะแกะเกาแอพฯ BeeBox กับ Security Concern "ชุดใหญ่"
0 Comment(s)
Loading