02 ธันวาคม 2559

เรามาเขียนโค้ดได้ไง

ไม่แน่ใจว่าชัยพฤกษ์วิทยาศาสตร์หรือเซมิคอนดักเตอร์อิเลคทรอนิคส์ทำให้เราได้รู้จักกับ Apple ][ กับภาษา Basic เริ่มเขียนโค้ดครั้งแรกตอน ม.3 แต่เขียนบนกระดาษ ไม่มีคอมพิวเตอร์ให้ใช้เพราะอยู่ต่างจังหวัด กว่าจะได้ใช้ครั้งแรกก็ตอนอยู่ม.4 เพราะเข้ามาเรียนกรุงเทพ ตอนเปลี่ยนมาเป็น MS Windows ใช้หากินจาก VB และ VBA อยู่พักใหญ่
ภาษาที่สองที่เขียนเป็นคือ Assembly บน 6502 โดยได้หนังสือสามจากร้าน Book Chest แถวสยาม ไม่มี Assembler ใช้วิธีเปิดตาราง Opcode เอา แล้วโปรแกรมเป็น Hexadecimal เข้าไปบนเครื่อง Apple ][ ของเพื่อน ต่อมาจึงขยับขยายเป็น Z-80, 8048, 8086 และ MCS-51
ภาษาที่สามเป็น Lego เรียนตอนม.4ที่เตรียม สนุกดี แต่ไม่มีสาระ ลืมไปแล้วด้วย
ภาษาที่ 4 คือ FORTRAN เรียนตอนปีหนึ่ง ชอบที่จัดการ Matrix และ Imaigantion Numberได้
ภาษาที่ 5 ที่เขียนได้คือ C โดยได้หนังสือชื่อ ปอกส้มเข้าปาก ที่แถมมาจากวารสารคอมพิวเตอร์ฉบับหนึ่ง ลองหัดเขียนโดยใช้ Microsoft C ซึ่งเป็น Command Line Compiler แล้วจึงย้ายมาใช้ Turbo C เพราะเป็น IDE รุ่นแรกๆ บน MSDOS ชอบเพราะสั้นและทำ Bitwise Operation ได้เหมือน Assembly ตอนนี้ชำนาญเป็นอันดับหนึ่ง
ภาษาที่ 6 คือ Pascal โดย Turbo Pascal ไม่ชอบภาษานี้เพราะเยิ่นเย้อ ไม่ชอบการแยก Procedure กะ Function
ภาษาที่ 7 คือ C++ อ่านตอนอยู่ปี 1 แต่ไม่เชี่ยวชาญมาก มาเชี่ยวตอนเล่น Linux กะเขียนโปรแกรมลง Microsoft Pocket PC เลยเถิดมาบน ARM Embeded System เชี่ยวเป็นลำดับที่ 2
ภาษาที่ 8 คือ COBOL ตอนเรียนภาคคอม ลืมไปแล้ว
ภาษาที่ 9 คือ Java ตอนที่ออกใหม่ๆ เขียน Applet บน Web หลังๆ พอมาดังบน J2EE แล้วก็ไม่ค่อยได้เขียน
ภาษาที่ 10 คือ JavaScript เพราะต้องเขียน Web Page ให้มีลูกเล่น เป็นเหตุให้ต้องเรียนรู้ DOM ในเวลาต่อมา
ภาษาที่ 11 คือ VBScript บน ASP Classic ที่ออกมาพร้อม IIS 3 เป็น Server Side Scripting แรกที่หัด
ภาษาที่ 12 คือ PHP ตอนเขียน Web Server Component Linux ช่วงแรกๆ แต่ก็เลยเถิดมาไกล ใช้เยอะมากจนถนัดเป็นอันดับสาม รู้ไส้รู้พุงดีว่า Security มันเป็นไง
ภาษาที่ 13 คือ Python ไม่เชี่ยวแต่เขียน GUI ได้ก็แล้วกัน มาหัดตอนอยู่ที่เกียรตินาคินเพราะเห็น exploit code ส่วนใหญ่มันเป็น Python

ภาษาที่เป็นแต่ไม่นับก็คือพวก Shell Script เช่น Perl, DOS/Windows Batch, Bash
C# ไม่นับเพราะมันเป็นลูกหลานของ C++
ไม่นับพวก Markup Language แล้วกัน เอาแต่ Programming Language
ว่าจะหัด Ruby เหมือนกันเพราะ Metasploit แต่ตอนนี้ยุ่งเกินกว่าจะหัดใหม่

ไขข้อข้องใจว่าทำไมผมทำ Secure Code Review ได้

26 พฤษภาคม 2559

Data Quality in Data Warehouse


วันนี้ได้มีโอกาสคุยกับ CIO เกี่ยวกับเรื่องการทำระบบ Customer Relationship Management (CRM) ของธนาคาร ซึ่งหัวข้อการสนทนารวมไปถึงการได้มาของข้อมูล ความถูกต้องของข้อมูล การใช้ขัอมูลแบบ Big Data รวมถึงมาตรฐานเกี่ยวกับประเภทข้อมูล

สิ่งที่ได้รับจากการสนทนาพบว่าตัวเองมองข้อมูลใน Data Warehouse ไม่ครบทุกมุมมอง เนื่องจากไม่ได้อยู่ใน Financial Sector มาก่อนหน้านี้เลยมอง Data Warehouse เพียงเพื่อตอบสนองความต้องการข้อมูลเพื่อไปใช้ในเชิงการตลาดและ CRM แต่เพียงอย่างเดียว ซึ่งข้อมูลที่ใช้เชิงนี้ไม่ได้ต้องการความแม่นยำของข้อมูล (Precision) ในระดับที่สูง เพียงแค่ต้องการความครบถ้วนเพื่อใช้ในการวิเคราะห์ตามสมมติฐานทางการตลาดที่ตั้งขึ้น หรือหา Insight

แต่ข้อมูลใน Data Warehouse ของ Financial Sector ต้องการความแม่นยำของข้อมูลที่สูงเพื่อนำไปใช้ตามกฏระเบียบ (Regulation) ด้วย เช่น Basel, SOX เป็นต้น อย่างไรก็ตามข้อมูลชุดนี้ก็นำไปวิเคราะห์ในเชิงการตลาดด้วยเช่นพวก Financial Transaction เป็นต้น

ปัญหาของ Data Quality ใน Data Warehouse จึงอยู่ที่ว่าผู้ที่ดูแลข้อมูลให้ครบถ้วนมักจะโอนเอียงไปด้านใดด้านหนึ่งคือ เพื่อ Regulation หรือเพื่อ Analytic หายากมากที่จะคำนึงถึงข้อมูลที่ตอบสนองต่อทั้งสองด้านได้ไปพร้อมๆ กัน ในสถาบันการเงินส่วนใหญ่จึงมุ่งไปทำให้ Data Quality เกิดขึ้นเพื่อด้าน Regulation

ถ้าอย่างนั้นแล้วข้อมูลที่ใช้สำหรับทำ Data Analytic ทางสถาบันการเงินจะเตรียมข้อมูลที่มีคุณภาพเข้าสู่ Data Warehouse อย่างไร สำหรับสถาบันการเงินที่มีงบประมาณในการทำ Data Warehouse มากก็คงกวาดเอาข้อมูลให้มีประเภทของข้อมูลเข้าไปมากที่สุดไว้ก่อน มีคุณภาพหรือไม่ว่ากันทีหลัง แต่สำหรับสถาบันการเงินที่ไม่ได้มีงบประมาณมากขนาดนั้นคงต้องคัดกรองประเภทและคุณภาพของข้อมูลเพื่อให้การวิเคราะห์ทำได้ดีที่สุด

ความยากคงอยู่ที่ข้อมูลประเภทใด Field ไหน Transform อย่างไรที่ควรเข้าไปอยู่ใน Data Warehouse อย่างมีคุณภาพในสภาพที่มีทรัพยากรจำกัดเพื่อการวิเคราะห์ได้เกิดประโยชน์สูงสุด

09 กุมภาพันธ์ 2559

Secure Software Design 101: Fail-Safe / Fail-Secure

ในการออกแบบด้าน Security ต้องมีการคำนึงถึงสถานการณ์ที่ไม่พึงประสงค์ที่อาจเกิดขึ้นเนื่องจากความผิดพลาด อุบัติเหตุ หรือสถานการณ์ผิดปกติใดๆ ที่ทำให้ระบบไม่สามารถทำงานได้ตามที่ต้องการ โดยทั่วไปมีจุดประสงค์สองประการคือ เพื่อให้ปลอดภัย (Safe) หรือเพื่อความมั่นคง (Secure) ซึ่งสองอย่างนี้ต่างกัน

ตัวอย่างที่แสดงให้เห็นความแตกต่างของทั้งสองแบบเช่น ในการออกแบบประตูบริเวณศูนย์ข้อมูล (Data Center) ซึ่งใช้ Access Control ในการควบคุมการเข้าออกศูนย์ข้อมูล ในกรณีที่เกิดเหตุฉุกเฉินเช่นเพลิงไหม้ ในบริเวณที่พนักงานนั่งทำงานจะต้องออกแบบให้ Fail-Safe คือหากไฟดับประตูต้องเปิดทันทีเพื่ออพยพคนออก แต่ห้องเครื่องศูนย์ข้อมูลจะต้องออกแบบให้ Fail-Secure คือเมื่อตัดไฟต้องปิดประตูเสมอเพื่อป้องกันคนเข้าถึงเครื่องแม่ข่ายหรืออุปกรณ์เครือข่ายโดยไม่ได้รับอนุญาต

หรือในกรณีอุปกรณ์ Security บนเครือข่าย อุปกรณ์ Firewall จะมีโครงสร้างเป็นแบบ Fail-Secure คือเมื่อมีการขัดข้อง จะแยกเครือข่ายที่เชื่อมกันออกจากกัน ไม่ยอมให้เครือข่ายข้ามถึงกัน แต่ IPS (Intrusion Prevention System) ซึ่งวางขวางระบบเครือข่ายเช่นกันจะทำในทางตรงกันข้าม คือหากขัดข้องจะมีการ Bypass เครือข่ายอัตโนมัติ ซึ่งเป็นแนวทาง Fail-Safe

แล้วในกรณีการออกแบบซอฟต์แวร์ เราจะใช้หลักการ Fail-Safe หรือ Fail-Secure อย่างไร ขอให้หลักการไว้คร่าวๆ ดังนี้

  • หากอยู่ในเงื่อนไขที่ต้องการ Availability มากกว่า Confidentiality หรือ Integrity ให้ออกแบบส่วนนั้นเป็น Fail-Safe เช่นการออกแบบ User Interface ต่างๆ บน Web Application เมื่อเกิด Error 4xx หรือ 5xx ก็ควรจะมี Landing Page ให้คำแนะนำกับผู้ใช้ และมีลิ้งค์ไปยังหน้าแรกที่เป็น Static Page หรือหน้า Login เพื่อป้องกันไม่ให้ผู้ใช้ดำเนินการที่ทำให้ระบบมีปัญหาเพิ่มขึ้นเช่นกดปุ่ม Refresh ของ Web Page เพื่อทำงานซ้ำ
  • หากอยู่ในเงื่อนไขที่ต้องการ Confidentiality หรือ Integrity มากกว่า Availability ให้ออกแบบส่วนนั้นเป็น Fail-Secure เช่นการทำ Financial Transaction หากเกิดข้อผิดพลาดทางใดทางหนึ่งเช่นการโอนเงินจากบัญชีหนึ่งไปยังอีกบัญชีหนึ่งของอีกธนาคาร สามารถตัดบัญชีต้นทางได้แต่ไม่สามารถเอาเข้าบัญชีปลายทางได้ไม่ว่าจะเกิดจากระบบที่ใช้โอน ผู้ให้บริการโอน (Switching) การสื่อสารขัดข้อง หรือกรณีใดก็แล้วแต่ จะต้องทำการย้อนกลับ (Rollback) ทันที

สิ่งหนึ่งที่สำคัญในการออกแบบซอฟต์แวร์ที่มีลักษณะ Fail-Safe/Fail-Secure ให้ได้ดีคือการจำลองกรณีผิดพลาดให้ได้มากที่สุดว่าเกิดจากอะไรได้บ้าง แล้วหาเส้นแบ่งในการตรวจสอบข้อผิดพลาดนั้นๆ (Threshold) เพื่อตัดสินใจว่าจะเข้าสู่กระบวนการจัดการความล้มเหลวของระบบ

จำไว้เสมอว่าซอฟต์แวร์ที่ดี ต้องออกแบบให้มีการจัดการข้อผิดพลาดเมื่อระบบส่วนใดส่วนหนึ่งทำงานล่มไม่เป็นไปตามความต้องการ

ตอนที่เกี่ยวข้อง


29 มกราคม 2559

Secure Software Design 101: Need to Know

การออกแบบซอฟต์แวร์ให้มั่นคงปลอดภัยในในหัวข้อนี้ เป็นเรื่องของการเข้าถึงข้อมูล และเกี่ยวข้องกับเรื่องการรักษาความลับ (Confidentiality) โดยตรง หลักการนี้กล่าวว่า ถึงแม้ว่าใครก็ตามได้รับอนุญาตให้เข้าถึงข้อมูลไม่ว่าจะเป็นชั้นความลับระดับใดก็ตาม ก็ไม่สามารถเห็นข้อมูลนั้นได้จนกว่าจะมีความจำเป็นที่ต้องรู้ข้อมูล (Need to Know) เพื่อที่จะใช้ในการปฏิบัติงาน และไม่จำเป็นต้องเห็นข้อมูลทุกอย่าง เว้นแต่ข้อมูลที่เกี่ยวข้อง

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

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

Need to Know มักจะถูกใช้สับสนกับ Least Privilege เนื่องจากเป็นเรื่องการควบคุมสิทธิ์เช่นเดียวกัน โดยข้อแตกต่างจะสรุปได้ดังนี้
ข้อเปรียบเทียบ Need to Know Least Privilege
การเข้าถึง อ่านเท่านั้น อ่าน เขียน สั่งให้ทำงาน เป็นต้น
Object ข้อมูลเท่านั้น ข้อมูล แฟ้ม บริการ กระบวนการ เป็นต้น
Security Foundation Confidentiality Confidentiality, Integrity
การควบคุมการเข้าถึงข้อมูล ระดับ Record & Field ระดับSchema (อาจถึงระดับ Field)
สิทธิ์ ตามที่ได้รับมอบหมาย(Assignment) ตามบทบาท(Role)

จำไว้เสมอว่า Subject ควรได้รับข้อมูลเฉพาะที่จำเป็นต้องรู้เพื่อทำงานตามหน้าที่ที่ได้รับมอบหมายเท่านั้น

ตอนที่เกี่ยวข้อง


27 มกราคม 2559

Secure Software Design 101: Least Privilege

ในการออกแบบทางด้าน Security สิ่งหนึ่งที่มักจะพูดถึงก็คือเรื่องการให้สิทธิ (Authorization) เพื่อทำงานใดๆ ไม่ว่าจะเป็นระดับผู้ใช้ (User) หรือกระบวนการ (Process) ซึ่งเราเรียกรวมกันว่าประธานหรือผู้กระทำ (ขอใช้ทับศัพท์ว่า Subject or Actor) กระทำการใดๆ ต่อข้อมูล บริการ (Service) หรือแม้แต่กระบวนการ (Process) ด้วยกันเอง ซึ่งเรียกรวมๆ กันว่ากรรม (ขอใช้ทับศัพท์ว่า Object) ซึ่งสามารถเขียนเป็นตัวอย่างการรวมกันของ ประธาน กริยา กรรม ได้เช่น
ประธาน (Subject)กริยา (Access)กรรม (Object)
ผู้ใช้ (User)
โปรแกรม (Program)
กระบวนการ(Process)
อ่าน (Read)
เขียน (Write)
สั่งให้ทำงาน(Execute)
แฟ้มข้อมูล (File)
ฐานข้อมูล(Database)
บริการ (Service)
กระบวนการ(Process)
ทรัพยากร(Resource)

การออกแบบการให้สิทธินั้นมีแนวคิดเพื่อความมั่นคงปลอดภัยก็คือการให้สิทธิ Subject ดำเนินการต่อ Object น้อยที่สุดเท่าที่จะทำงานได้สำเร็จตามวัตถุประสงค์ หรือที่เรียกว่า Least Privilege เช่น Web Application ซึ่งทำงานกับ Database เพียงแค่ insert, select, update, delete ก็ควรจะสร้าง Database User ให้กับ Web Application นั้นให้มีสิทธิ์เท่าที่ทำงานดังกล่าวได้ ไม่ใช่ปล่อยให้ใช้ User ที่มีสิทธิ์สูงเช่น SA, root, SYS หรือ Schema Owner หรือ User ที่สามารถใช้คำสั่งจัดการ Schema ของข้อมูล (DDL: Data Definition Language) เช่น create, alter, drop เป็นต้น

สิทธิดังกล่าวข้างต้นเป็นสิทธิในเชิงวิธีการเข้าถึง แต่ยังมีในเชิงปริมาณที่ต้องคำนึงถึงคือจำนวนและชนิดของ Object ที่เข้าใช้งาน หลักการ Lease Privilege ก็ครอบคลุมในมิตินี้ด้วย กล่าวคือหาก Subject ไม่มีความจำเป็นที่ต้องทำงานกับ Object ใด ก็ควรห้ามการเข้าถึง Object นั้นๆ ด้วย

การให้สิทธิ์แก่ Subject มากเท่าไรก็เป็นการเพิ่มพื้นที่ในการโจมตี (Attack Surface) ต่อ Object มากเท่านั้นและเมื่อ Subject โดนยึดได้ (Compromised) Object ก็มีโอกาสถูกกระทำตามสิทธิที่ให้แก่ Subject ไว้

จำไว้เสมอว่า ให้ Subject มีสิทธิยิ่งน้อยเท่าไรความเสี่ยงในการที่ Subject จะถูกสวมรอยเพื่อใช้ทำงานผิดวัตถุประสงค์หรือทำงานผิดพลาดโดยไม่ตั้งใจ (User Error) จะมีน้อยเท่านั้น

ตอนที่เกี่ยวข้อง


29 พฤศจิกายน 2558

ว่าด้วยเรื่อง Unicode

จากเมื่อวานต้องเขียนโปรแกรมดึงข้อมูลจาก mdb (Microsoft Jet ที่เราชอบเรียก MS Access File) ที่เขียนไว้ใช้กับ VB6 ตั้งแต่สมัย Windows 98 แปลงมาเป็น SQLite3 เพื่อให้ใช้ได้ทุก Platform ด้วยโปรแกรมที่เขียนด้วย Python จากข้อมูลเดิม Text เป็น ASCII Windows 874 ต้องมาใช้ Unicode ที่ SQLite รองรับ

เพราะต้องการจะเขียนให้จบเร็วจึงตัดสินใจใช้วิธีแปลงข้อมูลใน Table ของ MS Access เป็น SQL command (INSERT INTO) ลง Text File เพื่อเรียกใช้โดย sqlite3.exe command line จากโครงการ SQLite อีกทีหนึ่ง

ปัญหาคือแม้บอกว่าเป็น Unicode แต่ Unicode ก็ไม่ได้มีแบบเดียว มี UTF-8 และ UTF-16 แล้ว UTF-16 ยังมีแบบ Little Endian และ Big Endian อีก อย่างไรก็ตามโปรแกรมที่ทำการแปลงข้อมูลต้องทำบน Windows เพื่อให้คนอื่นใช้ บน Windows x86 เก็บ Character บน Memory เป็น 16 bit Little Endian

ทดลองเขียนไฟล์เป็น UTF16LE ก็ปรากฏว่า sqlite3.exe อ่านได้ แต่เก็บข้อมูลภาษาไทยผิด ทั้งที่จากการตรวจสอบไฟล์ SQL statement เปิดด้วย Text Editor ก็อ่านถูก เลยตัดสินใจเปลี่ยนเป็น UTF-8 ซึ่งต้องเปลี่ยน Library ด้วย เขียนแล้วก็เปิดด้วย Text Editor แสดงเป็น UTF-8 ได้ แต่ sqlite3.exe อ่านไม่ผ่าน เหมือนว่าไม่รู้จัก 3 byte แรก อะไรหว่า

ก็พบว่า UTF-8 Text File ก็ยังมี 2 แบบอีกคือ แบบมี BOM (Byte Order Mark) กับไม่มี ซึ่ง sqlite3.exe ต้องไม่มี เลยต้องตัด 3 byte แรกออกและเขียนเป็น Binary ลง Text File (ห้ามงง) ถึงจะผ่านฉลุย

อยากรู้ว่าทำไมชีวิตกับ Unicode ถึงอยู่ยากจัง

07 กันยายน 2558

เที่ยวญี่ปุ่น: Furano/Biei ฟาร์มโทมิตะ บ่อน้ำสีฟ้า ใน 1 วัน

Furano และ Biei บนเกาะฮกไกโดในฤดูร้อน ขึ้นชื่อเรื่องภูมิทัศน์ ความสวยงามของดอกไม้ และความอร่อยของ Yubari Melon จึงเป็นเป้าหมายของนักท่องเที่ยวเป็นจำนวนมาก แม้ว่าการเดินทางในช่วงฤดูร้อนในแถบนี้ การขับรถดูเหมือนจะเป็นทางเลือกที่ดีที่สุดที่จะไม่ได้ถูกจำกัดเรื่องเวลา แต่อย่างไรก็ตามค่าเช่าที่แพงเอาการในช่วงฤดูร้อนและตัวผมที่เดินทางคนเดียว ตัวเลือกนี้ก็ถูกตัดไป
เมื่อพิจารณาการเดินทางแบบอื่นพบว่าถ้าพักที่ Sapporo ไปแล้วเดินทางไปตั้งต้นที่ Furano หรือ Asahikawa ก็มีตัวเลือกคือ

  • ใช้รถไฟของทางการรถไฟญี่ปุ่นบนเกาะฮกไกโด (JR Hokkaido) ไม่ว่าจะเป็นขบวนปกติไป Asahikawa หรือต่อรถไฟระหว่างทางไป Furano รวมถึงรถไฟขบวนรถด่วนพิเศษ Sapporo-Furano โดยตรง
  • ใช้รถประจำทางจาก Sapporo ไปยัง Furano ซึ่งเป็นรถบัสหวานเย็นจอดมันทุกป้ายใช้เวลาประมาณสองชั่วโมงครึ่งของบริษัท Chuo-Bus 2,260 เยนต่อคน เที่ยวเดียว อยากรู้ว่าหวานเย็นแค่ไหนดูตารางเดินรถได้ที่นี่
หากตั้งต้นที่ Asahikawa หรือ Furano ก็จะสามารถเดินทางไปเที่ยวจุดต่างๆ โดยสถานีหลักๆ ได้แก่ Furano (เที่ยวโรงงานชีส ไวน์ ขนม) Nakafurano (Farm Tomita) Biei (Patchwork Road, Hokusei Hill Observatory, Aoiike บ่อน้ำสีฟ้า แม่น้ำสีฟ้า) ได้ดังนี้
  • ระหว่าง Furano-Biei-Asahikawa จะมีรถไฟธรรมดา รวมถึงรถไฟ Norokko ระหว่าง Asahikawa กับ Furano ที่หยุดที่สถานีพิเศษชื่อ Lavender Station ใกล้ Farm Tomita มากกว่า ส่วนรถไฟธรรมดาต้องลงที่สถานี Nakafurano แล้วนั่ง Taxi ไป
  • ใช้ Lavender Bus ที่วิ่งระหว่างสถานี Asahikawa สนามบิน Asahikawa และ จุดต่างๆ ใน Furano โดยถ้าจะไป Farm Tomita ก็ต้องลงที่ Nakafurano เช่นกัน
ทั้งสองทางเลือกข้างบนจะไม่ได้เดินทางไปจุดท่องเที่ยวโดยตรงเพราะเป็นเส้นทางเดินรถหลักไม่ใช่เส้นทางท่องเที่ยวเสียทีเดียว ถ้าต้องการเที่ยวสามารถใช้บริการต่างๆ นี้ได้
  • ใช้ Kukuru Bus 2-Day Pass 1,400 เยน วิ่งระหว่างจุดต่างๆ ใน Furano กับจุดท่องเที่ยวต่างๆ ไม่ว่าจะเป็น Cheese Factory, Furano Winery, Furano Grape Juice Factory รวมทั้ง Farm Tomita เป็นต้น ซึ่งอยู่แต่แถบ Furano ไม่ได้ไป Biei
  • ใช้ Twinkle Bus ของ JR เป็นรถท่องเที่ยวโดยเฉพาะซึ่งมีหลายเส้นทางให้เลือกเช่น เริ่มต้นที่สถานี Biei แล้วกลับมายัง Biei หรือ Biei-Furano หรือจาก Asahikawa ไป Furano หรือ จาก Furano มายัง Asahikawa
  • จากสถานี Biei จะไปบ่อน้ำสีฟ้า มีรถเมล์วิ่งสาย 39 ที่ไปยัง Shirogane Onsen โดยลงที่ Shirogane Aoiike Iriguchi (白金青い池入口) แล้วเดินเข้าไป ดูตารางเดินรถที่นี่ สีแดงคือสถานี Shirogane Aoiike Iriguchi คู่กลางคือสถานี Biei
ไม่ว่าจะเลือกเดินทางอย่างไรก็ดูเหมือนว่าจะเที่ยวแบบเดินทางจาก Sapporo ไปเช้าเย็นกลับ รวมทั้งได้ไปจุดยอดนิยมต่างๆ เหล่านี้ดูจะเป็นไปได้ยาก อาจจะไม่คุ้มกับการเดินทาง ซึ่งส่วนใหญ่มักจะได้รับคำแนะนำว่าค้าง Furano หรือไม่ก็ Asahikawa เถอะ (ไม่ค่อยมีใครแนะนำให้ค้าง Biei อาจเป็นเพราะมีโรงแรมไม่มาก) แต่ครั้งนี้ผมไม่มีเวลาเที่ยวมากขนาดนั้น

จนกระทั่งผมพบบริการทัศนาจรของ Chuo Bus

Chuo Regular Sightseeing Bus

ผมพบเว็บไซต์ Chuo Bus นี้จากการค้น Google ด้วย keyword คือ sapporo furano biei farm tomita one day tour แล้วก็พบ Farm Tomita, Blue Pond and Biei Tour ราคาทัวร์รวมอาหารเที่ยงคือ 7,200 เยน ได้ไปชม Patchwork Road แบบไม่ได้ลงจากรถ แวะจุดชมวิว Hokusei no Oka ต่อด้วยบ่อน้ำสีฟ้า Aoiiike จากนั้นไปทานอาหารเที่ยงที่ร้านอาหารบนชั้นสองของพิพิธภัณฑ์ภาพวาด Sumio Museum และแวะชม สุดท้ายคือไป Farm Tomita แล้วก็กลับ Sapporo

จากเว็ปไซต์จะมี Web Form เป็นอีเมล์ไม่ใช่ออนไลน์ ให้เราจองทัวร์ในวันที่ต้องการ แล้วจะมีเมล์ตอบรับกลับมาในวันทำการถัดไป แต่จากข้อมูลในเว็บไซต์ เราสามารถจองที่สถานีรถประจำทาง Sapporo ตรง ชั้นสองตึก ESTA ที่ติดกับสถานี JR Sapporo ใกล้ Bic Camera ก่อน 18:00 ของวันก่อนวันเดินทางก็ได้ เนื่องจากกลัวเต็มก็เลยจองผ่านฟอร์มบนเว็บ จะมีการส่งอีเมล์ยืนยัน PDF File ข้อมูลของจุดรับตั๋วที่ Sapporo Bus Terminal Excel File ของ Tour Voucher ซึ่งตอนรับตั๋วใช้แค่เลขสำรองที่นั่งแล้วจ่ายเงินเท่านั้น

ทัวรไปที่อื่นๆ ก็น่าสนใจเช่นไปเที่ยวแหลม Shakotan ไปทะเลสาบ Shikotsu และ Toya แต่ว่าเนื่องจากเวลาจำกัดก็เลยไม่ได้เลือกไป
ตึก ESTA ที่ด้านล่างเป็น Sapporo Bus Terminal ออก West Gate ของ JR Hokkaido ก็จะเห็น แวะไปดูวันที่ไปถึง Sapporo
ชั้นสองทางเข้า ESTA จะเห็น Chuo-bus Sightseeing Bus Counter ซื้อหรือรับตั๋วที่นี่ ป้ายแดงๆ ถัดไปคือทางเข้า Bic Camera

เริ่มต้นเดินทาง

ผมไปรับตั๋วก่อน 8:00 ของวันเดินทาง ซึ่งจากอีเมล์บอกให้ไปรับตั๋ว 20 นาทีก่อนการเดินทาง เมื่อไปถึงก็บอกเลขสำรองที่นั่ง จากนั้นก็ชำระเงินซึ่งผมชำระด้วยบัตรเครดิตและรับตั๋วมา จากนั้นก็รอเรียก โดยที่ทัวร์ที่ผมจองออกเป็นขบวนที่สอง ก็จะมีไกด์ทัวร์ถือป้ายบอกว่าเป็นทัวร์อะไร ไปไหน โดยป้ายที่เรียกทัวร์ผมมีคำว่า Blue Pond ชัดเจนเพราะคณะก่อนหน้าไป Farm Tomita เหมือนกันแต่ไม่ไปบ่อน้ำสีฟ้า ไปชมดอกไม้ที่ฟาร์มอื่น ทัวร์ผมวันนี้คนไม่มาก ที่นั่งคู่ผมนั่งคนเดียวไม่มีใครมานั่งข้างๆ ลูกทัวร์เป็นจีน เกาหลี ญี่ปุ่น มีไทยหนึ่งหน่อคือผมเอง
ตั๋วเที่ยว Farm Tomita, Blue Pond and Biei
มื้อเช้าแบบรีบๆ แวะ 7-11 ซื้อก่อนมารับตั๋ว
บนรถทัศนาจรที่ Sapporo Bus Terminal
อาวุธวันนี้ Sony NEX-3 กับเลนส์ 55-210 mm f/4.5-6.3
ออกจาก Sapporo Bus Terminal วิ่งขนานไปกับทางรถไฟสักพักก็ถึงชายเมือง บรรยากาศชนบทก็สวยดีไกด์สาวก็บรรยายไปเรื่อยๆ เป็นภาษาญี่ปุ่น ก็ไม่รู้เรื่องหรอก รถมุ่งหน้าไปขึ้นทางด่วนเส้นที่ไปยัง Asahikawa โดยแวะพักที่ Sunagawa เป็นเหมือนจุดพักรถเพื่อให้ลูกทัวร์เข้าห้องน้ำ ไกด์ก็เขียนเวลานัดหมายว่ารถจะออกเมื่อไรบนป้ายให้ลูกทัวร์เห็นอย่างชัดเจน แถวนี้มีร้านค้าขายขนม อาหาร เครื่องดื่ม ของที่ระลึกครบเซ็ต ผมได้แต่ดูเพราะไม่อยากจะขนของมากมาย บริเวณใกล้กับร้านค้ามีสวนหย่อมที่ดูดีทีเดียว

Patchwork Road, Biei

เส้นทาง Patchwork Road มีภูมิทัศน์เป็นเนินเขาที่ต่อเนื่องกันไป สวยแบบที่ยังไม่เคยเห็นในภูมิภาคอื่นของญี่ปุ่น บางจุดทำให้นึกถึง Wallpaper ที่คุ้นชิน
ภาพนี้ถ่ายจาก Patchwork Road, Biei
ภาพนี้คือ Default Wallpaper ของ Windows XP ลองเทียบกับภาพที่ได้บริเวณ Patchwork Road ด้านบน

ต้นไม้ชื่อดัง

ต้นไม้ชื่อดังบริเวณ Patchwork Road มาจากโฆษณาทั้ง Print Ads และทางโทรทัศน์ (TVC: Television Commercial Ads) 3 จุด ได้แก่ Seven Star จากภาพโฆษณาบุหรี่ชื่อเดียวกัน, Ken & Mary จากโฆษณารถนิสสัน Love Skyline ปี 1972 และ Mild Seven จากภาพโฆษณาบุหรี่ชื่อเดียวกัน ส่วนแนวต้นโอ๊ค Parent and Child ก็เป็นที่รู้จักเนื่องจากการยืนต้นมานานลักษณะคล้ายพ่อแม่ลูก

ผมไม่แน่ใจว่าทัวร์นี้พาแวะชมทั้งสี่จุดหรือไม่ แต่ผมเห็นแค่สองจุดจากด้านที่ผมนั่งคือ Ken and Mary และ Seven Star เนื่องจากรถหยุดแต่ละจุดไม่น่าจะเกิน 10 วินาที ไม่แน่ว่าหยุดเพราะเป็นทางแยกด้วยหรือเปล่า
Ken and Marry
Seven Star

จุดชมวิวเนินตะวันตกเฉียงเหนือ (北西之丘展望公园, Hokusei no Oka)

ที่นี่จุดที่เป็นที่นิยมในการชมวิวบริเวณ Patchwork Road อีกบริเวณหนึ่ง มีสถาปัตยกรรมคล้ายปิระมิด วิวจากจุดนี้ก็จัดว่าสวยงามทีเดียว ตรงจุดนี้เริ่มจะมีผลิตภัณฑ์ที่เกี่ยวข้องกับลาเวนเดอร์ขาย ผมก็เลยลองชิม Lavender Soft Cream รสชาติแปลกดี แต่โดยส่วนตัวก็รู้สึกเฉยๆ

บ่อน้ำสีฟ้า (青い池, Aoiike)

นี่เป็นจุดที่ผมอยากมาที่สุดรองจาก Farm Tomita แต่มาโดยรถโดยสารประจำทางค่อนข้างยากและต้องเดินจากปากทางเข้ามาไกลพอสมควร การซื้อทัวร์จึงทำให้ไม่ต้องเดินไกล แต่ก็อีกมีเวลาให้จำกัดแค่ 40 นาที ทำให้ผมเดินไม่ถึงแม่น้ำสีฟ้าที่อยู่ถัดไป ถ้าผมจะมาทัวร์อีกครั้งจะเดินไปถึงแม่น้ำก่อน แล้วจึงเดินย้อนกลับมาแถวบ่อน้ำ ดูแผนผังตามรูปข้างล่าง

น้ำในบ่อสวยมากไม่แน่ใจว่าจะมีปลาอยู่ได้หรือเปล่าเพราะไม่เห็น ที่จริงบ่อนี้เกิดขึ้นพร้อมกับการสร้างเขื่อนเพื่อลดความเสียหายที่จะเกิดขึ้นกับ Biei หากภูเขาไฟ Tokachidake เกิดระเบิด  แต่สารเคมีที่ทำให้เกิดสีฟ้าน่าจะไม่ได้เกิดจากความตั้งใจ ดูจากสีไม่รู้ว่าเป็น Copper Sulfate หรือเปล่า บ้างก็ว่า Aluminium Hydroxide

มื้อเที่ยงที่พิพิธภัณฑ์ภาพเขียนของ Goto Sumio (後藤純男, Goto Sumio Museum of Art)

Goto Sumio เป็นจิตรกรสีน้ำชั้นนำของฮกไกโด ซึ่งพิพิธภัณฑ์นี้เดิมเป็นสตูดิโอของท่าน ตั้งอยู่ใน Kamifurano ในสตูดิโอประกอบด้วยภาพวาดเป็นจำนวนมาก แต่ถ่ายภาพออกมาไม่ได้ คงต้องไปดูเองที่ Web Site นะครับ

ที่พิพิธภัณฑ์นี้ชั้นสองเป็นร้านอาหารชื่อ Furano Grill ซึ่งดูเหมือนจะมีชื่อเสียงพอสมควร อาหารที่ทัวร์จัดให้ทานมื้อเที่ยงที่นี่เป็นหมูสามชั้นตุ๋นซึ่งอร่อยดี และมียูบาริเมล่อนไว้ล้างปากด้วย

ทางรถทัวร์หยุดแวะพักที่นี่นานมากจนผมคิดว่าน่าจะเพิ่มเวลาที่อยู่ที่ Aoiike มากกว่า หลังจากทานมื้อเที่ยงและชมภาพเขียนเสร็จก็เลยถ่านรูปกับรถของ Chuo Bus และพนักงานขับรถกับไกด์(ไม่)สาว

ฟาร์มโทมิตะ (ファーム富田, Farm Tomita)

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


สิ่งที่ผมชอบมากที่สุดกลับเป็น Yubari Melon ซึ่งผมกินไปหลายชิ้นเหมือนกัน อีกอย่างก็คือ Melon Soft Cream ซึ่งอร่อยกว่า Lavender Soft Cream อีกนะ ทำเอาผมกลายเป็นแฟนของ Hokkaido Yubari Melon ไปเลย ซื้อของฝากเป็นผลิตภัณฑ์ Melon กลับกรุงเทพเต็มไปหมด สีของ Yubari Melon จะเป็นสีเหลืองคล้ายแคนตาลูปไม่เหมือนเมล่อนทั่วไปที่สีเขียว

หลังจากอยู่ที่ Farm Tomita ประมาณ 60 นาทีก็เดินทางกลับ Sapporo นับว่าเป็นทัวร์ที่คุ้มค่ากับเงิน 7,200 เยนมากเลยครับ