4/27/2555

เริ่มต้นหัดทำ ศึกษา Adobe Flex

ผมก้อกะลังเขียน flex อยู่นะคับ แต่ไม่ได้เก่งอะไร แค่ถูๆ ไถๆ นะคับ
เปรียบเทียบง่ายๆ เหมือนเราเขียน html แล้วแทรก สคริป php เข้าไปใน html นะคับ
mxml ก้อเหมือนกับ tag html ครับ ส่วน php ก้อเหมือน action script คับ
ดังนั้นผมคิดว่า ถ้าจะศึกษา flex ก้อควรจะศึกษา actionscript เป็นหลักครับ
จะดีที่สุด ตอนนี้ที่ผมเขียนอยู่ ใช้ flex เป็นแค่ interface คับ ส่วนอื่นๆ เขียน actionscript ควบคุมทั้งหมดคับ

ลองดูคับ ไม่ยากอย่างที่คิดคับ  ;)

http://blog.flexexamples.com/
http://www.adobe.com/devnet/flex/videotraining/

ลองดูนะคับอาจจะพอช่วยได้

ตอนนี้ Tutorial และ หนังสือที่เป็นภาษาไทยสำหรับ Flex ยังไม่มีออกมาครับ แต่ของต่างประเทศมีตรึม
เอาเป็น link ก่อนเป็นไงครับ

link นี้เป็น link ทางการของ Adobe เขาสำหรับผู้เริ่มต้น
http://www.adobe.com/devnet/flex/?navID=gettingstarted&sdid=ZFCT

link นี้ก็เป็น community ที่มี resource ของ flex เยอะมาก
http://www.brightworks.com/technology/adobe_flex/components_widgets_etc.html

link นี้เป็น cookbook ครับ คงจะไ้ด้ใช้งานมันมากเมื่อเราต้องการพัฒนาระบบจริง แล้วติดปัญหา เช่น จะทำให้ mouse กลายเป็นรูปมือเืมื่อเลื่อนไปบน button ต้องทำอย่างไร? (อย่าคิดว่าง่าย), หรือจะสร้างให้ระบบของเราเป็น international language ได้อย่างไร? (แหล่มมากๆ)
http://www.adobe.com/cfusion/communityengine/index.cfm?event=homepage&productId=2

คราวนี้มาถึงหนังสือที่แนะนำ
ถ้าคุณมีพื้นฐานทาง Programming มาแล้วแนะนำเล่มนี้ครับ สุดยอดของ Technical Book แล้ว (เล่มนี้ผมอ่านทุกหน้าแบบไม่เว้นเลยครับ)
http://www.amazon.com/gp/product/0321529189/ref=s9subs_c2_14_at2-rfc_g1?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-2&pf_rd_r=1H2NGDQBRPDPVEB1E9T9&pf_rd_t=101&pf_rd_p=278240301&pf_rd_i=507846

ถ้าไม่มียังใหม่กับ Programming ก็เล่มนี้ครับ ไม่หนาจนเกินไป
http://www.amazon.com/Learning-Flex-Internet-Applications-Developer/dp/0596517327/ref=pd_sim_b_4

และสำหรับ Flex Programmer ขั้นกลางก็ต้องสองเล่มนี้ครับ (และเป็นเพียงสองเล่มในตลาดตอนนี้)


คราวนี้มาถึงเครื่องมือที่จะต้องเลือกใช้งานครับ
ทางเลือกแรก
ถ้า คุณอยากจะได้ประสบการณ์ในการเขียนโปรแกรม Flex และ MXML (ภาษา XML ของ FLEX ที่จะนำมา compile เป็น ActionScript Code) ก็ต้องใช้ Flex Builder 3 ครับ แต่เป็นของเสียตั้งค์ มีสอง Edition คือ
1. Standard Edition ก็มีให้ทุกอย่างครับยกเว้นสองอย่างที่มีเฉพาะใน Professional Edition
2. Professional Edition เพิ่มมาให้สองอย่างคือ Chart Component (ใช้ในการสร้างกราฟต่างๆ) และ Profiling (ใช้สำหรับ Tunning Application)
ถ้าอยาก Download เวอร์ชั่นลองใช้ 60 วันก็ตาม link ข้างล่างครับ
http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex3email

