barcamp-bkk
วันนี้มาร่วมงาน Barcamp Bangkhen 2016 ซึ่งจัดที่มหาวิทยาลัยเกษตรศาสตร์
ซึ่งมีคนมาร่วมงานเยอะมาก ๆ
ส่วนผมไม่ได้ลงทะเบียนก็เลย walk-in เอาเลย
โดยในช่วงเช้าเข้าฟัง session ต่าง ๆ ดังนี้

  • Functional Programming with JavaScript
  • Building Microservice with Docker Swarm
  • What we have learned from building LINE chatbot ?

1. Functional Programming with JavaScript

เป็นการแนะนำวิธีการเขียน JavaScript ในอีกรูปแบบ
สิ่งที่ชอบมาก ๆ คือ การนำเสนอ
โดยทำการอธิบายรูปแบบการเขียน code แบบเดิมก่อนว่าเป็นอย่างไร
จากนั้นจึงทำการอธิบายต่อว่า
ถ้าเขียนในรูปแบบของ Functional programming แล้วจะเป็นอย่างไร
ซึ่งทำให้เราได้รู้และเข้าใจอย่างชัดเจน

โดย code ที่ได้มานั้น
จะสั้น กระทัดรัด ซึ่งดูแล้วง่ายดี
แต่ก็ต้องแลกมาด้วยการเรียนรู้เพิ่มเติม
ซึ่งเป็นสิ่งที่นักพัฒนาต้องทำอยู่แล้ว !!

สำหรับใครที่สนใจลองเริ่มศึกษาได้จาก Learn Functional Programming with JavaScript
ส่วน Library ที่ใช้งานคือ RxJS

2. Building Microservice with Docker Swarm

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

โดย Microservice นั้นก็มีรูปแบบของการออกแบบที่หลากหลาย
สามารถดูเพิ่มเติมได้ที่ Pattern :: Microservice Architecture
จากนั้นลองพิจารณาดูว่า
ระบบงานของเรานั้นเหมาะสมกับรูปแบบไหน ?

จากนั้นเป็นการ demo จัดการ Microservice ด้วย Docker Swarm
ซึ่ง Docker Swarm คือเครื่องมือสำหรับจัดการ Clustering ของ Container นั่นเอง
ช่วยทำให้เราสามารถ scale แต่ละ service แบบง่าย ๆ ได้
เนื่องจาก Docker Swarm จัดการให้ทั้ง

  • การเพิ่มหรือลดจำนวน container ในแต่ละ service
  • ในแต่ละ service จะมี Load Balance ให้

มีคำถามที่น่าสนใจ เช่น
การจัดการ volumn
การจัดการ network
การจัดการ load balance
การจัดการ microservice

โดยตัวอย่างอยู่ที่ Github:: Microservice with Docker Swarm 101

3. What we have learned from building LINE chatbot ?

เป็นการเล่าประสบการณ์ในการสร้าง LINE chatbot ของวงใน
สิ่งที่น่าสนใจมาก ๆ คือข้อแนะนำในการสร้าง Chatbot
เริ่มด้วย bot ต้องมีความเป็นคน เป็นเพื่อน
ไม่ใช่ตอบคำถามแบบทื้อ ๆ ตอบซ้ำ ๆ
ทั้งการแนะนำตัว
ทั้งตัวตนที่ชัดเจน

โดยการสร้าง bot นั่นเริ่มจากให้คนมาตอบแทนก่อน
เพื่อเรียนรู้ว่า ผู้ที่มาคุยกับ bot นั้นต้องการอะไรกันแน่
ทำให้ผู้สร้างสามารถสร้างสิ่งที่ตรงใจออกมามากกว่า
แถมยังมีเทคนิคในการตอบคำถามและพูดคุยเพิ่มเติม เช่น

  • ควรมีกลุ่มของคำตอบไว้สำหรับเรื่องหนึ่ง ๆ เพื่อลดการตอบซ้ำ ๆ
  • ใส่ emoticon เข้าไปด้วย เพื่อเพิ่มความน่าสนใจ
  • สามารถให้คำแนะนำ และ บอกได้ว่าขั้นตอนต่อไปต้องทำอะไร
  • ที่สำคัญต้องตอบทุก ๆ คำถามนะ

แถมด้วยสิ่งที่ต้องพิจารณาในการสร้าง Chatbot ประกอบไปด้วย

  • ต้องรู้และเข้าใจข้อจำกัดต่าง ๆ เช่น ขนาดของหน้าจอซึ่งส่งผลต่อสิ่งที่ตอบ จะทำอย่างไรให้เหมาะสม
  • ต้องเรียนรู้พฤติกรรมและเก็บข้อมูลของผู้ใช้งาน ทั้ง localtion และ language รวมทั้ง Analytic ต่าง ๆ
  • ต้องสามารถทำงานได้หลากหลาย platform
  • ต้องทำการ promote bot ของคุณด้วยล่ะ ว่ามีนะ ว่าทำอะไร ช่วยอะไรได้บ้าง

ส่วนหัวข้ออื่น ๆ ที่น่าจะทำต่อไป เช่น
การทำให้ bot ฉลาดขึ้นเช่นการใช้ Rule-based engine หรือพวก AI
การเรียนรู้ภาษาไทยเช่น การตัดคำ !!
แน่นอนว่า คุยให้เหมือนคนมากขึ้น

แต่เหนือสิ่งอื่นใด ก่อนจะสร้าง bot ใด ๆ ขึ้นมา
ควรต้องกำหนดตัวตน หรือ personality ของ bot ก่อนเสมอ
ว่ามีคุณลักษณะอย่างไร ?
ว่ามีอุปนิสัยอย่างไร ?
ว่าทำอะไรได้บ้าง ?
ดังนั้นสร้าง bot ที่มีความสามารถแบบเฉพาะเจาะจงจะเหมาะสมกว่า
แน่นอนว่าต้องมีประโยชน์ต่อผู้ใช้งานและ business นะ

ส่วนช่วงบ่ายได้แบ่งปันไป 2 เรื่องคือ