วิธีการ Setup an environment เบื้องต้นสำหรับการพัฒนาโปรเเกรม
Environment ในการพัฒนาโปรเเกรมคือ ?
ในการพัฒนาโปรเเกรมจำเป็นต้องสร้าง Environment ให้เหมาะสมสำหรับพัฒนาโปรเเกรมประเภทนั้น ๆ ซึ่งการ Setup Environment เป็นการตั้งค่าหรือติดตั้งเครื่องมือเเละโปรเเกรมที่จำเป็นต้องใช้ในการเขียน รัน เเละทดสอบโปรเเกรมที่ต้องการพัฒนา โดย Environment ที่จำเป็นต้องใช้ในการพัฒนาโปรเเกรมเบื้องต้นมีดังนี้
-
ระบบปฎิบัติการ
การเลือกระบบปฎิบัติการที่เหมาะสมกับความต้องการเเละภาษาโปรเเกรมที่ต้องการใช้งาน เช่น macOs , Linux หรือ Windows
-
IDE (Integrated Development Environment)
Integrated Development Environment หรือ IDE เป็นเเอปพลิเคชันซอฟต์เเวร์ที่ใช้ในการเขียนโค้ด เเก้ไข เเละทดสอบโปรเเกรมได้อย่างมีประสิทธิภาพ เช่น Visual Studio Code, IntelliJ IDEA, Eclipse
-
Version Control
Version Control หรือ Source Control เป็นโปรเเกรมที่ช่วยในการจัดการการเปลี่ยนเเปลงต่าง ๆ ของไฟล์หรือโค้ดภายในโปรเเกรมที่เราพัฒนาขึ้น เพื่อที่จะทำให้สามารถทำงานร่วมกับผู้อื่นได้อย่างราบรื่นเเละไม่มีปัญหา เช่น Git, AWS CodeCommit, Bitbucket
-
Programming Language
Programming language นั้นขึ้นอยู่กับโปรเเกรมที่ต้องการจะพัฒนา โดย Programming Language เเต่ละภาษานั้นจำเป็นต้องติดตั้งโปรเเกรมของภาษานั้น ๆ ก่อนจึงจะสามารถใช้งานได้ เช่น ถ้าต้องการเขียน JavaScript หรือ TypeScript ก็จำเป็นต้องติดตั้ง Node.Js ก่อนเสมอ
-
Package Managers
Package Managers ที่จำเป็นต้องติดตั้งนั้นขึ้นอยู่กับภาษาที่ต้องการใช้ โดย Package Managers ช่วยในเรื่องการจัดการเครื่องมือหรือไลบรารี่ต่าง ๆ เช่น Package Managers ของ Node.Js คือ npm เเละในส่วน Package Managers ของ Python คือ pip
ทำไมต้อง Setup an environment ให้กับคอมพิวเตอร์ของเราก่อนจะเริ่มเขียนโปรเเกรม ?
ในการพัฒนาโปรเเกรม การ Setup Environment ก่อนจะเริ่มพัฒนาโปรเเกรมช่วยเพิ่มประสิทธิภาพในการทำงาน เเละเพิ่มความสอดคล้องในการทำงานมากขึ้นเมื่อเริ่มพัฒนาโปรเเกรมใหม่ เช่น เมื่อต้องการพัฒนาโปรเเกรมใหม่โดยใช้ภาษา JavaScript ก็จำเป็นต้องติดตั้ง Node.Js ก่อนพัฒนา ซึ่ง Node.Js นั้นมีหลายเวอร์ชั่นจึงทำให้จำเป็นต้องเลือกเวอร์ชั่นที่ต้องการใช้งานก่อน เพื่อลดปัญหาที่อาจเกิดขึ้นเมื่อผู้พัฒนาใช้ Node.Js เวอร์ชั่นเเตกต่างกันในการพัฒนาโปรเเกรมซึ่งปัญหาที่อาจเกิดขึ้นมีดังนี้
-
Compatibility Issues
เนื่องจากการใช้เวอร์ชั่นของ Node.Js ที่เเตกต่างกันอาจจะทำให้ไวยากรณ์หรือฟังก์ชันบางชนิดไม่สามารถใช้งานร่วมกันได้
-
Dependency Management
เนื่องจากการใช้เวอร์ชั่นของ Node.Js ที่เเตกต่างกัน ทำให้เวอร์ชั่นของเครื่องมือเเละไลบรารี่ภายนอกต่าง ๆ ที่ใช้งานในโปรเเกรมเเตกต่างกันด้วย ซึ่งทำให้ฟังก์ชันการทำงานบางชนิดของเครื่องมือเเละไลบรารี่ที่ติดตั้งไปเเล้วไม่สามารถทำงานได้
Dependency Management ในการพัฒนาโปรเเกรมคืออะไรเเละสำคัญอย่างไร ?
Dependency Management ช่วยในเรื่องการติดตามเวอร์ชั่นของเครื่องมือเเละไลบรารี่ภายนอกต่าง ๆ ที่ติดตั้งเข้าไปยังโปรเเกรม เพื่อช่วยในเรื่องการป้องกันการซ้อนทับกันของเครื่องมือเเละไลบรารี่ นอกจากนั้นยังช่วยในเรื่องความเข้ากันได้ของโปรเเกรมเมื่อต้องการย้ายโปรเเกรมไปยังคอมพิวเตอร์เครื่องต่าง ๆ เมื่อมี Dependency Management ทำให้มั่นใจได้ว่าเครื่องมือเเละไลบรารี่ที่ติดตั้งจะเป็นเวอร์ชั่นเดียวกันหรือใหม่กว่าเสมอโดยในปัจจุบัน Package Managers ของภาษาต่าง ๆ มีการจัดการในเรื่องของ Dependency Management ให้อยู่เเล้ว เช่น โปรเเกรมที่ใช้ Node.Js จะมีไฟล์ package.json ในการเก็บ Dependency ของโปรเเกรมนั้น ๆ ไว้
โดยเครื่องมือเเละไลบรารี่ของในโปรเเกรมอาจจะเเตกต่างกัน ไปตามขั้นตอนของการพัฒนาดังนั้น Dependency Management ยังช่วยในเรื่องการจัดการ Dependency ของขั้นตอนต่าง ๆ ด้วย เช่น Node.js เเบ่ง Dependency ออกเป็น 3 ประเภท คือ
-
Dependencies เป็น Dependency ที่เกิดจากการใช้คำสั่ง npm install <package_name> ซึ่งเครื่องมือเเละไลบรารี่ที่อยู่ใน Dependency นี้จำเป็นต้องติดตั้งเสมอเมื่อต้องการเริ่มใช้งานโปรเเกรม
-
Dev dependencies เป็น Dependencies ที่เกิดจากการใช้คำสั่ง npm install <packaga_name> –save-dev ซึ่งเครื่องมือเเละไลบรารี่ที่อยู่ใน Dev dependencies นั้นจำเป็นเฉพาะในช่วงของการพัฒนาระบบเท่านั้น
-
Peer dependencies เป็น Dependencies ที่จำเป็นต้องเพิ่มเองโดยตรงในไฟล์ package.json ซึ่งเครื่องมือเเละไลบรารี่ที่อยู่ในไลบรารี่นี้จะเป็นการเจาะจงเวอร์ชั่นที่ต้องการใช้งาน
นอกจากนั้นในการติดตั้งไลบรารี่เเละเครื่องมือโดย Package Managers จะเเบ่งออกเป็น 2 ประเภท คือ
-
ติดตั้งเเบบ Local ซึ่งทำให้เครื่องมือหรือไลบรารี่ที่เราติดตั้งนั้นสามารถใช้งานได้เฉพาะในโปรเเกรมของเราเท่านั้น เช่น โปรเเกรมที่ใช้ Node.Js เมื่อทำการติดตั้งเครื่องมือเเละไลบรารี่ตำเเหน่งที่ติดตั้งจะอยู่ในโฟลเดอร์ของ node_modules ในโฟลเดอร์ของโปรเเกรม
-
ติดตั้งเเบบ Global ซึ่งทำให้ทั้งเครื่องคอมพิวเตอร์สามารถนำเครื่องมือหรือไลบรารี่ที่เราติดตั้งไปใช้งานได้ เช่น เมื่อลงเครื่องมือเเละไลบรารี่เเบบ Global ของ Node.Js จะถูกเก็บอยู่ในโฟลเดอร์ node_modules ของ Node.js ที่ติดตั้งอยู่บนเครื่องคอมพิวเตอร์
สำหรับการใช้งาน Runtime Environment เช่น Node.Js ในการพัฒนาซอฟต์เเวร์ นอกเหนือจากการ Setup environment เพื่อใช้งานในแต่ละโปรเจกต์แล้ว เรายังสามารถเพิ่มเติมในส่วนของ Version Management Tools มาเป็นตัวกำหนด Version ของ Node.Js ที่เราจะใช้งานในแต่ละโปรเจกต์ที่เราทำงานอยู่เพื่อให้สลับ Version ของ Node.Js ไปมาได้โดยง่ายโดยไม่ต้องลงใหม่ ซึ่งในแต่ละ Programming Language หรือ Library ที่เราใช้ก็จะมีตัวเลือกที่แตกต่างกันไป เช่น Node.Js NVM, Python pyenv เป็นต้น
Environment Variable คืออะไร?
ในการพัฒนาซอฟแวร์แน่นอนว่าเป็นไปไม่ได้ที่เราจะใช้เพียงแค่ Environment เดียวในการทำงานออกมา อย่างน้อยเราก็ต้องมีการแบ่งระหว่าง Environment ที่ใช้ในการพัฒนาซอฟแวร์ (Develop) และตัวงานจริง (Production) ซึ่งอาจมีการใช้ข้อมูลที่เป็น Config ที่แตกต่างกัน
-
ตัวอย่างการ Config ค่าแบบ Static เมื่อไม่ใช้งาน Environment Variable
SIT (Develop Environment)
PRD (Production Environment)
จากในตัวอย่างรูปข้างต้นจะเห็นว่าจะต้องมีการ Config การเชื่อมต่อ Database ที่แตกต่างกันตาม Environment ทำให้เกิดปัญหาขึ้นเมื่อใช้ Code ชุดเดียวกัน Environment Variable จึงถูกนำมาใช้เพื่อแก้ปัญหานี้
-
การใช้งาน Environment Variable โดยระบุผ่านไฟล์ .env
สร้างไฟล์ชื่อ .env ไว้ที่ Root directory ของโปรเจกต์ และระบุชื่อและค่าของ Environment Variable แต่ละตัวที่เราต้องการกำหนดเอาไว้
ติดตั้ง Package dotenv เพื่อประกอบการอ่านไฟล์ .env ด้วยคำสั่ง npm install dotenv -s
Import Package dotenv มาใช้งานด้วยการเพิ่ม require('dotenv').config(); ลงใน index ไฟล์ของโปรเจกต์
จากในตัวอย่างรูปข้างต้นจะเห็นว่า เราสามารถเข้าถึงข้อมูล Config ผ่านการเรียกใช้ Environment Variable ออกมาจากไฟล์ .env โดยเมื่อเราต้องการ Run หรือ Deploy ซอฟต์แวร์ของเราใน Environment ที่แตกต่างกันก็เพียงแค่เปลี่ยนชุดไฟล์ .env โดยไม่ต้องทำการแก้ไข Code อีกรอบ และยังครอบคลุมไปถึงการใช้ในการซ่อนข้อมูล Secret ที่เราไม่อยาก Code ลงไปตรง ๆ
ตัวอย่างขั้นตอนการ Setup an environment เบื้องต้นสำหรับพัฒนา Backend NestJS โดยใช้ภาษา TypeScript บน Windows 11
-
ติดตั้ง Visual Studio Code
-
ในการติดตั้ง Visual Studio Code สามารถทำได้โดยการดาวน์โหลดผ่านทางหน้าเว็บไซต์หลักของ Visual Studio Code เเละเลือกดาวน์โหลดตามระบบปฎิบัติการที่ต้องการใช้งาน
-
ติดตั้ง Node.js
-
Node.js มีหลายเวอร์ชั่นซึ่งบนหน้าเว็บของ Node.Js จะเเบ่งออกเป็น 2 เวอร์ชั่นหลักได้เเก่ LTS เเละ Current โดย LTS ก็คือ Long Term Support เวอร์ชั่นซึ่งจะเป็นเวอร์ชั่นที่ทาง Node.Js เเนะนำให้ใช้งานเนื่องจากเป็นเวอร์ชั่นที่เสถียร เเละในส่วนของ Current เวอร์ชั่นเป็นส่วนของเวอร์ชั่นปัจจุบันโดยซึ่งเป็นเวอร์ชั่นที่การอัปเดตอยู่ตลอดซึ่งทำให้มีการเปลี่ยนเเปลงบ่อย
การติดตั้ง Node.js บน Windows 11 มี 2 วิธีหลัก ๆ ได้เเก่
-
ติดตั้งโดยตรงโดยโหลดผ่านทางเว็บไซต์หลักของ Node.Js
-
ติดตั้งโดยใช้ Node Version Control (NVM) ในการช่วยจัดการเวอร์ชั่นของ Node.Js ที่ต้องการใช้งาน เเละยังช่วยในให้เราสามารถลง Node.Js ได้หลายเวอร์ชั่นในเครื่องคอมพิวเตอร์อีกด้วย ซึ่ง NVM สามารถใช้กับระบบปฎิบัติการ หลากหลายไม่ว่าจะเป็น MacOS, Linux เเละ Windows
-
เมื่อติดตั้ง Node.js ก็จะทำการติดตั้ง Npm ด้วยซึ่ง Npm เป็น Package Managers ของ Node.Js ด้วยซึ่งสามารถตรวจสอบเวอร์ชันได้ด้วยคำสั่งดังนี้
-
node –version
-
npm –version
-
ติดตั้ง NestJS/CLI เเละเริ่มใช้งาน NestJS
- เมื่อเราติดตั้ง Node.Js เรียบร้อยเเล้วจะสามารถใช้ npm ซึ่งเป็น Package Managers ของ Node.Js ซึ่งทำให้เราสามารถใช้คำสั่งในการติดตั้ง NestJS/CLI ได้เเละจำเป็นต้องติดตั้งเเบบ Global จึงใช้คำสั่ง npm install -g @nestjs/cli เมื่อติดตั้งเสร็จเรียบร้อยเเล้วจะสามารถใช้คำสั่งต่าง ๆ ของ NestJS ได้เช่น nest new <project_name>
ในการเริ่มใช้งาน Nestjs สามารถเริ่มได้โดยการสร้างโปรเจ็คใหม่โดยใช้ cli หรือ clone โปรเจกต์มาจาก Github เมื่อสร้างหรือ clone เสร็จเเล้วจำเป็นตอนใช้คำสั่ง npm install ในการลงเครื่องมือหรือไลบรารี่ตาม Dependency ในไฟล์ package.json
-
ตัวอย่างเมื่อสร้างโปรเจกต์ใหม่โดยใช้คำสั่ง nest new test_nest_project
-
เมื่อสร้างโปรเจกต์เสร็จเเล้วสามารถใช้คำสั่ง cd เข้าไปยังโฟลเดอร์ของโปรเจกต์ที่เราสร้างขี้นเเละใช้คำสั่ง code . ในการเปิด Visual Studio Code ในการเริ่มต้นการทำงาน
-
สามารถทดสอบการทำงานได้โดยการใช้คำสั่ง npm run start:dev ในการเริ่มการทำงานของ NestJS เเละเข้า http://localhost:3000/ ในหน้าจอจะเเสดงข้อความ Hello World! ถ้าหน้าจอเเสดงผลดังนี้เเสดงว่า NestJS ทำงานได้ถูกต้องเเล้ว
References: