swift-00
ในช่วงวันหยุดมาศึกษาสิ่งใหม่ ๆ กันหน่อย
หรือว่าใหม่ของผมแต่อาจจะเก่าของคนอื่นก็ได้ !!

สำหรับนักพัฒนา iOS app นั้น
ต้องสร้างระบบ Backend/API หรือ Server-side มาใช้งานเสมอ
ซึ่งมักจะพัฒนาด้วยภาษาอื่น ๆ เช่น Java, PHP, Node.js, Rail และ Go เป็นต้น
ทำให้ต้องเรียนรู้มากขึ้น
ทำให้ต้องมีทีมมากขึ้น

คำถามที่น่าสนใจก็คือ

ถ้าระบบในส่วน Server-side และ iOS app นั้น
สามารถพัฒนาด้วยภาษาเดียวกัน
มันน่าจะดีไม่น้อยนะ ?

คำถามนี้ถูกตอบชัดเจนขึ้นเมื่อ Swift เปิด opensource
ทำให้สามารถพัฒนาทั้งสองฝั่งด้วยภาษา Swift
ซึ่งทำให้เกิด project S4 ขั้นมา
โดย S4 ย่อมาจาก Server Side Swift Standard
นั่นคือมาตรฐานสำหรับการสร้าง Server Side ด้วยภาษา Swift
ประกอบไปด้วยส่วนการทำงานดังนี้

  • Middleware
  • Request
  • Response
  • Server

ทำให้เกิด framework ต่าง ๆ ในภาษา Swift

สำหรับสร้างระบบ web application หรือ server side เยอะมาก ๆ
ตัวอย่างเช่น

ยังไม่พอนะ ในแต่ละ framework ก็พัฒนาอยู่บน Swift ต่าง version กันอีก
ชีวิตดูลำบากมาก ๆ !!
แต่ไม่เป็นไรมี Swift Package Manager ให้ใช้งาน

แล้วจะเลือก Framework ตัวไหนดีล่ะ ?

ผมแนะนำให้ลองใช้งานทั้งหมดดูนะครับ
ส่วนผมเลือก Vapor
เพราะว่าชอบในรูปแบบการใช้งานเท่านั้นเอง
แถมมีเอกสารที่ใช้ได้เลย
รวมทั้งใช้งานผ่าน command line ได้อีกด้วย
มาเริ่มกันดีกว่า

Software ที่ใช้งานประกอบไปด้วย

  • Mac OS
  • Xcode 7.3.1

ขั้นตอนที่ 1 ติดตั้ง Swift Package Manager

ใช้สำหรับจัดการ version ของ dependency ที่ใช้งานใน project
ช่วยให้สามารถทำการ build และติดตั้ง library ต่าง ๆ แบบอัตโนมัติ
ซึ่งเหมือนกับ Cocoapods และ Carthage นั่นเอง

แต่โชคไม่ดีนักที่ Swift 3 ยังอยู่ในสถานะของการพัฒนา
ทำให้มี version ต่าง ๆ ออกมามากมาย
ดังนั้นจำเป็นต้องใช้งาน Swift Version Manager หรือ Swiftenv

ทำการติดตั้งดังนี้

ขั้นตอนที่ 2 ติดตั้งภาษา Swift 3

$swiftenv install DEVELOPMENT-SNAPSHOT-2016-05-31-a

ขั้นตอนที่ 3 สร้าง Swift project

ผลการทำงานเป็นดังนี้

swift-02

ประกอบไปด้วย

  • main.swift คือไฟล์เริ่มต้นการทำงานของระบบ เราจะแก้ไขที่ไฟล์นี้
  • Package.swift คือไฟล์สำหรับจัดการ dependency หรือ library ต่าง ๆ ที่ต้องการใช้งาน

ขั้นตอนที่ 4 ทำการเพิ่ม dependency ของ Vapor ในไฟล์ Package.swift

ขั้นตอนที่ 5 เขียน code ในไฟล์ main.swift กันเถอะ

ขั้นตอนที่ 6 ทำการ build และ run project กันเลย

$swift build

ผลการ build เป็นดังนี้

swift-03

$.build/debug/HelloWorld

จากนั้นเข้าใช้งานผ่าน browser ที่ url=http://localhost:8080/

swift-04

และทดสอบ response ในรูปแบบ JSON ดังนี้ http://localhost:8080/json

swift-05

ขั้นตอนที่ 7 ทำการ deploy ไปยัง Heroku นิดหน่อย

สามารถเข้าใจงานได้ที่ http://up1-swift-vapor.herokuapp.com/json

เพียงเท่านี้ก็สามารถพัฒนา Server Side ด้วยภาษา Swift ได้แล้วนะ
ลองเล่นและใช้งานกันได้ครับ

Code ตัวอย่างอยู่ที่ Github::Up1

Reference Websites
https://stormpath.com/blog/tutorial-build-first-swift-web-app-vapor
https://github.com/qutheory/vapor-example