หัวข้อวันนี้ตั้งชื่อหัวข้อได้ไม่ตรงนักแต่ผมอยากจะมาพูดถึงเจ้า 4 ตัวนี้ให้ทุกท่านฟังสำหรับคนที่กำลังจะพัฒนา App ขนาดเล็กหรือกลาง แล้วทำไมเจ้า 4 ตัวนี้มันถึงดังมากๆโดยเฉพาะ jQuery ซึ่งตอนนี้เป็นที่กล่าวถึงของ Javascript Framework กันมากเลยทีเดียว ผมจะมาพูดถึงทีละตัวนะครับ พร้อมความสัมพันธุ์
- Codeigniter จะว่าผมโม้ก็ไม่ว่านะครับ เป็นตัวที่ผมว่าอนาคตยังอีกไกล แล้วก็ไกลกว่า KohanaPHP อีกด้วยความที่เรียบง่าย Document อ่านง่าย ต่อเติมได้ง่ายทำให้เจ้า Codeigniter นี้สามารถแปลงไปได้ในทุกระบบ ถึงแม้จะมี Function งานไม่ครบเหมือนพวก Symphony หรือ KonahaPHP แต่เจ้าตัวนี้ก็มาทดแทนด้วยความเร็ว , เข้าใจง่าย และ ต่อเติมง่าย แทนโดยเจ้า Codeigniter มีการวางโครงสร้างมาจาก Ruby on Rails (แต่เขียนด้วย PHP ซึ่งมันสุดยอดมาก)
- jQuery ตัวนี้ใครติดตามผมมานานจะรู้ว่าผมเชียร์ตัวนี้ แทบใจขาดดิ้นๆๆ เลยทีเดียวด้วยความสามารถที่จิ๋วแต่แจ๋ว จัดการ Data ได้อย่างยอดเยี่ยมแถมเปลี่ยนการ Coding ภาษา Javascript ให้ง่ายมากๆ แล้วตอนนี้มันดังจนไปเทียบเท่ากับพวก Prototype , Dojo , YUI ได้แล้ว แล้วมีทีท่าว่าจะดังต่อไป ด้วยหลักการเดิม เร็ว , เข้าใจง่าย และต่อเติมง่าย
- Ext-Js เป็นน้องใหม่ไฟแรงแถมตอนนี้ได้เปลี่ยน License เป็น GPL หรือนำไปใช้ได้ฟรีแต่ต้องเปิดเผย Source Code กระแสเลยยิ่งแรงขึ้นไปอีก (แต่ถ้าจะทำทางการค้าต้องซื้อนะครับ) โดยเจ้า Ext-JS วิธีการใช้จะคล้ายๆกับเป็น Component (แต่ก็ยังไม่สมบูรณ์) โดยเราสามารถได้ Component มาต่อเติม website ด้วยการ new Object เสร็จแล้วใส่ค่าอีกนิดหน่อยเราก็จะได้ Component ซึ่งมี User Interface ที่สวยงามพร้อมมาทันที แต่จนแล้วจนรอด มันก็เหมาะสำหรับคนที่ใช้ Javascript พื้นฐานมาคล่องพอตัวแล้วเหมือนกัน
- Adobe AIR เมื่อเจ้า Runtime ตัวนี้ออกมาพร้อม SDK ทำให้การสร้าง Desktop App เปลี่ยนไปทันที คนทำแต่ Web App ตอนนี้จะมีโอกาสได้โชว์ฝีมือในการทำ Desktop App กันแล้วด้วยภาษา HTML , Javascript , CSS 3 ภาษานี้
แล้วมันเกี่ยวกันยังไงหรอ ? ตอนนี้ผมใช้เจ้า Codeigniter กับ jQuery อยู่ซึ่งขอบอกว่า Work มากในระดับของฟรี เสร็จแล้วมีโครงการที่จะศึกษาการทำงานของเจ้า Adobe AIR ด้วยเหมือนกัน เลยศึกษามาพอสมควรโดยมันสามารถถูกเขียนได้ด้วย 3 แบบคือ AJAX , Flash , Flex แต่ผมขอเลือกทาง AJAX แทนที่จะเป็น Flash หรือ Flex เพราะผมมีพื้นด้านนี้มาเยอะแล้ว ไม่อยากเริ่มต้นใหม่ (ถึงแม้จะลงเรียน Adobe Flash ไปแล้วก็ตาม) แล้วคราวนี้ไอ้เจ้า Ext-Js นี้และที่จะมาทำให้การพัฒนา ออกมาสวยงามและมีประสิทธิภาพ โดยเสียเวลาเขียน code น้อยลง
แต่แล้วไอ้เรื่องการจัดการ Data ด้วย Javascript ปกติรวมถึงการท่อง DOM มักก็เป็นปัญหาพอควร
ดังนั้นช่วงเวลานี้กระแส jQuery + ExtJs กำลังมาแรงในการทำ Adobe AIR แต่ยังไม่มี App ที่มาจากเจ้า 2 ตัวนี้ + กันแบบดีๆเลย (เพราะกระแสมันพึ่งเริ่ม) แล้วดูจาก Document รวมถึงผมได้ลองเขียนเจ้า Ext-Js แล้วมัน ไม่ได้เขียนเข้าใจยากมากเมื่อมารวมกับ jQuery โดยผมใช้ jQuery ในการจัดการ Data , AJAX , Event Handler , Effect และท่อง DOM ส่วนที่เหลือก็ใช้ Ext-JS ในการสร้าง Component สวยๆมาใช้แบบง่ายๆ จะเห็นว่า jQuery จะเป็นฐานในการจัดการข้อมูลพื้นฐานส่วน Ext-JS มาเสริมและสุดท้าย

