"มีเพื่อนดี คนเดียว ถึงจะน้อย ดีกว่าร้อย เพื่อนคิด ริษยา..."
บันทึก เมื่อเนยต้องเขียน BB10 Cascade
25 Mar 2013 14:10   [21907 views]

BB10 ถือว่าเป็นระบบปฏิบัติการที่อยู่ดีๆก็มาแรงแซงทางโค้งเฟี้ยวฟ้าวเงี้ยวง้าวชะด๊าวต๊าวแต่ว เพราะตอนแรกผู้คนคิดว่ามันคงจะไปไม่รอด แต่ตอนนี้กลับดูดีมีอนาคตซะได้ ทั้งนี้เพราะหนึ่งในหมากการเดินเกมที่ฉลาดล้ำของทีม BlackBerry ที่เปิดให้เราสามารถเอาแอพฯ Android (ไฟล์ apk) มาแปลงเป็นไฟล์ของ BlackBerry (ไฟล์ bar) แล้วเอาไปลงเครื่อง/ขึ้น Store ได้ทันที ส่งผลให้ตอนนี้แอพฯทะลุ 100,000 แอพฯไปเรียบร้อยแล้วจ้า แล้วรู้อะไรมั้ย? ตอนที่แอพฯขึ้นไป 60,000 ตัว มีรายงานออกมาบอกว่า เกิน 70% เป็น Android Apps ตรงนี้ต้องยอมรับว่าเป็น Strategy "สำหรับการเริ่มต้น" ที่เด็ดขาดจริงๆ ปรบมือให้ครับ


อย่างไรก็ตาม มันเป็น Strategy ที่เป็นระเบิดเวลา มันจะเจ๋งเด็ดขาดแค่ช่วงแรกเท่านั้น และช่วงแรกกำลังจะผ่านพ้นไป ถ้าเป็นแบบนี้ต่อไปต้องบอกว่าจะถึงคราวแย่ของ BB10 เพราะแอพฯทั้ง App World จะถูกถมด้วย Android App แล้วก็จะเกิดคำถามว่า "ทำไมไม่ไปซื้อ Android ไปเลยหละ" เพราะคุณสมบัติของ BB10 ตอนนี้ก็ยังเป็นแค่ Subset ของ Android อยู่


BlackBerry จึงพยายามผลักดันการเขียนโปรแกรมแบบ Native ให้เกิด ซึ่งก็คือเจ้า Cascade นั่นเอง และตัวเราก็มีโอกาสได้เขียนโปรแกรมบน Cascade ตัวนึงในช่วงอาทิตย์ที่ผ่านมา เลยเอาประสบการณ์มาเล่าให้ฟัง


*หมายเหตุ Blog นี้ ภาษาค่อนข้างจะเทคนิค และอาจจะต้องพอเขียน Qt มาบ้างถึงจะอ่านเข้าใจ อันไหนไม่เข้าใจขอให้ข้ามไป แหะๆ


Cascade คืออะไร?

จริงๆแล้ว Cascade ก็คือ UI Framework ที่เขียนไว้ On-Top ของ Qt อีกทีหนึ่ง จะเป็นลักษณะสิ่งที่มาแทนที่ QtQuick นั่นแหละ (สมมติว่ารู้จักกันอยู่แล้วนะ)


แต่ถามว่าเราเขียน QtQuick บน BB10 ได้มั้ย? ตอบว่าได้ ไม่มีปัญหาอะไร รันได้เหมือนกัน แต่ต้องเข้าใจว่าบน BB10 ซอฟต์แวร์ทั้งหมดก็ถูกเขียนด้วย Cascade รวมถึงพวก UX ก็ถูกทำมาบน Cascade อีกด้วย ดังนั้นถ้าเราเขียนด้วย QtQuick เราก็จะดึงเอา UX ของ BB10 มาใช้ไม่ได้เลย (เช่นเมนูขวา เมนูซ้าย) และนั่นก็ไม่ใช่สิ่งที่ดี ผู้ใช้จะรู้สึกแปลกแยก


Cascade มันยังไม่สมบูรณ์

