เรื่องที่ผมกำลังจะพูดถึงนี้จะออกไปทาง Geek เล็กน้อย เพราะเป็นเรื่องของฝั่งนักพัฒนา แต่ทว่าเรื่องที่จะพูดถึงนี่แหละที่จะมีผลกับผู้ใช้ทั่วไปอย่างเราๆครับ

เบื่อมั้ยเวลาเจอแอพขนาดใหญ่ๆ

ผมเชื่อว่าทุกๆคนที่ใช้อุปกรณ์แอนดรอยด์ก็คงไม่ชอบแอพที่มีขนาดใหญ่ๆใช่มั้ยล่ะ ผมก็เป็นคนหนึ่งที่ไม่ชอบเหมือนกัน จะเซ็งมากถ้าเป็นแอพที่ไม่ค่อยจำเป็นมากนักแต่ดันมีขนาดใหญ่กว่าชาวบ้าน

ซึ่งการที่แอพมีขนาดใหญ่นั้นไม่ใช่เพราะว่าฟีเจอร์เยอะหรือโค้ดในนั้นเยอะหรอก (ไม่นับกรณีที่ใช้งานไปเรื่อยๆแล้วกินพื้นที่เยอะขึ้นนะ) แต่จริงๆแล้วมันใหญ่เพราะไฟล์จำพวกไฟล์ภาพหรือไฟล์วีดีโอที่ใส่ไว้ในแอพต่างหาก รวมไปถึงโค้ดของแอนดรอยด์เองที่ทำให้แอพสามารถทำงานได้บน CPU Architecture ต่างๆเช่น ARM, MIPS หรือ x86 เป็นต้น ซึ่งเรียกกันรวมๆว่า Resource ครับ

แอพส่วนใหญ่ ถ้านับจำนวนโค้ดทั้งหมดที่นักพัฒนาเขียนใส่ไว้ในแอพ มีขนาดไฟล์เล็กกว่ารูปถ่าย 1 ไฟล์เสียอีก

แนวทางในการพัฒนาแอพที่ดีจึงเน้นไปที่การออกแบบแอพที่ไม่จำเป็นต้องใช้ภาพ แต่เป็นรูปทรงง่ายๆที่เขียนโปรแกรมก็แสดงผลได้ (นั่นคือสาเหตุที่ว่าทำไม Material Design ถึงมีหน้าตาเป็น Shape แบบง่ายๆ) รวมไปถึงการแยก APK ออกเป็นหลายๆแบบ เช่น แยก APK ตาม CPU หรือตามขนาดหน้าจอเป็นต้น ดังนั้นอย่าแปลกใจว่าทำไมบางแอพเวลาดาวน์โหลดเป็นไฟล์ APK มาแล้วดันใช้กับเครื่องเราไม่ได้ อาจจะเพราะว่านักพัฒนาแยก APK ออกมาสำหรับแยกเครื่องเพื่อให้ขนาดเล็กลงครับ

แต่ถึงจะมีคำแนะนำให้แบบนี้แล้ว ก็ใช่ว่านักพัฒนาจะทำตามกันซักเท่าไร ส่วนใหญ่จึงเลือกที่จะเขียนแอพออกมาเป็น APK ตัวเดียวที่มีข้อมูลทุกอย่างในนั้นทั้งๆที่แต่ละเครื่องเรียกใช้ไม่เหมือนกัน (เครื่องเรามีหน้าจออยู่ขนาดเดียว แต่ดันต้องเก็บไฟล์ภาพสำหรับหน้าจอขนาดอื่นๆด้วยซะงั้น)

เวลาเขียนแอพเสร็จก็จะทำเป็น APK แล้วส่งเข้า Google Play เลย และเวลาที่ผู้ใช้ทั่วไปดาวน์โหลดแอพจาก Google Play ก็คือการไปดาวน์โหลดไฟล์ APK ตัวนั้นมาลงเครื่องนั่นเอง

นั่นหมายความว่าแอพไหนทำ APK แยกหลายๆตัวก็ดีไป ถ้าแต่แอพไหนไม่ทำก็จะได้ APK ก้อนใหญ่ๆทั้งก้อนเลย

 

ก็เลยเกิดสิ่งที่เรียกว่า Android App Bundle ขึ้นมา

Android App Bundle เพิ่งจะถูกประกาศในงาน Google I/O 2018 เมื่อไม่นานมานี้เอง มันก็คือเครื่องมือที่นักพัฒนาไม่ต้องทำอะไรยุ่งยากเหมือนเดิม แถมผู้ใช้ก็จะได้แอพที่ขนาดเล็กลง

ขอบคุณภาพจาก gadgets.ndtv.com

เย้ Win-Win กันเลยทีเดียว (จริงๆนักพัฒนาก็ต้องทำอะไรเพิ่มเติมแหละ แต่ไม่เยอะเท่ากับวิธีแบบเก่า) แถมสามารถใช้ได้แล้วตั้งแต่วันที่เปิดตัวเลย

จากเดิมที่นักพัฒนาต้องส่งไฟล์ APK ให้ Google Play โดยตรง ก็เปลี่ยนใหม่ให้ส่งเป็นไฟล์ที่เรียกว่า .aab (ย่อมาจากคำว่า Android App Bundle น่ะแหละ) แล้วเดี๋ยว Google Play จะเอาไปทำเป็น APK สำหรับอุปกรณ์แอนดรอยด์แต่ละเครื่องให้เอง

ทุกครั้งเวลาที่ผู้ใช้ดาวน์โหลดแอพ เจ้า Google Play จะรู้อยู่แล้วว่าเราใช้เครื่องรุ่นอะไร ยี่ห้ออะไร ขนาดหน้าจอเท่าไร สเปคอะไร ดังนั้น Google Play จึงสามารถสร้าง APK จากไฟล์ .aab ให้เหมาะสมกับแต่ละเครื่องได้

ภาพเปรียบเทียบระหว่าง APK แบบเก่าๆที่ต้องยัดทุกอย่างไว้ในตัวเดียว (ถ้านักพัฒนาไม่ทำอะไร) กับ APK ที่ถูกสร้างขึ้นมาจาก Google Play โดยใช้ Android App Bundle

นักพัฒนาก็เฮครับ เพราะไม่ต้องนั่งทำ APK เป็นหลายๆไฟล์ให้เยอะแยะชวนสับสน ส่วนผู้ใช้ก็สบายครับ ได้แอพที่มีขนาดเล็กลง Win-Win!

 

ข้อเสียเล็กน้อยของ Android App Bundle

ถึงแม้ว่า Android App Bundle จะช่วยลดปัญหาขนาดของแอพที่ใหญ่เกินจำเป็นให้ลดลงน้อย แต่ทว่าจะมีปัญหาทันทีถ้าผู้ใช้ก๊อป APK จากในเครื่องไปติดตั้งให้กับเครื่องอื่นๆที่มีสเปคต่างกัน เพราะว่า APK ตัวนั้นเป็น APK ที่ Google Play สร้างขึ้นมาให้เพื่อเครื่องนั้นๆโดยเฉพาะ ดังนั้นถ้าเอาไปติดตั้งในเครื่องต่างสเปคหรือต่างยี่ห้อก็อาจจะทำให้แอพทำงานไม่ได้หรือทำงานเพี้ยน (แต่ถ้าเป็นรุ่นเดียวกันก็ไม่มีปัญหาอะไร)

เพราะงั้นอย่าแปลกใจครับว่าทำไมการก๊อป APK ไปติดตั้งในเครื่องอื่น มันถึงใช้ไม่ได้กับบางแอพ  😎