จาก php ถึง ruby on rails

จากคนเคยหากินกับ php มาเนิ่นนานจนจำไม่ได้แล้วว่าเริ่มเมื่อไหร่ แต่ด้วยความอยากรู้อยากเห็นเลยตั้งโจทย์กับตัวเองไว้ว่าโปรเจคส่วนตัวชิ้นต่อไปจะใช้ภาษาอื่นที่ไม่ใช่ php ซะบ้าง ก็เริ่มมองหาหลายๆตัวเลือก โดยพิจารณาจริงจังที่ python, ruby on rails และ java แล้วก็ลองศึกษาดูว่ามันยังไงกันบ้างนะ ลองอ่านลองเขียนอยู่นานสุดท้ายก็มาลงเอยที่ ruby on rails ด้วยเหตุผลหลายๆอย่างที่พอมาคิดๆดูก็ไม่ค่อยมีเหตุผลเท่าไหร่ แต่เอาหล่ะ rails ก็ rails

ทำอะไร?

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

งั้นก็ต้องเป็นโปรเจคส่วนตัว ที่คิดไว้ว่าอยากทำก็มีอยู่มากมายมหาศาลทำเอาเลือกลำบากเหมือนกัน ก็เลยคิดว่าจะเลือกโปรเจคที่มีความซับซ้อนมากประมาณหนึ่ง เพราะถ้าเริ่มแบบที่ง่ายไปเวลาเรียนรู้ลองทำก็จะชิวเกิน ไม่กดดัน สรุปก็เลือกทำโปรเจคที่คุยกับเพื่อนไว้นานแล้วว่าอยากทำ คือทำเว็บสเปกสินค้าไอทีแบบเอาสินค้าต่างๆมาเปรียนเทียบกันตัวต่อตัว ฟังก์ชั่นต่อฟังก์ชั่นได้ ตั้งโจทย์เพิ่มเติมว่าจะต้องสามารถเปรียบเทียบข้ามสายพันธ์ได้ เช่น จะต้องเอา เลเซอร์ปริ้นเตอร์ อิงค์เจ็ท และดอทแมทริกซ์ มาเปรียนเทียบความเร็วในการพิมพ์ได้ และข้อมูลที่ลงจะต้องย่อยมาแล้ว คนเข้ามาใช้เว็บจะได้ไม่เกิด information overload

ยังไงดี?

พอเลือกโปรเจคได้ก็ลงมือศึกษา ruby on rails อย่างเต็มตัว ในตอนที่เริ่มนั้นบ้านเรายังหาหนังสือ ruby และ rails ไม่ค่อยได้(ตอนนี้เห็นมี 3-4 เล่มในตลาด) จะสั่งซื้อหนังสือจาก amazon ก็ไม่อยาก เพราะช่วงนั้นสั่งหนังสือ(ไร้สาระและมีสาระ)ไปหลายเล่ม ออกแนวเกินงบ ก็เลยใช้วิธีโหลดหนังสือเป็น pdf มา ก็อ่านลำบากหน่อย แต่ประโยชน์สูง ประหยัดสุด สรุปรวมๆอ่านไปสี่ห้าเล่มเห็นจะได้ บางเล่มก็อ่านไปลองทำไป บางเล่มก็อ่านผ่านๆ เพราะตัวอย่างเป็นเวอร์ชั่นเก่าและใน rails นั้นการเขียนโค้ทของแต่ละเวอร์ชั่นมีความต่างกันค่อนข้างมาก สรุปว่าใช้เวลาประมาณเดือนนึงเห็นจะได้ในการเรียนรู้อย่างลงเอียดก่อนลงมือเขียนจริง

เอาจริงหล่ะ

ตอนเอาจริงก็มีรายละเอียดมากมายที่ต้องตกลงกับตัวเอง เริ่มจาก text editor ก่อน ด้วยความที่ rails จำเป็นต้องใช้งาน text editor คู่ไปกับ console และเราเป็นคนที่ชอบ online editor คือ แก้ไฟล์ที่อยู่บนเซิฟเวอร์เลย ที่สำคัญคือใช้ทำงานบน mac ไม่ใช่ pc จึงจำกัดตัวเลือกลงบ้าง มองไปมองมาสรุปว่าเลือก coda เพราะสามารถอ่าน ruby ออกบ้าง ช่วย highlight โค้ทได้บางส่วน มี remote ssh และ preview ในตัวเลย ก็ถือว่าครบถ้วนกระบวนความ

จากนั้นก็ต้องดูเรื่องเซิฟเวอร์ ในมือก็มีอยู่หลายตัว ก็เลือกใช้ WHM/cPanel server ด้วยเหตุผลว่ามี plugin ให้ลง rails แบบง่ายๆไม่ปวดใจนัก ใช้เวลาไม่นานก็สามารถรัน rails app บนเซิฟเวอร์ได้โดยไม่ต้องออกแรงมากมายอะไร

รายละเอียดเรื่องเทคนิคครบถ้วน ก็ใช้เวลาร่วมสองเดือนเหมือนกันในการทำทุกอย่างขึ้นมา ตั้งแต่ design ไปจนถึง database ค่อยๆบรรจงเขียนไปวันละหน่อย ช่วงไหนงานเข้าก็เขียนได้น้อย งานไม่มีก็เขียนได้มาก(แต่ตังน้อย) กว่าจะปั้นจนเสร็จได้ก็แทบลากเลือกเหมือนกัน หลักๆเลยก็เพราะมันไม่มี sql ให้ query เหมือนสมัยเขียน php เมื่อทำฐานข้อมูลมาซับซ้อนมากๆก็ต้องใช้เวลาซักพักในการทำตัวให้คุ้นเคยกับ active record แต่พอเคยมือแล้วก็รู้สึกว่าใช้ง่ายดีเหมือนกัน จนบางครั้งกลับมาเขียน php ยังคิดถึง active record ของ rails บ้างเป็นครั้งคราว ส่วนเรื่องความต่างอื่นๆก็จะเป็นเรื่องของ mvc model, rest architecture และอะไรอื่นๆอีกยิบย่อยที่ต้องปรับตัวและเรียนรู้กันใหม่

สรุปเมื่อเสร็จ

พอเขียนเสร็จสมบรูณ์ก็กลับไปมองที่ทำลงไป มันก็ไม่ได้ดีอะไรเท่าไหร่และบางอย่างก็ยังไม่ best practice เท่าที่ควร แต่ก็ทำใจเพราะเป็นเว็บแรก ตัวเว็บนี่ไม่พอใจเท่าไหร่ แต่ความรู้ที่ได้จากการเขียน rails นี้ถือว่าคุ้มค่าพอสมควรทีเดียว ทั้ง MVC, REST, OOP และอื่นๆอีกมากมาย ก็ถือว่าได้เปิดหูเปิดตาจากการเขียน php อย่างเดียวมาเป็นเวลานาน รายละเอียดทางเทคนิคอื่นๆที่พบเจอหรือเป็นอุปสรรคในการเปลี่ยนจาก php มาเขียน ruby นั้นมีอีกมากพอสมควร ไว้มีเวลาเมื่อไหร่จะมาเขียนไล่ทีละตัว ส่วนตอนนี้ขอสรุปง่ายๆเกี่ยวกับตัว ruby ว่าเป็นภาษาที่เจ๋งมาก เขียนได้สนุกและยืดหยุ่น ส่วน rails นั้นก็เป็น framework ที่ออกแบบเป็นอย่างดีและ implement MVC model ได้อย่างลงตัวมากๆ แต่ยังไง php ก็ยังเป็นเครื่องมือหลักที่จะยึดหากินต่อไป โดยเอาความรู้ที่ได้จาก rails มาพัฒนาการเขียน php ของตัวเองให้ดีขึ้น

    • NGV
    • มีนาคม 14th, 2010

    ดีครับ ผมคน หนึ่งและอยากเรียนรู้อะไรใหม่ๆ แต่ php (ปัจจุบัญจะไม่เอาไหน ก็ ตาม)
    มันดีอยู่แล้ว แต่ว่าไม่แตกต่าง สิ่งต่างที่สรรค์สร้างจะไม่เกิด มีประสบการใหม่ๆ สังสอน กันหน่อยนะครับ

  1. No trackbacks yet.