ทางเลือกที่สอง
ใช้ ของฟรีแบบถูกกฎหมายครับ เนื่องจาก Adobe มีนโยบายจะเข้าไปตีสนิทกับ Open Source Community มากขึ้น ตอนนี้้ถ้ามี Project ใหม่ๆ ออกมา Adobe ก็จะคลอดเวอร์ชั่นแบบ Open Source ออกมาด้วย ซึ่ง Flex ก็รวมอยู่ในข่ายนี้ด้วย โดย Flex แบบนี้เรียกว่า Flex SDK (Software Development Kit) โดยถ้าคุณเลือกทางเลือกนี้ ทุกอย่างจะเป็น command line หมด ส่วน editor ก็ยังไม่มี Product ที่สนับสนุนโดยตรง ก็คงต้องไปใช้ Editor ที่เขียน XML ได้อ่ะครับ ซึ่งก็มีมากมายให้ Download ไปใช้
link ข้างล่างสำหรับการ download Flex SDK ครับ
http://www.adobe.com/products/flex/flexdownloads/#sdk

สุดท้ายก็เรื่องการเรียนรู้
ก่อน อื่นต้องทราบก่อนเลยว่า Flex นั้นมีขอบเขตการทำงานชัดเจนมากๆ นั่นคือ provide มาให้ในส่วนของ GUI เท่านั้น แล้วใช้ service จาก Application ตัวอื่นๆ เช่น .NET, J2EE, PHP, Ruby on Rail เป็นต้น โดยเทคโนโลยีที่กล่าวมานั้นจะทำหน้าที่ในการสร้าง Business logic และ Database Access แล้วให้ Flex มาวางอยู่บนตัวของพวกมัน แปลว่าอะไรครับ แปลว่า ถ้าคุณคิดจะเป็น Flex Programmer มีทางเลือกอยู่สามทาง คือ
1.หาผู้เชี่ยวชาญในเทคโนโลยีตัวใดตัวหนึ่ง แล้วร่วมทีมกันสร้างระบบที่สมบูรณ์
2.หา Software ที่สร้างมาเพื่อใช้สำหรับเรื่องดังกล่าวโดยเฉพาะ (ฺีBusinesss logic และ Database Access) ซึ่งก็ไม่ได้หายาก หาเย็นอะไร ที่ดังๆ ก็จะมีในฝั่ง Java ซะเป็นส่วนมาก ทั้ง Spring, EJB (ตัวนี้ไม่ค่อยนิยมแล้ว) เป็นต้น
3.ศึกษามันให้หมด (ผมเลือกทางนี้) คือ เป็น Expert ให้หมดในทุกระดับชั้นของเทคโนโลยี
(ถ้าจะใช้ Flex มาเพื่อใช้สร้างหน้าเว็บให้สวยงามอย่างเดียว ผมว่า Adobe มี Product อื่นๆ ที่ใช้งานได้ตรงจุดประสงค์กว่านะครับ)

ลองเลือกดูครับ

Roadmap ของการศึกษา Flex
1.ศึกษา สิ่งพื้นฐานทั้งหมดของ Flex ให้ครอบคลุม (ผมไม่ใช้คำว่าทั้งหมดนะครับ) ทั้ง ตัวภาษาที่หลักที่ใช้ในการสร้างที่ชื่อว่า MXML (เชื่อผมสิว่าเป็นภาษาที่ศึกษาได้ง่้ายมาก) component ว่ามีอะไรบ้าง กลไกการทำงานต่าง รวมทั้งเรื่องการ configuration เช่น การ compile โปรแกรม, การ install (หรือภาษาเทคนิืคเรียกว่าการ deploy) เพื่อใช้ในเว็บเป็นต้น
2.การศึกษาขั้นกลาง (ผมยังไม่กล้าใช้คำว่าขั้นสูง เพราะยังไม่รู้ว่าขั้นสูงเป็นอย่างไร) ให้ศึกษาสิ่งที่ Adobe ให้มาเพื่อช่วยในการพัฒนาระบบ Flex สำหรับ Application ขนาดใหญ่ ซึ่งประกอบไปด้วย
2.1 BlazeDS เป็นตัวคั่นกลางระหว่าง Application ตัวอื่นๆ กับ Flex ซึ่งจะช่วยให้การติดต่อสื่อสารระหว่าง Flex กับ Application ระดับล่างอย่าง J2EE เป็นต้น ให้เกิดประสิทธิภาพสูงสุด
2.2 CairnGorm (อ่านว่า "แคนกรอม") เป็น Framework ที่ช่วยให้เราพัฒนาระบบ Flex ได้อย่างมีระเบียบแบบแผน และเป็นไปตามมาตรฐานการพัฒนาซอฟต์แวร์แบบ Object Oriented Programming (OOP) ที่เรียกกัน ว่า Model-View-Controller Pattern ทำให้เราสามารถ maintenance ซอฟต์แวร์ได้ง่าย และมีประสิทธิภาพ

