รู้จักกับ App Thinning ฟีเจอร์ใหม่ใน iOS 9 เพื่อชาว iPhone 8GB, 16GB

app-thinning-new-feature-8gb-and-16gb-iphones-and-ipads

เป็นที่อึดอัดใจสำหรับผู้ที่ใช้งานอุปกรณ์ที่มีความจุ 8GB หรือ 16 GB เพราะว่าทั้ง iOS และแอพกินพื้นจำนวนหลาย GB ทำให้เมื่อติดตั้งแอพที่จำเป็นเสร็จ ก็แทบจะไม่เหลือพื้นที่สำหรับเก็บไฟล์ media ต่าง ๆ แล้ว และตั้งแต่มี iPhone 6 Plus ออกมา แอพต่าง ๆ ก็มีขนาดใหญ่ขึ้น อีกเพราะต้องเพิ่ม assets เข้าไปเพื่อให้รองรับหน้าจอของ iPhone 6 Plus แต่ก็นับว่าเป็นข่าวดีที่ iOS 9 จะแก้ปัญหาในส่วนนี้แล้ว

Apple ได้เคยกล่าวถึงใน keynote เกี่ยวกับวิธีที่จะลดการใช้งานพื้นที่ลง เมื่ออัพเดทเป็น iOS 9 จากประมาณ 4.6GB เหลือเพียง 1.3GB และนอกจากนี้ตัว iOS 9 เองที่ลดขนาดลงแล้ว ด้วยเทคโนโลยีที่มีการพัฒนามากขึ้น ได้มีการกล่าวถึง App Thinning ว่าบน iOS 9 โทรศัพท์หรือแทปเล็ตจะมีพื้นที่ว่างเหลือมากขึ้นด้วยเทคนิคการลดขนาดของแอพ

มีสามกระบวนการหลักที่ทำให้นักพัฒนาจะสามารถสร้างแอพโดยมีขนาดเล็กลงได้ กระบวนการแรกคือ App Slicing ที่เป็นปัจจัยหลักในการลดขนาดเลย แต่ละ binary ของแอพที่เราดาวน์โหลดมานั้นประกอบไปด้วยกลุ่มโค้ด และ assets ซึ่งการพัฒนาแอพโดยทั่วไป จะต้องสามารถใช้งานได้กับ iPhone ทั้ง 32-bit และ 64-bits และรองรับหน้าจอหลายขนาด ซึ่งตรงนี้จะทำให้แอพพ่วงโค้ดที่รองรับการใช้งานของแต่ละเครื่อง แม้ว่าเครื่องที่ใช้รันจะไม่ต้องใช้โค้ดในส่วนนั้นก็ตาม

app-thinning-slicing

สมมติว่าเรามี iPhone 5C ซึ่งใช้ CPU แบบ 32-bit และ GPU ไม่ได้รองรับ Metal API แล้วเราไปโหลดเกมที่ออกใหม่มา ซึ่งในเกมนั้นมีชุดโค้ดที่ใช้สำหรับรันบนเครื่อง 64 bit , Metal API และ “3x” asset สำหรับ iPad กับ iPhone 6 plus ซึ่งสิ่งเหล่านั้นไม่ได้จำเป็นสำหรับใช้งานบนเครื่อง 5c ที่เป็น 32 bit , “2x” assets และ OpenGL graphics ซึ่ง App Slices นี้จะช่วยให้โหลดมาเฉพาะชุดโค้ดที่เครื่องเราใช้เท่านั้น

app-thinning-new-feature-8gb-and-16gb-iphones-and-ipads-3

กระบวนการต่อมาที่ซับซ้อนขึ้นกว่าเดิมสักหน่อย เรียกว่า On-Demand Resources (ODRs) เป็นฟีเจอร์ใหม่ทำที่เราสามารถใช้งานแอพได้โดยที่ไม่ต้องดาวน์โหลดตัวแอพมาทั้งหมด โดยเราดาวน์โหลดส่วนอื่น ๆ ทีหลังได้เมื่อเราต้องการใช้งาน แอปเปิลมีรายละเอียดเยอะมากสำหรับการทำแอพแบบ ODRs บนเว็บไซต์สำหรับนักพัฒนา 

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