หลังจากเขียนเสร็จไปหนึ่งแอพฯ ต้องยอมรับว่า รู้สึกอึดอัดมากกว่ามีความสุข เนื่องจาก Cascade ยังเหมือนอยู่ในขั้น Beta เท่านั้น ทำโน่นก็ไม่ได้ ทำนี่ก็ไม่ได้ รู้สึกว่ามันพัฒนาบน QtQuick แต่กลับแย่ยิ่งกว่า QtQuick เสียอีก โดยเฉพาะอย่างยิ่ง ส่วนสำคัญอย่าง ListView ที่ทำการ Manage DataModel ได้แย่มาก ทุกอย่างต้องทำแบบดิบๆ อย่างที่ภาษาอื่นเค้าไม่ทำกันแล้ว (บน QtQuick คือ Delegate/Model แต่อันนั้นทำมาดีมาก)


นอกจากนั้น IDE ยังทำออกมาไม่ดี หากเราเขียน Library เพิ่มบนภาษาซี แล้วไป import ใน QML มันก็จะไม่รู้จักและไม่สามารถ Preview ได้ พาลให้ต้องเขียนด้วยมือเองทั้งหมด ใช้ QML Designer ไม่ได้ และพอเข้าโหมดเขียนด้วยมือ หน้าจอ QML Editor ก็ยังมีการจัด Layout ที่ทำให้เขียนโปรแกรมลำบากสุดๆ เช่น มันไม่ยอมให้มีเว้นบรรทัดเกิน 1 บรรทัด หากเราจะพิมพ์อะไรแทรก ต้องพิมพ์ก่อนแล้วค่อยขึ้นบรรทัดใหม่ หรือถ้าพิมพ์ if แล้ว ตัว code จะต้องอยู่บรรทัดเดียวกับ if ไรงี้ ขึ้นบรรทัดใหม่ไม่ได้ IDE ไม่อนุญาต รู้สึกเหมือนให้เด็กหัดเขียนยังไงไม่รู้ (เพิ่งมาเป็นบน QNX Momentics IDE ตัวล่าสุด ก่อนหน้านี้ไม่เป็น)


สรุปคือ แย่ทั้งตอนรัน และแย่ทั้งตอนเขียน ผมค่อนข้างเป็นห่วงมาก หากเป็นแบบนี้ต่อไป คงยากที่ Cascade จะเกิดได้ ผมว่า BlackBerry ต้องปรับปรุงตรงนี้เป็นการด่วนสุดๆ


ข้อดีของ Cascade คือสวย

อย่างที่บ่นด้านบน พวกพื้นฐานของเจ้า Cascade ยังไม่สมบูรณ์ แต่ไม่รู้เหมือนกันว่าทำไม้ทำไม พวกฟังก์ชั่นเสริมสวยเสริมงามเนี่ยมีเพียบ ! ทุกอย่างมี Transition Effect แค่เปลี่ยนข้อความใน Label ก็มี Transition Effect สำหรับการเปลี่ยนแล้ว บ้าที่สุด พวก Animation เอยก็ใส่มาครบ สามารถให้ Component ใดๆในหน้าจอ เคลื่อนไหวตามที่คุณต้องการได้เลย จะหมุน จะย่อ จะเฟด ทำได้หมด ดูๆแล้วเหมือนใส่ในด้าน UX มากจริงๆ แค่อยากให้ใส่ใจด้านโค้ดดิ้งมากกว่านี้ด้วย - -


ตัวอย่างโค้ดทำมาอย่างยอดเยี่ยม

หากคุณมีอันต้องเขียน Cascade แล้วหละก็ ขอแนะนำว่าไปโหลดตัวอย่างโค้ดมาอ่านจะเป็นวิธีที่ง่ายและสะดวกที่สุด โค้ดตัวอย่างมันทำมาดีมาก ค่อนข้างครอบคลุมสิ่งที่จะทำโดยทั่วไปเลยหละ


Debug ยาก

