วันพฤหัสบดีที่ 25 พฤษภาคม พ.ศ. 2560

มารู้จัก ซัมมารีน (Xamarin)

Image result for xamarin logo
มารู้จัก ซัมมารีน (Xamarin)

ด้วยปัจจุบัน (พค 2017) มีแพลทฟอร์มที่เป็นที่นิยมในตลาดอยู่สองแพลทฟอร์มที่แข่งขันกันอยู่คือ iOS และ Android ซึ่งเป็นระบบปฏิบัติการสำหรับอุปกรณ์เคลื่อนที่หรือมือถือ (สมาร์ทโฟน และแทบเลท) ที่มีส่วนแบ่งทางการตลาดทั่วโลกในไตรมาศที่สี่ ของปี 2015 มากถึงร้อยละ 98.4 (รวมทั้งสองแพลทฟอร์ม)  เพิ่มมากขึ้นจากปีที่แล้วในไตรมาศเดียวกันที่ร้อยละ 96.4 จากการสำรวจของ Gartner


ตัวอย่างเช่น เมื่อเราต้องการตรวจสอบข้อมูลต่างๆ ในบัญชี เฟสบุ้ค หรือทวิตเตอร์ โดยปกติส่วนตัวแล้วก็จะกระทำผ่าน mobile app ของสื่อสังคมนั้นๆ โดยตรงแทนที่จะใช้งานผ่านเว็บไซต์ แน่นอนท่านเชื่อหรือไม่ว่า mobile application มียอดการใช้งานสูงมากกว่าการใช้งานเว็บทั่วโลก

แน่นอนเมื่อเราทราบถึงพฤติกรรมผู้บริโภคทางด้านเทคโนโลยี เช่นนี้แล้ว บริษัทหรือธุรกิจใดๆ ก็ตามที่ต้องการประชาสัมพันธ์ สินค้าหรือบริการของตนเองให้เป็นที่รู้จักในตลาด ก็จำเป็นต้องให้ความสนใจกับแนวโน้มผู้บริโภคที่เปลี่ยนไปเหล่านี้เช่นกัน รวมทั้งจะสามารถใช้เทคโนโลยีเหล่านี้ อย่างชาญฉลาดได้อย่างไร



ด้วยเหตุนี้ หากบริษัทของเราต้องการสร้างแอพพลิเคชั่นที่สามารถใช้งานได้ทั้งสามแพลทฟอร์ม ทั้ง Android, iOS และ Windows phone บริษัทก็จำเป็นต้องมีทีมงานที่มีความรู้ในการเขียนโปรแกรมทั้งสามภาษาคือ Java สำหรับ Android, Objective-C หรือ Swift สำหรับ iOS และ C# และ XAML สำหรับ Windows phone ซึ่งเป็นวิธีการที่เรียกว่า "วิธีการแบบไซโล" (Siloed approach)



บางบริษัทจึงต้องผิดหวังกับวิธีแบบนี้ อันเนื่องมาจาก ค่าใช้จ่ายสูง บริษัทเหล่านี้จึงหันไปใช้เว็บเบสแอพพลิเคชั่น ที่คุณสามารถนำโค้ดกลับมาใช้ใหม่ บนแพลทฟอร์ที่แตกต่างกัน  โดยเขียนด้วยภาษา HTML, CSS และ JavaScript (เป็นแนวคิดที่ดี หากคุณมีความรู้ในการพัฒนาเว็บมาก่อนเป็นพื้นฐาน) กล่าวคือเว็บเบสแอพ สามารถใช้ได้บนทุกแพลทฟอร์ม โดยการใช้งานผ่านเว็บเบราเซอร์
ซึ่งด้วยวิธีการเช่นนี้ ทำให้คุณสามารถได้รับประโยชน์ ต่างๆ ดังนี้
  • เขียนโค้ดเพียงครั้งเดียว หรือแบบเดียว แต่สามารถใช้งานได้บนทุกๆ อุปกรณ์
  • ประหยัดเงิน
  • แล้วอะไรคือข้อเสียของวิธีการนี้หล่ะช่วยบอกที ?

