บทนำ
อย่างที่หลาย ๆ ท่านทราบกันว่า หนึ่งในแกนกลางหลักสำคัญของ Windows 10 นั่นก็คือ แอปพลิเคชันบนแพลตฟอร์ม Universal Windows Platform (หรือ UWP) ที่อยู่บน Windows Store ซึ่งทำให้นักพัฒนาลดเวลาการพัฒนาแอปพลิเคชันบนหลากหลายอุปกรณ์ในแพลตฟอร์มของ Windows 10 ลงไปอย่างมาก
อย่างไรก็ดีหนึ่งในปัญหาสำคัญของการพัฒนาแอปพลิเคชันบน UWP นั่นคือ การพัฒนาในฟีเจอร์บางจุดที่ค่อนข้างยุ่งยากและกินพื้นที่ของซอร์สโค้ดค่อนข้างมาก จนอาจจะทำให้เวลาของการพัฒนาแอปพลิเคชันบนแพลตฟอร์มนี้นานขึ้นกว่าที่คาดไว้ รวมไปถึงการขาดความร่วมมือกับนักพัฒนาโดยตรง
แน่นอนว่าไมโครซอฟท์เองก็ไม่ได้เพิกเฉยเกี่ยวกับปัญหานี้ และนี่จึงเป็นที่มาของโครงการ Universal Windows Platform Community Toolkit ที่เป็นการเปิดโอกาสให้นักพัฒนาเข้ามามีส่วนร่วมในการพัฒนาระบบเบื้องหลังของ UWP
ซึ่งตัว UWP Community Toolkit นั้นมีเป้าหมายสำคัญอยู่ 3 อย่างด้วยกัน ประกอบด้วย
- ลดขั้นตอนการพัฒนาแอปพลิเคชันบน UWP ด้วยเครื่องมือที่มีอยู่แล้วในชุดการพัฒนานี้ หน้าที่ของนักพัฒนาเหลือเพียงแค่นำเข้าโครงการนี้ผ่าน NuGet บน Visual Studio เท่านั้น
- เปิดซอร์สโค้ดบน GitHub ผ่านอนุสัญญาของสถาบันเทคโนโลยีแมสซาชูเซตส์ (หรือ MIT) ซึ่งก็แปลว่านักพัฒนาสามารถเข้ามาร่วมพัฒนา และใช้งานโค้ดจากโครงการนี้ได้โดยไม่ต้องจ่ายเงินให้กับทางไมโครซอฟท์แม้แต่สตางค์แดงเดียว
- การกำหนดแนวทางของ UWP SDK ในอนาคตจากเสียงของนักพัฒนา (อธิบายง่าย ๆ ก็คือโครงการนี้ เปรียบเสมือน Windows Insiders ในโลกของนักพัฒนานั่นเอง)
สำหรับโครงการนี้นั้นสามารถนำโค้ดต่าง ๆ ภายในโครงการนี้ไปใช้กับโครงการแอปพลิเคชันที่พัฒนาบนพื้นฐานของ UWP ในภาษา C# และ VB.NET ได้ทันที โดยแอปพลิเคชันที่เขียนร่วมกับโครงการนี้ จะใช้งานได้ก็ต่อเมื่ออุปกรณ์ที่รัน Windows 10 นั้นใช้เฟิร์มแวร์ November Update (รหัส 10586) ขึ้นไปแล้วเท่านั้น และในเครื่องที่ใช้ในการพัฒนาแอป จะต้องติดตั้ง Visual Studio 2015 Update 3 พร้อมติดตั้ง Windows 10 SDK เป็นที่เรียบร้อยแล้ว
ข้อดีและ API พื้นฐานของ UWP Community Toolkit
UWP Community Toolkit นั้นออกแบบมาเพื่อให้นักพัฒนาต่าง ๆ ลดเวลาที่ใช้ในการพัฒนาแอปพลิเคชันลงไปได้มากพอสมควร อย่างเช่น จากเดิมการเขียนแอปเพื่อรองรับการเชื่อมต่อทวิตเตอร์ จำเป็นต้องเขียนโค้ด REST API ที่ทางทวิตเตอร์กำหนดไว้ เปลี่ยนเป็นการเขียนโค้ดที่ผ่านการเรียก REST API ของทวิตเตอร์บน UWP Community Toolkit
ผลที่ได้ นอกจากจะช่วยลดเวลาในการพัฒนาแอปพลิเคชันแล้ว ยังทำให้โค้ดที่รันผ่าน API ตัวนี้สะอาดตาขึ้น รวมถึงช่วยลดโอกาสการเกิดบั๊กไม่พึงประสงค์จากากรเขียนโค้ดเองได้มากพอสมควรเลยทีเดียว ซึ่งตัว UWP Community Toolkit นั้นมี API ต่าง ๆ ที่พร้อมให้นักพัฒนาใช้งานมากกว่า 23 ตัว ครอบคลุมทั้งในส่วนของ frontend และ backend โดยประกอบด้วยฟีเจอร์ในหมวดต่าง ๆ ดังต่อไปนี้
- การควบคุม ประกอบด้วย
- การแสดงผลแบบตารางที่ปรับตามสภาพขนาดหน้าจอ
- มุมมองรายชื่อที่มาพร้อมกับฟังก์ชันเลื่อนลงเพื่อรีเฟรช
- ปุ่มเมนูด้านบนซ้าย (หรือปุ่ม hamburger)
- เมนูเลือกตามระยะ (เช่น เลือกตามระยะเวลา, เลือกตามระยะระหว่างเปอร์เซ็นต์)
- การแสดงผลภาพในแบบต่าง ๆ
- การกำหนดตัวอักษรที่หัวข้อแต่ละหน้า
- ตัวแสดงการปรับระดับในรูปแบบหน้าปัดอัตราเร่งของรถ
- ตัวเลือกที่สามารถใช้คำสั่งปัดซ้ายหรือขวาได้
- ไทล์ที่สามารถเปลี่ยนการแสดงผลได้ (คล้าย ๆ กับสไลด์โชว์)
- การแจ้งเตือน ประกอบด้วย
- Live tile
- ป้ายแจ้งเตือน
- ตัวช่วยด้านแอนิเมชัน ประกอบด้วย
- แอนิเมชันเลือนหายไป (fade animation)
- แอนิเมชันเบลอ (blur animation)
- แอนิเมชันย่อขยาย (scale animation)
- แอนิเมชันชดเชยสี (offset animation)
- แอนิเมชันหมุน (rotate animation)
- ตัวช่วยด้านบริการ ประกอบด้วย
- ตัวเชื่อมต่อและบริการของ Bing
- ตัวเชื่อมต่อและบริการของ Facebook
- ตัวเชื่อมต่อและบริการของ Twitter
- ตัวช่วยด้านโค้ด ประกอบด้วย
- ตัวช่วยด้านสี
- ตัวช่วยด้านการเชื่อมต่อ
- ตัวช่วยด้านการเรียกไฟล์
- ตัวช่วยด้านการสตรีมข้อมูลออนไลน์
สำหรับใครที่อยากจะเห็นภาพว่าตัว UWP Community Toolkit มีเครื่องมืออะไรบ้าง สามารถดาวน์โหลดและดูเทมเพลตแอปตัวอย่างได้ที่ Windows Store ซึ่งจะมีตัวจำลองสถานการณ์ต่าง ๆ และมีโค้ดให้ทดลองแก้ได้ทันที
เริ่มต้นใช้งาน UWP Community Toolkit
การเริ่มต้นเปิดใช้งาน UWP Community Toolkit นั้นไม่มีอะไรยุ่งยากซับซ้อนอย่างที่หลายคนคิด เพราะนักพัฒนาไม่จำเป็นต้องดาวน์โหลดซอร์สโค้ดเหล่านี้มาเพื่อใช้งาน โดยขั้นตอนต่าง ๆ มีดังนี้
ขั้นตอนแรก เปิด Visual Studio 2015 (ย้ำอีกรอบว่าต้องเป็นเวอร์ชัน Update 3 ขึ้นไปเท่านั้น)
ขั้นที่สอง สร้างโครงการใหม่ (สำหรับคนที่มีโครงการอยู่แล้ว สามารถข้ามไปข้อที่ 4 ได้เลย) โดยมีวิธีดังนี้
- เลือกไปที่ File => New => Project (หรือกด CTRL + Shift + N บนคีย์บอร์ด)
- เลือกที่ Templates => Visual C# หรือ Visual Basic => Windows => Universal
ขั้นที่ 3 สำหรับหน้าที่ให้เลือกเวอร์ชั่นของ Windows 10 ให้เลือกตรง Target Version และ Minimum Version ให้เป็น Windows 10 (10.0; Build 10568) หรือ Windows 10 Anniversary Edition (10.0; Build 14393) หรือใหม่กว่าเท่านั้น
ขั้นที่ 4 ตรงบริเวณ Solution Explorer คลิกขวาตรงชื่อของโครงการที่เราได้สร้างและตั้งชื่อไว้ (ในที่นี้คือ UWPCommunityToolkitDemo) กด Manage NuGet Packages…
ขั้นที่ 5 กดที่ Browse หาคำว่า Microsoft.Toolkit.UWP แล้วเลือกติดตั้งตัวที่ต้องการใช้ (ในกรณีนี้จะติดตั้งตัว Microsoft.Toolkit.UWP ซึ่งครอบคลุมฟีเจอร์ทุกตัวของ UWP Community Toolkit แต่ในกรณีที่ทำแอปสำหรับลง Windows Store แนะนำว่าให้ติดตั้งเป็นรายตัวจะดีกว่า)
ขั้นที่ 6 เข้าไปที่หน้าไฟล์ XAML (สำหรับเอฟเฟกต์เบื้องหน้า) หรือไฟล์ C# (สำหรับโครงสร้างเบื้องหลัง)
- สำหรับการแทรกในไฟล์ XAML (.xaml) ให้เพิ่มโค้ดดังต่อไปนี้ภายในแท็ก
<Page>
ตามโค้ดดังต่อไปนี้
xmlns:controls="using-Microsoft.Toolkit.Uwp.UI.Controls"
- สำหรับการแทรกในไฟล์ C# (.cs) ให้เปิดการเรียกใช้ชุดคำสั่ง UWP Community Toolkit ผ่านการเขียน
using Microsoft.Toolkit.Uwp;
ก่อนตัว object (หรือก่อนบรรทัดที่เขียนว่าNamespace
) ตัวแรก
ขั้นสุดท้าย เริ่มโค้ดได้ทันที โดยจะก็อบโค้ดมาจากตัวแอปตัวอย่าง หรือจะเขียนใหม่ทั้งหมดโดยอ้างอิงจาก documentation บน Windows Dev Center ก็สามารถทำได้ทั้งคู่
การรายงานปัญหาและการมีส่วนร่วมกับนักพัฒนา
Universal Windows Platform Community Toolkit ไม่ได้เป็นแค่เครื่องมือที่ออกแบบมาเพื่อความสะดวกสบายและลดการเกิดปัญหาระหว่างการพัฒนาแอปพลิเคชันบน Universal Windows Platform เท่านั้น แต่ยังเป็นเครื่องมือที่ทำขึ้นมาเพื่อให้นักพัฒนาต่าง ๆ มีส่วนร่วมเกี่ยวกับอนาคตของแพลตฟอร์มนี้ในฝั่งของนักพัฒนาอีกด้วย
และเนื่องด้วยโครงการนี้เป็นโครงการที่ไมโครซอฟท์เปิดซอร์สโค้ดให้นักพัฒนาต่าง ๆ เข้ามาแก้ไขและปรับปรุงให้โครงการนี้ดีขึ้นได้ (แนวทางเดียวกันกับ Office UI Fabric, .NET Core และ Project Islandwood นั่นแหละครับ) ทำให้นักพัฒนาสามารถ fork โครงการจาก GitHub มาเป็นโครงการแยกส่วนตัวได้ทันที
และเมื่อเราเห็นว่าโค้ดเหล่านี้มีช่องโหว่อันตราย หรือมีบั๊กที่ทำให้ไม่สามารถใช้งานได้ เราสามารถนำโครงการที่เราแยกส่วนตัวนั้นมาแก้ไข ทดสอบ และนำขึ้นโครงการผ่านการ pull request เพื่อให้ไมโครซอฟท์ได้พิจารณาในการผนวกโค้ดที่แก้ไขปัญหาเหล่านี้เพื่อทำให้ตัวชุดนักพัฒนาสมบูรณ์แบบยิ่งขึ้น
อย่างไรก็ดี ไมโครซอฟท์เองก็เล็งเห็นว่า ยังมีนักพัฒนาบางส่วนที่อยากได้ API เพิ่มเติม หรือเครื่องมือที่ให้มายังมีไม่พอใช้ ด้วยเหตุนี้ไมโครซอฟท์เองจึงเปิดหน้า UWP Community Toolkit’s UserVoice ขึ้นมา เพื่อให้นักพัฒนาต่าง ๆ สามารถเสนอ API ใหม่ ๆ หรือสิ่งที่อยากให้เพิ่มเข้าไปในโครงการนี้ นี่จึงเป็นหนึ่งในโครงการที่ทำมาเพื่อนักพัฒนาโดยเฉพาะ และยังเป็นหนึ่งในแรงผลักดันให้นักพัฒนาเข้ามาพัฒนาแอปพลิเคชันบนแพลตฟอร์มนี้มากขึ้นนั่นเอง
สรุป: เมื่อนักพัฒนากลายเป็นศูนย์กลางของการพัฒนาระบบ
จากบทความนี้ จะเห็นได้ว่า Universal Windows Platform Community Toolkit นั้น นอกเหนือไปจากการเป็นเครื่องมือที่ช่วยอำนวยความสะดวกในการพัฒนาแล้ว ยังเป็น “แพลตฟอร์ม” ที่ไมโครซอฟท์ตั้งใจทำงานร่วมกันกับนักพัฒนาตัวจริงเพื่อปรับปรุงให้แพลตฟอร์มนี้เป็นแพลตฟอร์มที่แข็งแกร่งขึ้น และที่สำคัญที่สุดคือ การที่ให้นักพัฒนาเป็นจุดศูนย์กลางของการพัฒนานั้น สะท้อนแนวทางของไมโครซอฟท์ในฝั่งของนักพัฒนาที่เปลี่ยนไปโดยสิ้นเชิงด้วยนั่นเอง
ณ เวลานี้ เริ่มมีแอปจำนวนหนึ่งที่ใช้เครื่องมือนี้ในการพัฒนาแอปพลิเคชันแล้ว อย่างเช่น แอป MyTube! ที่นำเอฟเฟกต์เบลอเข้าไปอยู่ในส่วนวิดีโอเวลาไล่หาวิดีโอใหม่ ๆ ซึ่งถือว่าเป็นการเริ่มนำไปใช้ได้ค่อนข้างเร็ว เพราะเครื่องมือนี้มีอายุเพียงแค่ 2 เดือนเท่านั้น!
ในครั้งต่อไป จะมาพูดถึงการพัฒนาบนโค้ดจริง ๆ โดยเริ่มจากการพัฒนาฝั่ง frontend ก่อนครับ