ไม่ รู้ตอบมากอย่างนี้จะทำให้คุณเกิดความรู้สึก "อะไรวะ ถามนิดเดียวตอบซะยาวเลย แล้วเยอะอย่างนี้ กรูจะศึกษาไหวมั๊ยเนี่ย" ใช่ครับ ผมว่ามันเยอะครับ แต่ผมว่า Flex นี่อนาคตไกลแน่นอนครับ เพราะตัวมันเองมีทั้งความสวยงาม และใช้งานได้ง่ายแบบสินค้าที่ต้องเสียตังค์ซื้อ (Commercial Product) และมีธรรมชาติของความเป็น OpenSource อยู่สูง ทำให้ระบบไม่เป็นระบบปิด ทุกคนสามารถมีส่วนร่วมในการพัฒนาได้ ผมว่าคุ้มนะถ้าเราเลือกจะพัฒนาทักษะด้านนี้

ตอนนี้ผมกำลังจะทำโปรเจ็กท์ ERP โดยการใช้งานผลิตภัณฑ์ที่เป็น Open Source ล้วน โดยจะทำการรวมกันระหว่าง
1. Flex รับผิดชอบในส่วนของ GUI
2. BlazeDS รับผิดชอบในส่วนของการเชื่อมต่อระหว่าง GUI กับระบบระดับข้างล่างลงไป
3. CairnGorm รับผิดชอบในส่วนของการช่วยให้การออกแบบสถาปัตยกรรมของ Flex ดีขึ้น
4. OrangeGear เป็น ERP ที่เป็น OpenSource ที่พัฒนาโดยคนไทย ซึ่งมีความแข็งแกร่งมากในส่วนของ Business logic และ Database Design เป็นซอฟต์แวร์ที่ต่อยอดมาจาก OFBiz ของ Apache

ขอบอกครับว่าตั้งแต่ Flex ออกมาผมมีความสุขขึ้นเยอะเลย

อ้อ! ลืมบอกไป เกี่ยวกับคำถามระหว่าง MXML กับ ActionScript ถ้าจะเขียน Flex ก็คงต้องรู้ทั้งสอง ภาษานะครับ เพราะไม่ว่าจะไล่ไปอ่าน Tutorial ที่ไหนก็ตาม Code ของโปรแกรมมักจะมีการใช้งานทั้ง MXML และ ActionScript อยู่ภายใน Code เดียวกัน

แต่ถ้าไม่ซีเรียสอะไรมากก็ MXML ก็พอรองรับความต้องการระดับพื้นฐานได้ครับ แต่ถ้าอยากจะให้โปรแกรมของเรายืดหยุ่นมาก ก็คงหลีกเลี่ยงที่จะศึกษา ActionScript ไม่ได้

เห็น จขกท. ส่งข้อความถามเป็นแบบ Private แต่ขออนุญาติตอบแบบ Public ละกันนะครับ