ประสิทธิภาพครับ ด้วยวิธีการนี้ประสิทธิภาพการทำงานของแอพจะลดลง (จงจำไว้ว่า เราทำงานผ่านเว็บแอพ)
แน่นอน มันไม่สามารถเข้าถึงคุณสมบัติพื้นฐานทั้งหมดของแพลทฟอร์มได้โดยง่าย
เว็บเบสเฟรมเวิร์คที่ได้รับความนิยมสูง สองเฟรมเวิร์คในปัจจุบันคือ คอร์โดว่า (Cordova) และ ไอโดนิก (Ionic)

ปัจจุบันเราพบว่ามีวิธีการใหม่ที่ทำให้เราสามารถทำใด้ทั้งสองวิธี คือ การแบ่งปันโค้ดด้วย C# และยังสามารถเข้าถึงคุณสมบัติของแอพพื้นฐานได้ด้วย Xamarin (แซมมารีน มาจากคำว่า แทมมารีน และเปลี่ยนตัวแรกเป็น X)


แล้วอะไรคือ แซมมารีน (Xamaerin)

มันเป็นเครื่องมือที่มหัศจรรย์อย่างยิ่งที่สามารถทำให้เราสามารถทำงานต่างๆ ทำให้เราสามารถเขียนแอพพลิเคชั่นสำหรับมือถือ ด้วย C# และสามารถสั่งให้มันทำงานบนแพลทฟอร์มมือถือใดๆ ได้อย่างง่ายดาย