ขณะที่นักพัฒนากำลังสร้างแอพ และต้องการใช้งาน ODRs ก็จะต้องกำหนด tags ให้กับโค้ดแต่ละส่วนเพื่อแยกเป็นชิ้น ๆ ถ้ายกตัวอย่างเป็นเกมที่แยกแต่ละด่าน นักพัฒนาก็จะต้องกำหนด tag ให้กับ assets และโค้ดเป็นด่าน ๆ ไป ลองดูตัวอย่างที่เป็นเกมจาก developer.apple.com และดูชนิดของข้อมูลที่สามารถแบ่งโดย tag จาก developer.apple.com

app-thinning-new-feature-8gb-and-16gb-iphones-and-ipads-2

ฟังดูเหมือน ODRs ออกจะเจ๋งมาก แต่สุดท้ายแล้วเราก็ต้องมาดูกันตอนใช้งานจริงนั่นแหละ ว่ามันจะมีปัญหาอะไรตามมาหรือเปล่า และเหมาะกับการใช้งานแบบไหนบ้าง เช่นถ้าเกิดเราต้องการโหลด assets เพิ่มในขณะที่ไม่มีอินเตอร์เน็ต หรือ อินเตอร์เน็ตช้า แน่นอนว่าการใช้งานแอพก็จะชะงักทันที

และกระบวนการสุดท้าย เรียกว่า Bitcode เมื่อนักพัฒนาอัพโหลดแอพเข้าไปใน App Store จะไม่ต้องส่ง pre-compiled binaries แต่จะเป็นกระบวนการที่เรียกว่า “intermediate representation” เพื่อให้แอปเปิลลิงก์ตัวโค้ดเข้ากับแอพบน App Store และเลือกแอพให้ผู้ใช้ได้ตามที่เรียกมา รวมถึงอัพเดตไบนารีให้เมื่อมีการใส่เวอร์ชันใหม่ของแอพเข้าไปใน iTunes Connect ซึ่งบังคับให้ใช้บน watchOS แต่บน iOS จะเลือกใช้หรือไม่ใช้ก็ได้ อ่านรายละเอียดเพิ่มเติมเกี่ยวกับ Bitcode ได้จากบทความ รู้จัก Bitcode เทคโนโลยีสำคัญสำหรับนักพัฒนา แต่น้อยคนจะพูดถึง

ผู้เขียนบทความนี้กล่าวว่า เค้ากำลังแกะดู documentation ของ iOS 9 กับ OS X 10.11 ไปเรื่อย ๆ แล้วถ้ามีอะไรน่าสนใจ เค้าจะเอามาเล่าให้ฟังเรื่อย ๆ

final_fantasy_vii_sephiroth_cloud_strife_barret_tifa_desktop_1920x1200_hd-wallpaper-823489

ตัวอย่างแอพที่ใช้ประโยชน์จาก App Thinning แบบเป็นรูปเป็นร่าง ก็เป็นเจ้าซีรีย์เกมสุดฮิต Final Fantasy VII ที่กำลังจะทำลงบน iPhone, iPad ทางผู้พัฒนาเกมนี้ (Square Enix) ได้กังวลเกี่ยวกับแอพว่าจะมีขนาดใหญ่เกินความจำเป็น แต่หลังจากการประกาศฟีเจอร์ของ iOS 9 ในงาน WWDC 2015 ทางผู้พัฒนาก็บอกว่าฟีเจอร์ของ iOS 9 นี่แหละช่วยได้ ตั้งแต่ App Slicing ที่แบ่ง assets และชุดโค้ดสำหรับแต่ละอุปกรณ์ เพื่อไม่ให้ผู้เล่นต้องรับภาระของการเบียดเบียนพื้นที่เกินความจำเป็น และเกมนี้แบ่งเกมออกเป็นด่าน ๆ โดยครั้งแรกการให้โหลด resources เพิ่มเมื่อเล่นด่านหลัง ๆ เป็นการใช้ประโยชน์จาก ODRs นั่นเอง

ที่มา – arstechnica.com, apple.comtoucharcade.com