>>ที่คุณ "him_aeng" บอกไว้ให้ศึกษาทุกด้านนี้หมายถึงต้องมาีความรู้ในทุกเรื่องหรือครับ
ขอโทษด้วยครับที่ตอบคลุมเครือ จริงๆ แล้ว คงเป็นไปไม่ได้ที่จะรู้ทุกเรื่อง ถ้าถามผมว่าเราจำเป็นต้องรู้อะไรบ้างก็ขอตอบแยกดังนี้ครับ
1.ความสัมพันธ์ระหว่างส่วนของ Interface Design กับ ตำแหน่งที่เราเขียน MXML หรือพูดง่ายๆ ก็คือการศึกษา MXML นั้นเอง
2.ภาษา ActionScript ครับ ต้องศึกษาไว้บ้าง เพราะผมมองว่าจำเป็นต้องใช้สำหรับการพัฒนา Flex ไม่จำเป็นต้องลึกซึ้ง แต่ให้รู้ว่าเมื่อไหร่ที่เราต้องใช้ ActionScript (ส่วนใหญ่จะใช้ในส่วนของ EventHandler) และเมื่อไหร่ที่เราจะใช้ MXML (ส่วนใหญ่จะเกี่ยวข้องกับการ Design)
3.เรื่องกลไกในการ Access ข้อมูลจากภายนอก Flex เรื่องนี้เป็นเรื่องสำคัญที่สุดของ Flex (ตามความเห็นของผม) ซึ่ง Flex จะเตรียมวิธีการสำหรับการ Access มา 3 แบบ คือ
  • 3.1 http service ซึ่งเป็นสิ่งที่ guru ทั้งหลายเรียกกันอย่างเป็นทางการว่า REST (Representational state transfer: บางครั้งเรียกกันทั่วไปว่า RESTful) คือการส่งข้อมูลต่างๆ ผ่านโปรโตคอล HTTP ซึ่งวิธีการนี้สำหรับ Flex จะมีความยืดหยุ่นน้อยที่สุด แต่ก็เป็นวิธีที่ง่ายที่สุด และเหมาะสำหรับการ Access ข้อมูลแบบที่เป็น Static XML (ผมยังไม่เคยเห็นตัวอย่างของการใช้ Access Dynamic XML) ดังนั้น ถ้าจะให้ดีก็คงต้องหา Database ที่มี Feature ในการส่งข้อมูลในรูปแบบ XML จะเหมาะกับวิีธีการนี้ครับ
  • 3.2 Web service ฟังดูน่ากลัวมั๊ยครับ แต่ใช้งานง่ายครับ แต่มีข้อแม้ว่า วิธีการนี้เราจะต้องเปิดให้ Application ในส่วนของ Businesss logic เปิดบริการ Web Service เสียก่อน ซึ่งทั้งใน .NET และ J2EE ก็สามารถทำได้ โดยจะทำการติดต่อสื่อสารกันผ่านมาตรฐานที่เรียกว่า wsdl (web service description language) ซึ่งถ้าเราเปิดให้บริการ Web service จะเปิดบริการผ่านภาษานี้ครับ
  • 3.3 Remote object วิธีนี้จะมีประสิทธิภาพสูงมาก แต่ยุ่งยากที่สุดเพราะต้องทำผ่านตัวกลางอย่าง BlazeDS เท่านั้น เป็นการเรียกใช้ Method ของ Java object โดยตรง โดยไม่ต้องสนใจ HTTP หรือ Webservice อะไรทั้งนั้น ทำให้เราใช้งาน Application ได้เหมือนเป็นของ Flex เอง (ทั้งๆ ที่ Flex เป็นเพียง GUI เท่านั้น)
4. การใช้งานในส่วนของความสวยงาม ทั้ง Effect, Transition, layout เป็นต้น ซึ่งของเหล่านี้ผมว่าคนในเว็บนี้น่าจะเข้าขั้นเทพกันอยู่แล้ว เพียงแต่ต้องมาใช้งานผ่าน MXML เท่านั้นเอง
5. การ Deploy โปรแกรมของเราซึ่ง Flex จะมีความพิเศษตรงที่เมื่อเราเขียนโปรแกรมเสร็จแล้ว สามารถ Deploy โปรแกรมของเราให้เป็น Web Application หรือ เป็น Desktop Application ก็ได้ ซึ่งการ Deploy ผ่าน Web ก็ไม่มีอะไรครับเพราะ Flex จะ Compile โปรแกรมของเราเป็นไฟล์ swf จากนั้นก็ทำการ embed ไฟล์ดังกล่าวเข้าไปใน web page แต่การ Deploy ผ่าน Desktop จะทำโดยผ่าน Adobe AIR ซึ่งตอนนี้ผมยังไม่แนะนำให้ใช้เพราะยังมีปัญหากับภาษาไทยอยู่
ุ6. วิธีการท่องเที่ยวเพื่อไปเอาของคนอื่นมาใช้ เนื่องจาก Flex มี Developer เก่งๆ คอยสนับสนุนอยู่มากมายทั่วโลก และที่พิเศษกว่านั้นซึ่งเป็นความพิเศษที่ผมชอบมากก็คือ Developer ของ Flex นี้จะมีความเป็นศิลปินอยู่ด้วย เนื่องเพราะมันเป็น Adobe ดังนั้น component ที่คนอื่นสร้างจะมีความ "Cool" ค่อนข้างสูง ซึ่งจะทำให้ App. ของเราดู Sexy ขึ้นด้วย
ขอแนะนำ link ที่น่าตื่นเต้นสำหรับ component coolๆ นะครับ ซึ่งในเว็บนี้จะมีให้ทั้ง Download และดูตัวอย่างของ component เหล่านั้นด้วยลองไปเยี่ยมเยียนได้เลย แล้วจะรู้ว่าทำไมผมถึงคิดว่า Flex จะมีอนาคตไกล ตาม link นี้เลยครับ
http://flexbox.mrinalwadhwa.com/

