จาก Swift สู่ JavaScript ลิงก์ไปยังหัวข้อ

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

วันนี้ผมตัดสินใจนำแนวคิดนั้นกลับมาทำอีกครั้งโดยเปลี่ยนเล็กน้อย คราวนี้จะใช้ Amazon Q CLI และพัฒนาใหม่ด้วย Node.js/TypeScript เหตุผลคือความเรียบง่ายและความสะดวกในการ deploy บน AWS Cloud เป้าหมายคือทดลอง vibe coding แบบเต็มรูปแบบ โดยให้ Amazon Q ทำงานหลักทั้งหมด ผมไม่แก้โค้ดด้วยมือ เพียงสั่งงาน Q

ผมเริ่มโดยการป้อนโปรเจกต์ Swift เก่าและโน้ตต่างๆ ให้กับ Q ขอให้มันแปลงเกมเป็น JavaScript

Initial Swift Project

ผลลัพธ์เริ่มแรกน่าประทับใจ Q สามารถพอร์ตตรรกะหลักไปยัง JavaScript ได้ มีแค่ไม่กี่บรรทัดโค้ดในโปรเจกต์ Swift นั้น แต่ Amazon Q สามารถเข้าใจงานและเตรียมแอปพลิเคชันที่แตกต่างอย่างสิ้นเชิง นี่ไม่ใช่แค่การอัปเกรด Java 8 เป็น Java 18 แบบ “มาตรฐาน” แต่เป็นการย้ายแพลตฟอร์มจาก macOS ไปยัง Web Application

Q generates JavaScript code

ต่อไป ผมมอบหมายให้ Q เพิ่มการทดสอบ มันสำคัญที่ Q จะต้องสามารถรันโค้ด ตรวจจับปัญหา และแก้ไขได้ ผมมักจะแนะนำให้ปล่อยให้เครื่องมือ GenAI สามารถทดสอบโค้ดของตัวเองได้

Q adding tests

และนี่คือการย้ายไปยัง JavaScript ที่เสร็จสมบูรณ์โดย Amazon Q ดูเหมือนจะพื้นฐาน แต่โค้ดทั้งหมดถูกย้าย และที่สำคัญกว่านั้นคือการบูตสแตรปโปรเจกต์ ผมไม่ต้องเสียเวลาเตรียมสภาพแวดล้อมการพัฒนา

JavaScript code by Q

เมื่อเกมพื้นฐานถูกพอร์ตแล้ว ก็ถึงเวลาสำหรับฟีเจอร์ใหม่ๆ

Q adding new features

todo.md เป็นช่องทางสื่อสารสองทาง ลิงก์ไปยังหัวข้อ

ในขณะที่ Q กำลังประมวลผล ผมเริ่มไฟล์ todo.md เพื่อจัดคิวคำสั่งและไอเดียเพิ่มเติม AI สามารถอ่านไฟล์ได้ใช่ไหม? ทั้งหมดนี้เป็นเพราะ MCP ที่ฝังอยู่ใน Q CLI
เราสามารถพบชุดเครื่องมือพื้นฐานได้ที่: https://github.com/aws/amazon-q-developer-cli/blob/main/crates/cli/src/cli/chat/tools/fs_read.rs
โอ้ ผมอาจลืมบอกไป แต่ใช่แล้ว Amazon Q Developer CLI เป็นโอเพนซอร์ส
อีกส่วนสำคัญคือชุดเซิร์ฟเวอร์ MCP ซึ่งถ้าคุณสนใจสามารถดูได้ที่ นี่

Creating a TODO file

มันดีกว่าที่จะบอก Q CLI ให้ใช้ไฟล์ todo.md นี้ เพราะเครื่องมือเหล่านี้เข้าใจยากว่าเนื้อหาใดในรีโพสิตอรีที่ต้องประมวลผล ฐานโค้ดอาจจะใหญ่

Asking Q to use the TODO file

ช่วงเวลาที่น่าสนใจคือ Q เริ่มเสนอแนวคิดของตัวเองและเพิ่มลงในไฟล์ todo.md ทำให้ไฟล์ Markdown ธรรมดากลายเป็นช่องทางสื่อสารสองทาง แม้ตอนนั้นเรายังสนทนากับ CLI Tool โดยตรงไม่ได้ แต่ทั้งสองฝ่ายอ่านและเขียนไฟล์ข้อความร่วมกันได้

Q suggesting ideas in TODO file

เรายังได้เช็คลิสต์ที่ทำงานในรายการสิ่งที่ต้องทำ และ Q ฉลาดพอที่จะเข้าใจและทำเครื่องหมายรายการที่เสร็จแล้ว การเขียนโค้ดแบบโต้ตอบแบบนี้น่าทึ่งมาก

Q using checkboxes in TODO

การดีพลอยไปยัง AWS Amplify ลิงก์ไปยังหัวข้อ

เมื่อการพัฒนาดำเนินไปอย่างราบรื่น ขั้นตอนถัดไปที่สมเหตุสมผลคือการดีพลอย ผมตัดสินใจแกล้งทำเป็นไม่คุ้นเคยกับ AWS และถาม Q เพื่อขอคำแนะนำในการดีพลอยแอป

Asking Q how to deploy

Q แนะนำ AWS Amplify และกระบวนการนั้นง่ายอย่างน่าประหลาดใจ การเชื่อมต่อกับ GitHub ง่ายมาก

Amplify connect to GitHub

การตั้งค่าพื้นฐานของแอปใน Amplify ก็แค่ไม่กี่คลิก

Amplify app basics

และแอปก็ถูกดีพลอยเรียบร้อย พร้อมฟีเจอร์ใหม่ๆ Amplify ดูแลกระบวนการ build ทั้งหมด จึงไม่ต้องตั้งค่า CI/CD ด้วยมือ

Deployed app with new features

ส่วนที่น่าทึ่งที่สุด? แม้แต่ข้อความ commit ก็ถูกสร้างโดย AI!

GitHub commits from AI

ประสบการณ์ทั้งหมดนี้แสดงให้เห็นว่า Amazon Q CLI มากกว่าการเป็นแค่ส่วนติดต่อแชท มันสามารถเป็นพันธมิตรที่ทรงพลังในวงจรชีวิตการพัฒนา ตั้งแต่การเขียนโค้ด การทดสอบ การดีพลอย ไปจนถึงการจัดการโปรเจกต์ นี่คือภาพรวมของยุคใหม่ของการพัฒนาซอฟต์แวร์

เกมนั้นอยู่ที่นี่: https://timetectonic.cageyv.dev/
เป้าหมายหลักของผมคือการลองพฤติกรรมอัตโนมัติของ Q และความสามารถในการปฏิบัติตามคำสั่งและทำงานที่ไม่ได้อธิบายไว้อย่างชัดเจน

สรุป ลิงก์ไปยังหัวข้อ

  • Amazon Q Developer CLI สามารถนำพฤติกรรมแบบ agentic มาสู่เทอร์มินัลอย่างอิสระจากแอปพลิเคชัน
  • เป็นความก้าวหน้าครั้งใหญ่ตั้งแต่ยุค CodeWhisperer
  • เครื่องมือที่ฝังมาในตัวช่วยได้มากและให้ agent สามารถรันคำสั่งได้หลายอย่าง
  • Amazon Q Developer CLI ยังสามารถ: ดีบักปัญหาใน AWS, ตรวจสอบล็อก และ S3 buckets ด้วยการเข้าถึง AWS API ซึ่งเป็นเครื่องมือที่ทรงพลังมาก