ข้อเสียอีกอย่างของ BB10 คือ Debug ยากมากกกกก จะ Debug ที ต้องเข้า Terminal แล้ว ssh เข้าไป แล้วค่อยพิมพ์ log ออกมา ไม่ได้ง่ายๆเหมือน QtQuick มีปัญหาอะไรก็ต้อง Track กลับเอาเอง หาสาเหตุเอาเอง หรือบางทีถ้ามีปัญหาอะไรมันก็ไม่บอก แค่ Crash ดื้อๆ แล้วไปหาสาเหตุเอาเองนะจ๊ะ ! (ปัญหานี้มีบน QNX Momentics IDE ที่ BlackBerry ทำมา แต่ถ้าไป Plug กับ Qt Creator ก็จะ Debug ง่ายขึ้น แต่ก็จะมีปัญหาหา Library ของ Cascade ไม่เจอ สุดท้ายจึงต้องกลับมาทำบน QNX Momentics IDE อยู่ดี)


มันไม่ได้ Cross Platform

สิ่งที่ผู้คนคาดหวังกับ Qt อย่างมากคือ มันต้องเป็น Cross Platform แน่ๆเลย แต่ความจริงมันเศร้าครับ เพราะ BB10 เลือกที่จะใช้ Cascade เป็น UI Framework แทนที่จะเป็น QtQuick และจากใจ โครงสร้างภาษามันต่างกัน "ลิบลับ" จึงบอกได้เลยว่า "คุณไม่สามารถเอาโค้ดที่คุณเขียนบน Cascade ไป Cross Platform บน Platform อื่นได้เลย" จุดนี้ Qt ก็เป็นแค่ภาษาครับ ไม่ได้เป็นอะไรมากกว่านั้น


อย่างเก่งเลย ถ้า Manage ดีๆ คุณก็อาจจะแชร์โค้ดบางส่วนในภาษาซีได้ เช่นโค้ดในการเก็บ Settings โค้ดในการโหลดภาพจากอินเตอร์เนต โค้ดในการ Cache รูปเป็นต้น แต่ส่วนที่ต้องเชื่อมกับ UI ต้องเขียนใหม่หมดแน่นอน ฟันธงครับ


สรุป

ยืนยันอีกครั้งหนึ่ง เขียนโปรแกรมเสร็จไปหนึ่งตัว (ความยากระดับปานกลาง) ก็ต้องยอมรับว่าอึดอัดมาก กว่าจะเขียนเสร็จนี่เลือดตาแทบกระเด็น เพราะต้องไปนั่งหาวิธีที่ไม่มีเขียนใน Document ไม่มีในตัวอย่าง เพื่อแก้ปัญหาทางด้าน UI ตลอด พอรันแล้วมีปัญหาก็ไม่สามารถหาจุดผิดได้ ต้อง qDebug ด้วยมือเอาจนกว่าจะเจอ


ถึงแม้ BB10 จะเขียนโปรแกรมได้ทั้งหมด 5 วิธี แต่ผมลองมาหมดทุกวิธีแล้ว มีแค่สองวิธีที่จะใช้งานแบบจริงจังได้คือ Android App และ Cascade แต่ถ้า Android App ยังเติบโตต่อไปแบบนี้ ก็จะไม่ส่งผลดีต่อตัว OS เท่าไหร่ อย่างที่บอกข้างต้น และถ้าวิธีที่เป็น Native ยังมีปัญหาแบบนี้อยู่ ก็จะส่งผลเสียอย่างมากเลยหละ มันจะทำให้ OS ขาด Identity ผู้คนจะเริ่มเคลือบแคลงว่ามันคือ OS อะไรกันแน่


ยังไงก็ตาม BB10 เป็น OS อีกตัวที่อยากให้มันเกิด จึงใคร่ขอเชียร์ให้ BlackBerry พัฒนา Cascade ให้ดียิ่งขึ้นไปไวๆ เป็นอีก Alternative OS ที่มีคนใช้เยอะๆนะจ๊ะ สาาาาาธุ

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

Dec 6, 2012, 16:06
14604 views
ความท้าทายของ Windows Phone
May 1, 2013, 01:19
12821 views
New era of Windows Phone
0 Comment(s)
Loading