แค่หกข้อนี้ก็น่าจะเพียงพอแล้วล่ะครับสำหรับการใช้งาน Flex ใ้ห้สนุก

>>เพราะ Flex ทำได้เฉพาะส่วน Interface เท่านั้นหรือครับ
ก็ อยากจะตอบว่างั้นนะครับ แต่จากที่ผมตอบไปแล้วข้างบน Flex นั้นเรียกตัวเองว่าเป็น RIA (Rich Internet Application) ซึ่งใช้แก้ปัญหาหลายอย่างที่คนทำงานในฝั่ง Server-side ปวดหัวมานาน เพราะไม่ว่าจะเป็น ASP.net, JSP หรือ อะไรก็แล้วแต่ที่มันเป็น Web Application มันจะทำงานอยู่ภายใต้กลไกที่สรุปได้เพียงสองคำเท่่านั้นคือ Request-Response หรือ ร้องขอ-ส่งให้ ซึ่งก็คือกลไกที่เราใช้ในเว็บนั่นเอง แต่การสร้าง Application ใช้ในองค์กรที่มีรูปแบบการทำงาน และกลไกทางธุรกิจที่ซับซ้อนต้องการอะไรมากกว่านั้น

ดังนั้นถ้าจะให้ ฟันธงจริงๆ ว่า Flex ให้มาแต่ Interface หรือ ขอตอบว่า "เกือบใช่" ผมขออนุญาติเรียก Flex ว่า Universal GUI ละกัน เพราะมันเป็น GUI ที่สามารถนำไปแปะบน App. ตัวไหนก็ได้ในโลกใบนี้ เนื่องจากมันไม่อิงอาศัยสิ่งที่เป็น Technology เฉพาะของแต่ละค่าย แต่อิงมาตรฐานกลางทั้ง RESTful, Webservice ดังนั้น ถ้า App. ตัวไหนเข้ามาตรฐานพวกนี้ Flex ใช้งานได้หมด

แล้วถ้าถามว่ามันดียังไง ไอ Framework ที่มันให้มาแต่ GUI เนี่ย ก็ต้องไปดูปัญหากันในโลกของ App. Development ปัจจุบันกันเลย คนที่ทำงานในฝั่ง Server-side ที่ต้องเขียน Code โปรแกรมสำหรับการติดต่อกับ Server ต้องจำใจยอมรับกับ GUI ที่ไร้ความยืดหยุ่น อย่าง Web form เป็นต้น เพราะไม่มีทางเลือกที่ดีกว่านี้ ส่วน Microsoft ที่มีดีที่ GUI ที่โดนใจผู้ใช้นั้น ก็เป็นอันรู้กันว่าสอบตกในเรื่องของ Enterprise App. แบบคะแนนห่วยมาก เพราะ Developer ที่เป็นฝั่ง Server-side มักจะเกลียด Microsoft และชอบตีตราว่า มันเป็นของห่วยที่ต้องเสียตังค์ (แม้ตอนหลัง Microsoft จะออก C# มาช่วยได้มาก แต่สถานการณ์ก็ไม่ได้ดีขึ้นเท่าไหร่)

คราวนี้เริ่มเห็น ภาพยังครับว่า Flex เข้ามาช่วยชีวิต Developer อย่างไร เพราะมันรวมข้อดีของ Microsoft และ Sun เข้ามาไว้ด้วยกัน แถมยังบวกข้อดีของ Adobe เข้าไปอีกนั่นคือความ "Cool" คราวนี้การจะำทำให้วงการของ Developer ให้มีสีสันเหมือนกับพวก CG ก็ไม่ไกลแล้ว แถมตอนนี้ Flex กำลังจะออก Flex 4 (Gumbo) ให้ใช้ในช่วย ครึ่งหลังของปีหน้าด้วยซึ่งจะยิ่งเน้นการ Design มากขึ้นไปอีก คราวนี้คงจะได้เห็น Enterprise App. แบบสวยๆ เยอะขึ้น และที่สนุกขึ้นไปอีกก็คือเราสามารถ ใช้ Adobe Flash สร้าง User Interface และ Skin (แนวคิดเหมือน skin ของ winamp นั่นล่ะครับ) ให้กับ Flex ได้อีก ผมเลยมองว่าศักยภายของ Flex นั้นไร้ขอบเขตจริงๆ

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



1 ความคิดเห็น: