
นานมากที่ไม่ได้มา update blog ของตัวเอง วันนี้วันดีมีโอกาสมาร่วมฟัง Engineer และ Staff ของ Google ในงาน Google Dev Fest 2011 @ Chiang mai

โดยงานจัดเป็นครั้งที่ 3 ใน ไทย และเป็นครั้งแรกที่จัดที่เชียงใหม่ (บ้านผมเอง) โดย Session หลักๆเกี่ยวกับ Android+ Market/ HTML5 / Google Analytics / Google Fusion table

Blog ในครั้งนี้จะขอเจาะในเรื่องของ Android กับ Android Market เป็นหลักน่ะคับ ตามที่ Blog นี้ถูกตั้งขึ้นมาเพื่อแนะนำนวัตกรรมในส่วนของ Android (พี่อ้อ เสื้อเขียวตัวจริงน่ารักดีคับ )
Morning Session – Android Market
โดยช่วงเช้าเริ่มจาก Mr Ankur Kotwal (http://goo.gl/Oido5) จาก Dev ส่วนของ Google Sydney มา กล่าวถึง สถานการณ์ของ Android ณ ตอนนี้

Opportunity
- 48% Android ครอง Market share จาก Smart phone ทั้งโลก (ใน US เอง คิดเป็น 40%)
- 150 ล้าน active device ( ปัจจุบัน อัตราการ Activated ต่อวันอยู่ที่ 550K device )
- ตลาด Tablet หลักตอนนี้กำลังเติบโตได้ดี (ผู้เขียนคิดว่าใน US น่ะ ) โดย มี 6 OEM พันธมิตร Motorola , LG, Acer, Samsung, Asus, Toshiba ที่ผลิต Tablets โดยมี Official service กับทาง Google (คือ Brand เหล่านี้จะสามารถใช้ Google service ได้ทันที เช่น Market , Gmail, Youtube ฯลฯ)
- อัตราการลงโปรแกรมจาก Market เพิ่มขึ้นเท่าตัวทุกๆเดือน จากจำนวน device ที่มากขึ้น
- Honeycomb (platform) ที่เป็น Tablet ยังคงเป็นตัวที่ทำรายได้กับ paid app สูงสุด
- อัตราส่วน platform
1.5-1.6 เหลือเพียง 2.8 %
2.2 – 2.3 เยอะที่สุด 95.8 %
3.0 ขึ้นไป ยังคงเป็นกลุ่มเล็กๆ ที่ 1.4 %
- โดยทุกๆ Brand ที่อยู่ เป็น พันธมิตรก่ะ Google จะต้องส่งมอบ Update ใน 18 เดือนแรก หลังจากการเปิดตัวและขายจริง
- และ App นั้นๆ ใน version หนึ่ง จะสามารถ run ใน version ที่สูงกว่าได้ Google จะพยายามรักษาให้ Ecosystemใหม่ กับ app รุ่นก่อนๆ เข้ากันได้
Market licensing

แล้วก็มาถึงเรื่อง Market licensing ที่ Developer ทุกๆคนรอคอย
ต้องเกริ่นก่อนว่าทำไมถึงต้องมี Market licensing
จากปัญหาที่เกิดขึ้นช่วงก่อนๆ ผู็ที่ได้ ซื้อ paid app ได้ file APKไป หรือ hacker ได้ file APKของ application ตัวนั้นๆ ไป แล้วไปรันในเครื่องอื่นๆ รวมถึงแจกจ่าย ไม่ว่าจะปล่อยฟรีแบบใจดี หรือขายกันแบบโจ่งครึ่ม ออกแนว คนใช้ไม่ได้ซื้อ คนซื้อทั้งซื้อทั้งใช้ (และอาจจะโดนล้วงแบบไม่รู้ตัว
)
ทำให้เหล่าบรรรดาผู้พัฒนา app ตัวจริงต่างขวัญผวาไปพักใหญ่ ทาง Google เลยต้องออกนโยบายเพื่อช่วยเหลือเรื่อง pirate หรือ app เถื่อน จึงเป็น ที่มาของ Market licensing !

หลักการทำงานของมันคือ
เมื่อมีการ install app ลงบนเครื่อง Market ที่อยู่ภายในเครื่องจะเป็นตัวจัดการสิทธิที่มีของ user นั้นๆ ให้ สิทธิที่ว่านี้คือ สิทธิในการใช้งานหรือเข้าถึง app นั้นๆ
โดยข้อมูลส่วนตัวของผู้ใช้ / เจ้าของเครื่องที่ install จะไม่ได้เก็บไว้ใน app แต่
แต่ Market จะเป็นคนดึงเอา user info ของเจ้าของเครื่องนั้นๆ(ในความคิดผู้เขียนคิดว่าดึงเอามาจาก Gmail account )
เมื่อเครื่องต่อเน็ต market จะตรวจดู app ว่ามีการพ่วงระบบ Market licensing หรือไม่ ถ้ามี มันก็จะไปดึง User info แล้วนำทั้ง 2 ข้อมูล ส่งไปที่ Licensing server เพื่อ Check ว่า user คนนี้ได้ซื้อ app จริงหรือไม่
ถ้าจริงก็ ใช้งานได้ปกติ แต่ถ้าตรวจพบว่า ไม่พบสิทธิในการใช้งาน ก็จะส่ง request ผ่านมาทาง market ให้จัดการ
ที่นี้ Scenario ต่อไปของ Google เมื่อพบการ pirate หรือ ใช้ของเถื่อน
จะแบ่งเป็น ให้ Block การใช้งานเลยก็ได้ หรือ ปล่อยให้ user เล่นไปสักหน่อย แล้วค่อยขึ้น error เตือนเพื่อให้ user ซื้อของจริง (Engineer ค่อนข้างแนะนำให้ใช้แบบหลัง) ซึ่ง Developer จะสามารถไป set action เองได้ โดย config ใน app และ Market licensing ของ app อีกที
การที่ปล่อยให้ใช้ไปก่อนแล้วค่อยซื้อ เป็นการทำให้ user ไม่หนีจาก app นั้นไปเลย ซึ่งถา user ถูกใจ app จริงๆก็สามารถทำการซื้อได้ภายหลัง
นอกเหนือจาก Market licensing ทาง Engineer ได้แนะนำมาอีกว่า ให้ improve code เพื่อป้องกันการ re-engineering หรือ decompile จากเหล่านักเคะเเกะเกาทั้งหลาย ดังนี้
Code obfuscation
เป็นการทำให้ code มันพันๆกัน แบบเกะและอ่าน ได้ยากเวลา decompile เช่นชื่อ function SaveDataToDatabase() => ABC() ซึ่งคนแกะจะแปลได้ยากว่า function นั้นทำอะไร แต่ก็กันได้ในระดับหนึ่ง โดยทาง Google แนะนำ Proguard
Modify LVL code
บางครั้งการ rename function อาจจะไม่พอ ตัวเลือกที่เพิ่มขึ้นมาคือการ Modify code ในขั้น implement เลย ซึ่ง ทาง Engineer เขาแนะนำมาว่า “Make Unique” หรือทำให้ code เราเป็นเอกลักษณ์พิเศษ อ่านได้คนเดียวอะไรประมาณนั้น (แม้มันจะขัดกับ หลัก Software Engineer ก็ตาม)
Temper Resistant
สืบเนื่องจาก เวลาเรา publish app เข้า Market เราต้อง Sign Key ของเราเข้าไปด้วย (เหมือนทำลายนํ้าให้programเราเพื่อแสดงความเป็นเจ้าของ) ทีนี้ถ้าเกิด hacker ได้ key เราไปแล้วเอาไป publish แบบไม่ได้อนุญาติ เราจะเสี่ยงในการเสียง ชื่อเสียง หรือเสียประวัติได้ถ้า app นั้นไม่ดี หรือไปสร้างปัญหาให้ user ทางเลือกคือ Check key ตอน run time และเก็บ key แยกกันกระจายไปยัง code ส่วนต่างๆ และใน XML (ผู้เขียนยอมรับว่า นึกภาพไม่ออกจริงๆ ==)
Tip to Success
การทำ app ให้ประสบความสำเร็จใน Market ได้นั้นต้องอาศัยปัจจัยหลายๆอย่างเข้าช่วย
- Market seller option – ตอนนี้ developer ไทยยังขายผ่าน Market ไม่ได้น่ะคับ ซึ่งทาง Google กำลังพิจารณาข้อกฎหมาย + นโยบายธนาคาร บ้านเราอยู่ (แต่ผู้ใช้งานในไทยซื้อ app ได้ล่ะคับ)
- Payment option
- In-app billing ซึ้อ content ใน app
- Carrier billing ซื้อเท่าไหร่ จ่ายปลายเดือนพร้อมบิลโทรศัทพ์
- Subscription billing คล้ายๆการ ตอบรับ รับข่าวสารเป้นเวลา 1 เดือน แนวๆ ตอบรับหนังสือพิมพ์หรือข่าวผ่าน SMS
- Target application - ต้องมองหลายๆมุม ทั้ง
- Capability – พวก Based on Platform อะไร ต้อง support screen size ไหน density เท่าไหร่ รองรับกับ Hardware หรือ Software ยังไง
- Country + Carrier สั้นๆคับคือ ต้องศึกษา Rule กับ Regulation ดีๆ
- Device เป็นการเลือกตลาดที่จะลงไปเล่น ให้เครื่องไหนสามารถใช้ app ได้ ยิ่งกว้างกว่ายิ่งดี (แต่ Developerจะเหนื่อย ==”)
- Launch supported for multiple APKs เคสนี้เช่น เกม Graphic สูงๆ ที่กิน spec เยอะ แต่อยากให้รุ่น เล็กๆ ได้เล่นบ้างแบบไม่ต้องให้ Graphic วิ่งสูงๆ ก้ทำ APK แยกออกมา
- Nice landing page หรือที่เรียกว่า มีหน้าบ้านที่ดี ผู้ใช้งานจะประทับใจตั้งแต่แรกเห้นถ้าเราทำเว็บให้ app สวยๆ ดีๆ เป็นที่น่าสนใจ
Afternoon Session - Honeycomb overview
ช่วงบ่ายเป็นการแนะนำ Ecosystem กับ development ของ Honeycomb เป็นซะส่วนใหญ่ โดยผู้เขียนคิดว่าคนที่ตามเรื่องราว Android มาตลอดตั้งแต่ต้นปีก็คงจะรู้ข้อมูลที่ Google เขาเอามาบอกวันนี้ แต่ผู้เขียนก็จะเกริ่นคร่าวๆทบทวนอีกทีคับ

Honeycomb เป็น platform หนึ่งของ Android ที่ถูกต่อยอดพัฒนาออกมาสำหรับ Tablet ที่มีหน้าจอขนาดใหญ่กว่า smartphone ทั่วไป โดยมีหมายเลข API ตั้งแต่ 11-13 ขึ้นมา
รูปแบบ design และ look and feel จะเป็นคนล่ะแบบกับบน version ก่อนหน้า (Gingerbread) และจะมีระบบ widget ที่แตกต่างเช่นกัน ทำหน้าที่เป็นด่านหน้าของ App แสดงผลบางส่วน ก่อนที่ User จะเลือกเข้าไปดูรายละเอียดใน App นั้นอีกที
การออกแบบ App มีคำแนะนำว่าอย่าไป มองหรือ design ที่ มุมมองแนวตั้ง หรือ Portrait เท่านั้น ตัว Honeycomb รองรับการจัดหน้าจอแบบทั้งแนวตั้งและแนวนอน จึงต้องทำ App support ทั้ง 2 รูปแบบ
นอกจากนั้นก็มีการแนะนำ Feature ต่างๆ ที่ทำขึ้นพิเศษบน Honeycomb
- Dimming taskbar (prevent popup/ alert on take bar appear when use full screen mode)
- Notification bar
- Action bar (transform straight forward from menu bar )
- Re-design home screen widget
และยังแนะนำในส่วนของ APIs บางตัว
ใช้แนวคิดคล้ายๆกับ Activity แต่ให้สามารถอยู่เป็นส่วนๆในจอใหญ่ได้ เรียกว่า Fragment โดยจัดการได้สองทาง XML, dynamic in code ใช้ Fragment manager จัดการ fragment ในหน้า
ใช้จัดการข้อมูลแบบ Asynchronous เมื่อมีการเปลี่ยนแปลงของ fragment ทั้งรับและส่ง
จัดการ copy & paste กับ Drag and drop
มีการปรับปรุงและพัฒนาในส่วนของ drawable object พวก layout และ canvas และทำให้สามารถ setting Hardware Acceleration ได้ทั้งจาก Activity , Windows และ View level
ถ้าต้องการจะเขียนOpenGL ให้เขียนใน NDK (เขียนในรูปแแบบภาษา c,c++) เรื่องของ speed ก่ะ quality ของการ render จะดีกว่า
เป็นอีกทางเลือกของการทำ 3D Render นอกจาก OpenGL
- Property Animation framework (Can animate any object’s properties)
- Multimedia (allow HTTP live streaming , plugable DRM, support voice over ip and so on)
- Entreprise (Provide more complex encryption => more secure)
- Compatibility library เป็นการ add function ที่จำเป็น ให้ App version เก่าถึง 1.6 สามารถรันได้
- New Screen size
- smallesWidth (res/layout-sw720dp)
- width(res/layout-w600dp)
- height(res/layout-h720dp)
หมดล่ะครับ สำหรับ android โดยส่วนตัวแล้วรู้สึกว่า ครั้งนี้ Android มาน้อยไป หรือตัวผู้เขียนอาจจะคาดหวังอะไรเยอะไป
งานนี้ นอกจาก Android แล้ว ยังมี HTML5 และ Google Analytic ที่เป็นตัวเด่นของงาน คนเข้าชมเพียบเลยคับ โดยเฉพาะ Technology ของ HTML5 ที่ ใช้ CSS Render ภาพ 3D animation นั้น ขอบอกว่า … สุดยอดมาก! (ดูรูปข้างล่างคับ)

รายละเอียดโครงการตามนี้เลยครับ http://code.google.com/events/devfests/2011/
สุดท้ายนี้ ขอขอบคุณ Google Thailand ที่พาทีม Developer จากทั้ง Sydney , San Francisco และในประเทศใกล้เคียงใน South East Asia มาพูดในสิ่งที่เป็นที่สนใจของ Developer ไทยคับ