ด้วย ส่วนติดต่อขั้นพื้นฐาน (Native UI) การเข้าถึง API พื้นฐาน (Native API) และ ประสิทธิภาพขั้นพื้นฐาน (native performance) สิ่งเหล่านี้โดยปกติคุณจะสามารถทำได้เฉพาะใน อ็อบเจ็กทีฟ ซี (Objective C), สวิฟท์ (Swift) หรือไม่ก็ จาวา (Java) ปัจจุบันคุณสามารถทำสิ่งเหล่านี้ได้ด้วย ซีชาร์ป (C#) โดยแซมมารีน (Xamarin)  
ด้วยความสามารถในการทลายกำแพงข้อจำกัดทางเทคโนโลยีนี้ จึงทำให้เกิดระบบปฏิบัติการใหม่ขึ้น
เรามาพบกับ ตระกูล Xamarin กัน  
screen-shot-2016-10-09-at-11-14-28-pm
ตอนนี้เราจะมาพิจารณากันว่า Xamarin.iOS, Xamarin.Android และ Xamarin.Forms นั้น มีความแตกต่างกันอย่างไร


Xamarin.iOS และ Xamarin.Android ซึ่งแสดงให้เห็นถึงคุณสมบัติของมันอยู่แล้วด้วยชื่อ ก็คือเป็น ทูลคิท หรือชุดเครื่องมือสำหรับการเชื่อมต่อกับผู้ใช้ หรืออินเตอร์เฟสสำหรับผู้ใช้ (UI toolkits) สำหรับการสร้างแอพ ด้วยความช่วยเหลือของ API ของแพลทฟอร์ม และ Mono .NET เฟรมเวิร์ค หากคุณตัดสินใจที่จะสร้างแอพโดยใช้ผลิตภัณฑ์ทั้งสองนี้ คุณก็จะได้รับประโยชน์คือสามารถปรับแต่งส่วนติดต่อกับผู้ใช้สำหรับแต่ละคน แต่ก็มีข้อจำกัดบางประการในการแบ่งปันโค้ด
นอกจากนี้ หากคุณเลือกที่จะสร้างแอพด้วย Xamarin.Forms คุณก็เพียงเขียนโค้ดด้วยโค้ดภาษาใดภาษาหนึ่ง จากนั้นโค้ดที่คุณเขียนขึ้นก็จะถูกแปลในขณะทำงาน (runtime) ให้ไปอยู่ในแพลทฟอร์มพื้นฐานแบบต่างๆ ด้วยวิธีการเช่นนี้ ทำให้คุณสามารถแบ่งปันโค้ดโปรแกรมของคุณได้ถึงร้อยละ 90

หากคุณสับสนว่า แล้วคุณควรจะพัฒนาแอพของคุณด้วยผลิตภัณฑ์ใด คุณสามารถพิจารณาได้จากเงื่อนไขต่อไปนี้

Xamarin.Forms นั้นเหมาะสำหรับ
  • แอพที่ต้องการ ความสามารถเฉพาะของแพลทฟอร์มเพียงเล็กน้อย 
  • แอพที่ต้องการต้องการแบ่งปันโค้ด นั้นเป็นเงื่อนไขที่มีความสำคัญมากกว่าความต้องการทางด้าน UI ที่เป็นการเฉพาะ 

ส่วนความสบายที่นักพัฒนาได้รับจาก XAML ของ Xamarin.iOS และ Xamarin.Android นั้นเหมาะสำหรับ
  • แอพที่ต้องปฎิสัมพันธ์ด้วยพฤติกรรมขั้นพื้นฐาน 
  • แอพที่ใช้ API คุณสมบัติเฉพาะของแต่ละแพลทฟอร์ม เป็นจำนวนมาก 
  • แอพที่มี UI เฉพาะ เหล่านี้เป็นความต้องการที่สำคัญมากกว่า การแบ่งปันโค้ด 

ประโยชน์ของแซมมารีน ก็คือ
  • ทำให้คุณสามารถใช้พลังความรู็ใน .NET และ  C# ที่มีอยู่ในตัวคุณให้เป็นประโยชน์ได้เป็นอย่างมาก 
  • อินเตอร์เฟสกับผู้ใช้ขั้นพื้นฐาน 
  • สามารถใช้ประสิทธิภาพขั้นพื้นฐาน 
  • สามารถแบ่งปันโค้ดโปรแกรม 



ข้อจำกัดของ (Xamarin.iOS และ Xamarin.Android):
  • ไม่ใช่การแบ่งปันแพลทฟอร์ม UI ส่วนอินเตอร์เฟสกับผู้ใช้ 
  • ด้วยผลิตภัณฑ์ทั้งสองต่อไปนี้ ทำให้คุณสามารถเขียนโค้ด UI ที่ปรับแต่งให้เหมาะสมได้เป็นอย่างมาก สำหรับแต่ละแพลทฟอร์ม อย่างไรก็ตามในขณะเวลาเดียวกัน คุณจะพบโอกาสในการแบ่งปันโค้ดได้ถึงร้อยละ 60 ดังต่อไปนี้ 


screen-shot-2016-10-11-at-9-03-32-pm

ความต้องการทางด้านฮาร์ดแวร์
หากคุณต้องการ สั่งให้โปรแกรม iOS ทำงานหรือคอมไพล์ iOS โปรแกรมโดยใช้ซัมมารีนสตูดิโอ (Xamarin studio หรือ Visual Studio) คุณจำเป็นต้องมีเครื่อง mac เพื่อใช้ในการคอมไพล์ โค้ดที่คุณพัฒนาขึ้น คุณสามารถได้รับเครื่อง mac ของตัวคุณเองได้ด้วย วิธีต่อไปนี้คือ เริ่มต้นด้วยการเชื่อมต่อกับเครือข่าย ที่คุณใช้งานอยู่ หรือคุณสามารถเช่าใช้เครื่อง mac ในคลาวด์ อาทิเช่น MacinCloud services


คุณสามารถค้นหาเงื่อนไขต่างๆ ที่ทำให้คุณรู้สึกดีด้วยการตรวจสอบ ความต้องการและการติดตั้ง  Xamarin.iOS


มีท่านใดสนใจเรื่องเกี่ยวกับ IDE บ้างหรือไม่?
และในแนวทางเดียวกัน หากคุณเป็นนักพัฒนาที่ใช้เครื่อง mac คุณจะไม่สามารถติดตั้ง Visual Studio ลงบนเครื่องของคุณได้ ถ้าเช่นนั้นแล้วเราจำเป็นต้องโยนเครื่อง mac ของเราทิ้งไปหรือไม่ แล้วการทำงานร่วมกันเป็นทีม (Team explorer) หรือ การทำวิชวลสตูดิโอ มีความสามารถเพิ่มขึ้น (Resharper using Visual Studio) หรือไม่
วิชวลสตูดิโอ (Visual Studio)
xamarin2x-yuj5jk33

เพื่อให้ได้ประโยชน์สูงสุดครบถ้วน ด้วย Team explorer หรือ Resharper ด้วย Visual Studio เป็นสิ่งแรกสำหรับคุณ

Xamarin Studio
ios-designerนักพัฒนา iOS (ios-designer)
หากคุณเป็นผู้ใช้เครื่อง mac คุณไม่สามารถติดตั้ง Visual Studio ลงบนเครื่องของคุณได้ จึงเป็นเหตุผลที่ทำไมคุณจึงต้องหันไปใช้ Xamarin Studio ที่สามารถใช้กับเครื่อง PC ส่วนบุคคลได้ด้วย ซึ่งเราแนะนำให้คุณใช้ Visual Studio หากคุณใช้เครื่องที่เป็น Windows
คุณสามารถดูวิธีการติดตั้งได้จากลิงค์ต่อไปนี้
https://developer.xamarin.com/guides/ios/getting_started/installation/

แหล่งที่มา 
https://www.codeproject.com/Articles/1173490/Introduction-to-Xamarin

วันจันทร์ที่ 8 พฤษภาคม พ.ศ. 2560

NETPIE IoT Academic Training for Instructors

อาจารย์สาขาวิชาวิศวกรรมคอมพิวเตอร์ เข้าร่วมอบรม
หลักสูตร การพัฒนาอุปกรณ์และบริการ IoT
ด้วยแพลตฟอร์ม NETPIE สำหรับอาจารย์
(NETPIE IoT Academic Training for Instructors)
ระหว่างวันที่ 3 ถึง 4 พฤษภาคม 2560
ณ NECTEC อุทยานวิทยาศาสตร์และเทคโนโลยีแห่งประเทศไทย ปทุมธานี


NETPIE = CLOUD PLATFORM + MICROGEAR LIBRARY

คลาวด์แพลทฟอร์ม (CLOUD PLATFORM)
แพลตฟอร์ม NETPIE เป็นแพลตฟอร์มแบบ cloud-as-a-service ซึ่งช่วยอำนวยความสะดวกในการเชื่อมต่ออุปกรณ์ IoT ("สิ่งต่างๆ") เข้าด้วยกันได้อย่างราบรื่นและชัดเจนที่สุด โดยการผลักความซับซ้อนในการเชื่อมต่ออุปกรณ์ IoT จากมือผู้พัฒนาแอพพลิเคชันหรือผู้ผลิตอุปกรณ์ ไปยังคลาวด์ ทำให้ลดความยุ่งยากในการพัฒนาลง

MICROGEAR LIBRARY
Microgears เป็นไลบรารี่ เฟิร์มแวร์หรือ SDK ที่สนับสนุนช่องทางการสื่อสารและฟังก์ชันอื่น ๆ ระหว่างสิ่งต่างๆ กับ แพลตฟอร์ม NETPIE ขณะนี้เรามี Microgears สำหรับฮาร์ดแวร์ต่างๆ รวมทั้งระบบปฏิบัติการยอดนิยม โดยMicrogears ทั้งหมดเปิดให้ใช้แบบ open-source คือเปิดเผยซอร์สโค้ด และสามารถนำไปใช้ได้โดยไม่คิดมูลค่า รวมทั้งสามารถนำไปพัฒนาต่อยอดได้

สาเหตุที่ต้องเลือก NETPIE
ทีมผู้พัฒนา NETPIE จะทำหน้าที่ดูแลงานที่น่าเบื่อให้แทน ทำให้นักพัฒนาสามารถทุ่มเทเวลาให้กับการพัฒนาแอพพลิเคชั่นทาง IoT ได้อย่างเต็มที่

THING-CENTRIC DEVELOPMENT
NETPIE ทำหน้าที่เป็นศูนย์กลางของสรรพสิ่ง คุณมีหน้าที่เพียงพัฒนาสิ่งของต่างๆ (things) ของคุณเท่านั้น โดย NETPIE จะทำหน้าที่ดูแลสิ่งต่างๆ เหล่านั้นแต่ละชิ้น ด้วยหลักการที่สิ่งต่างๆ แต่ละสิ่งเหล่านั้นมีตรรกะเป็นของตนเอง ความสามารถและการติดต่อสื่อสารในแบบของตนเอง เสมือนสังคมของมนุษย์

การจัดการแต่ละสรรพสิ่ง (IDENTITY MANAGEMENT)
ด้วยแพลทฟอร์ม NETPIE จะระบุสิ่งแต่ละสิ่ง (things) ด้วยชื่อ ทำให้สรรพสิ่งสามารถสื่อสารโต้ตอบกันได้เสมอ ไม่ว่าจะมี IP address หรือไม่ก็ตาม นอกจากนี้ข้อมูลระบุตัวตนยังสามารถรวมเข้าด้วยกันให้เหมาะสมกับแต่ละแอพพลิเคชั่น

การพิสูจน์สิทธิ์ แบบไดนามิก (DYNAMIC AUTHORIZATION)
ด้วยสรรพสิ่ง ต้องผ่านการพิสูจน์สิทธิ์เพื่อใช้ในการสื่อสารโดยพิจารณาจากค่าบ่งชี้ของแต่ละสรรพสิ่ง โดยการพิสูจน์สิทธิ์สามารถปรับแต่งได้แบบไดนามิก เพื่อสามารถควบคุมการเข้าถึงอุปกรณ์ต่างๆ ได้โดยละเอียด

การเชื่อมต่อที่ชัดเจน (TRANSPARENT CONNECTIVITY)
สรรพสิ่ง สามารถสื่อสารระหว่างกันได้ตราบที่ต้องการ ไม่ว่าจะอยู่ที่ใด ประหนึ่งว่าแต่ละสรรพสิ่งมีการเชื่อมต่อกันแบบ จุดต่อจุด (end to end) กันโดยตรง


รูปแบบบริการที่เป็นแบบแผน (SERVICE-ORIENTED MODEL)
ด้วยแนวคิดที่ให้ NETPIE ทำหน้าที่เสมือนผู้ช่วยส่วนตัวของ Microgears หากต้องการความช่วยเหลือ ก็เพียงแค่โทรหา NETPIE

สถาปัตยกรรมคลาวด์ที่ตอบโจทย์ (TRUE CLOUD ARCHITECTURE)
ด้วย NETPIE ได้รับการออกแบบมาด้วยสถาปัตยกรรมแบบคลาวด์ที่แท้จริงตั้งแต่ต้น องค์ประกอบต่างๆ จึงมีโครงสร้างแบบกระจาย และเชื่อมต่อเข้าด้วยกันแบบหลวมๆ เพื่อทำให้สามารถปรับขนาดและทนทานต่อความผิดพลาดของแพลทฟอร์มได้เป็นอย่างดี

บริการต่างๆ ของ NETPIE (NETPIE Services)
REST API
ด้วย REST API ถูกออกแบบและพัฒนาขึ้นให้มีขนาดเล็ก และเป็นสากล ทำให้ระบบเดิมสามารถปฏิสัมพันธ์กันแบบเรียลไทม์ ผ่านโปรโตคอล HTTP
แพทเทิร์น การลงทะเบียนเผยแพร่ (PUBLISH-SUBSCRIBE PATTERN)
ด้วยแพทเทิร์นนี้ ทำให้เราสามารถสร้างรูปแบบการสื่อสารแบบลงทะเบียนเผยแพร่ได้ ทำให้สามารถส่งข้อความระหว่างสรรพสิ่งต่างๆ อย่างรวดเร็วทันที
การประสานงาน (COORDINATION)
ด้วยบริการที่ประสานงานกัน ทำให้สรรพสิ่งสามารถค้นหา ตรวจสอบ ความมีตัวตนของสิ่งต่างๆ ได้
การจัดเก็บข้อมูล (STORAGE)
บริการของ NETPIE รองรับพื้นที่การจัดเก็บข้อมูลแบบง่ายๆ ผ่านพื้นที่ POSTBOX ทำให้ผู้ใช้งานสามารถจัดเก็บข้อมูลของตนเองลงใน POSTBOX และสามารถเรียกใช้ได้ในภายหลัง