Codeigniter เอะแล้วมาเกี่ยวอะไรกับการใช้ Adobe AIR ละ Web Service ไงครับเจ้า Codeigniter ไม่น่าเชื่อว่าจะทำ Web Service ได้ง่ายโคตรๆ (ขอไม่บอกรายละเอียดในตอนนี้) ด้วยการที่เราสามารถเข้าถึง Method ของ Controller ได้ผ่าน URL รวมกับ function พื้นๆของ PHP อย่าง Array แล้วก็ Json_encode ทำให้มันกลายเป็น Web Service แบบ RESTful โดยง่ายเลยทีเดียว แล้วเราก็ใช้ jQuery เรียก Web Service ของ Codeigniter แล้วรับมันมาแบบ JSON แล้วนำมาใช้ประโยชน์ต่อได้ !
ขอสรุปของการทำงานแบบง่ายๆในอีกมุมหนึ่งที่ผมมา Trend นี้มาแรงในกลุ่มรายย่อยแบบเราๆทำกัน
- (X)HTML + CSS ทำงานในส่วนของโครงสร้าง User Interface
- Javascript ทำงานในการดึง Data จาก Web Service และนำมาใส่ใน User Interface รวมถึงทำ Effect ต่างๆด้วย
- PHP-OOP ใช้ในการนำ Data จาก Database มาประมวลผลต่างๆแล้วนำไปให้ Javascript เรียกใช้ Web Service
- Database ใช้สำหรับการจัดเก็บ Data แบบง่ายๆเพื่อให้ PHP นำไปประมวลผลต่อ
จุดเด่นของการใช้ Driven แบบนี้
- ปรับปรุง , บำรุงรักษาและจัดการง่าย เพราะมีการแยกส่วนอย่างชัดเจน
- ไม่จำเป็นต้องรู้ภาษา SQL ให้ลึกซึ้งเราใช้ PHP-OOP ในการจัดการ Data แทน
- มี Framework รองรับแล้วเป็น Open-Source ทุกอย่างทั้ง Codeigniter , jQuery , ExtJS รวมถึง Database ที่เป็น Open-Source อย่าง MySQL , PostgreSQL
- ถอดเข้าถอดออกได้อย่างง่ายดาย
- เขียน , ออกแบบ และเข้าใจได้ง่าย
จุดด้อยของการใช้ Driven แบบนี้
- Performance ขึ้นอยู่กับเครื่องของ User มากกว่าของ Server ยกเว้นใช้ Jaxer Server (AJAX at Server)
- ยังไม่เหมาะสำหรับงานระดับ Enterprise
- ใช้หลายภาษาทำให้ Curve ในการเรียนรู้สูง (แล้ว J2EE ละ??)
- ใช้การเชื่อมต่อจากหลายจุด ไม่เป็นหนึ่งเดียวอาจเกิดปัญหาเรื่องการเชื่อมต่อได้
วันนี้ผมก็ลาไปแค่นี้ก่อนละครับเขียนเหนื่อยเลยมีอะไรแนะนำ หรือมาเสนอความคิดเห็นก็ลง Comment กันไว้ได้เลยครับ