- หน้าแรก
- เปิดเทอมวันแรก ผมติดหนี้หลักล้าน
- บทที่ 5 การเดินทางของการสร้างวงล้อจากศูนย์
บทที่ 5 การเดินทางของการสร้างวงล้อจากศูนย์
บทที่ 5 การเดินทางของการสร้างวงล้อจากศูนย์
บทที่ 5 การเดินทางของการสร้างวงล้อจากศูนย์
นัตสึคาวะ โซสุเกะ ยืนอยู่ด้านล่างอาคารหอพักพร้อมกับถุงใบใหญ่ในมือ เขาถอนหายใจออกมาด้วยความโล่งอก นี่เป็นเวลาบ่าย 3 โมงแล้ว หลังจากเดินตามแผนที่ในโทรศัพท์มาตลอดทาง ในที่สุดเขาก็มาถึงหอพักเสียที การแบกโน้ตบุ๊กเดินมาด้วยทำให้เขาแทบจะขาดใจตายระหว่างทาง เมื่อมองดูอาคารหอพักที่ดูทันสมัยตรงหน้า เขาก็สังเกตได้ว่ามันหรูหรากว่าหอพักมหาวิทยาลัยในชีวิตก่อนของเขามาก ที่นี่คือ 'หมู่บ้านเริ่มต้น' ที่เขาจะต้องใช้ชีวิตอยู่ไปอีกสามปีต่อจากนี้
เมื่อก้าวเข้าสู่ล็อบบี้หอพักที่ชั้นหนึ่ง เขาเดินไปยังหน้าต่างของผู้จัดการหอพักพร้อมกับอายาโนะโคจิ คิโยทากะ หลังจากผู้จัดการหอพักตรวจสอบข้อมูลนักเรียนเรียบร้อยแล้ว เธอก็ยื่นคีย์การ์ดห้องให้นัตสึคาวะ "ห้อง 403 คู่มือระเบียบการอยู่ในห้องแล้ว อ่านให้ละเอียดด้วยล่ะ"
"403 โชคดีนะที่ไม่ใช่ 404" นัตสึคาวะรับคีย์การ์ดมา มุมปากของเขากระตุกเล็กน้อย "ถ้าเป็น 404 สักวันนายอาจจะหาตัวผมไม่เจอเอาได้นะอายาโนะโคจิ แล้วห้องนายเลขอะไรล่ะ?"
"401"
"งั้นตอนนี้เราก็เป็นเพื่อนบ้านกันแล้ว นายต้องแวะมาหาบ่อยๆ นะ" นัตสึคาวะตบบ่าอายาโนะโคจิ แต่พอยกแขนขึ้นเขาก็เพิ่งตระหนักว่าตัวเองถือของมาตลอดทางจนมือแทบจะไร้ความรู้สึกไปแล้ว ถ้าเขายังถือต่อไปก็คงพอไหวอยู่หรอก แต่พอวางลงแล้วการจะหยิบมันขึ้นมาใหม่กลับไม่ใช่เรื่องง่ายเลย เขาเหลือบมองโน้ตบุ๊กที่หนักอึ้งและข้าวของจิปาถะบนพื้น สลับกับมองมือที่ว่างเปล่าของอายาโนะโคจิ แล้วไอเดียหนึ่งก็ผุดขึ้นในหัว
"อายาโนะโคจิ เพื่อนรักของผม!" เขาเอ่ยด้วยน้ำเสียงจริงใจ "อย่างที่เขาว่ากันว่า 'ลังเลคือพ่ายแพ้ เด็ดขาดคือให้ฟรี'... เอ้ย ไม่ใช่ 'เด็ดขาดคือมิตรภาพ'! ดูร่างกายผมสิ โดนลมพัดแรงหน่อยก็พร้อมจะล้มพับแล้ว นายช่วยสงเคราะห์พี่น้องคนนี้แบกของพวกนี้ขึ้นไปชั้นสี่หน่อยได้ไหม?"
อายาโนะโคจิจ้องมองเขาด้วยความเงียบงันอยู่สองวินาที ดูเหมือนกำลังประมวลผลคำพูดของเขาอยู่ "เรากลายเป็นเพื่อนรักกันตั้งแต่เมื่อไหร่?"
"แน่นอนสิ!" นัตสึคาวะเริ่มพล่ามไร้สาระด้วยใบหน้าจริงจัง "เพื่อนที่ดีน่ะเขามีความสัมพันธ์แบบช่วยเหลือซึ่งกันและกันแบบนี้แหละ วันนี้ช่วยดึงผมขึ้น พรุ่งนี้ผมจะช่วยผลักนายไปข้างหน้า นี่มันคือชีวิตประจำวันระหว่างพี่น้องร่วมสาบานชัดๆ"
บางทีอาจจะเป็นเพราะคำสำคัญบางคำไปกระตุ้นความสนใจ หรือบางทีเขาอาจจะคิดว่าเป็นเพียงน้ำใจเล็กน้อย อายาโนะโคจิจึงหยิบถุงช้อปปิ้งจากซูเปอร์มาร์เก็ตที่หนักที่สุดขึ้นมาเงียบๆ "...ไปกันเถอะ"
ทั้งสองขึ้นลิฟต์ไปยังชั้นสี่ หลังจากรูดการ์ดและผลักประตูห้อง 403 เข้าไป ห้องพักเดี่ยวมาตรฐานที่มีทั้งห้องครัวและห้องน้ำก็ปรากฏแก่สายตา หลังจากนัตสึคาวะวางโน้ตบุ๊กลงบนโต๊ะในห้องนอน เขาก็จัดแจงวางอุปกรณ์อาบน้ำไว้ในห้องน้ำ
"ขอบใจมากอายาโนะโคจิ อะ รับนะ!" นัตสึคาวะโยนเครื่องดื่มที่เขาหยิบมาจากซูเปอร์มาร์เก็ตให้อายาโนะโคจิ
"ไม่เป็นไร ผมขอตัวกลับห้องก่อน" อายาโนะโคจิรับมันไว้ด้วยมือข้างเดียว เขามองดูเครื่องดื่มครู่หนึ่งก่อนจะเปิดประตูและจากไปเงียบๆ
"เอาล่ะ เจ้าจงถอยไปได้ ข้าเองก็เหนื่อยล้าเต็มทีแล้ว" นัตสึคาวะพูดติดตลกพลางปิดประตู ในที่สุดเขาก็ได้อยู่ตามลำพังในห้องเสียที
โลกทั้งใบกลับมาเงียบสงบ นัตสึคาวะเดินไปที่โต๊ะ แกะโน้ตบุ๊กออกมาและเสียบปลั๊กไฟ
"เอาล่ะ ถึงเวลาทดสอบคุณภาพของ 'ชุดของขวัญสำหรับมือใหม่' กันแล้ว" เขาถูมือเข้าด้วยกัน ดวงตาเป็นประกายด้วยแสงแห่งความคลั่งไคล้ในเทคโนโลยี "ถึงแม้ในชีวิตก่อนผมจะเน้นไปที่ระบบฝังตัว และไม่ค่อยคุ้นเคยกับพวกโปรแกรมรวบรวมข้อมูลขนาดใหญ่ แต่หลักการมันก็คล้ายกันนั่นแหละ! เหตุผลที่ผมเลือกสิ่งนี้ก็เพื่อที่ผมจะได้ 'สร้างวงล้อด้วยตัวเอง' ในสภาพแวดล้อมที่ 'ไม่มีอะไรเลย และทุกอย่างต้องทำด้วยมือ' แบบนี้ยังไงล่ะ!"
วินโดวส์ เริ่มทำงาน!
นิ้วของนัตสึคาวะรัวไปบนแป้นพิมพ์ โน้ตบุ๊กเครื่องนี้ติดตั้งวินโดวส์มาให้ล่วงหน้าแล้ว ช่วยให้เขาไม่ต้องวุ่นวายกับการหาแฟลชไดรฟ์มาติดตั้งเอง เขาเริ่มจากการติดตั้งโปรแกรมคลาสสิกอย่าง นอตแพดพลัสพลัส และ ไฟล์ซิลลา
'ไม่มี VS Code งั้นเหรอ? ไม่ใช่เรื่องใหญ่ นอตแพดพลัสพลัส นี่แหละคืออนาคต!'
ถัดมาคือรายการหลัก เขาทำการดาวน์โหลดตัวติดตั้ง ไพธอน 2.7 อย่างชำนาญ
แม้ว่า ไพธอน 3 จะมีให้ออนไลน์แล้ว แต่มันเหมือนเพิ่งจะถูกปล่อยออกมาไม่นาน และระบบนิเวศของมันยังไม่สมบูรณ์เท่าไหร่นัก เขาตัดสินใจใช้เวอร์ชัน 2.7 ต่อไปเพื่อประหยัดเวลาและลดปัญหาที่อาจเกิดขึ้น
ขั้นตอนการติดตั้งดำเนินไปอย่างราบรื่น จากนั้นเขาเริ่มกำหนดค่าไลบรารีที่จำเป็น โชคดีที่ทรัพยากรเครือข่ายภายในของโรงเรียนนั้นค่อนข้างอุดมสมบูรณ์ มีแหล่งมิเรอร์ในตัวสำหรับการติดตั้งผ่าน pip
pip install requests
pip install beautifulsoup4
pip install lxml
หลังจากรันคำสั่งเพียงไม่กี่ครั้ง ไลบรารีหลักที่จำเป็นก็ถูกติดตั้งสำเร็จ
'ต้องขอบคุณแผนกไอทีของโรงเรียนจริงๆ! การยืนบนไหล่ของยักษ์นี่มันสบายจริงๆ ไม่ต้องมานั่งเขียนโปรโตคอล HTTP เองตั้งแต่ต้น'
แต่ในไม่ช้าเขาก็พบกับอุปสรรคแรก เมื่อเขาพยายามติดตั้ง pandas เพื่อใช้ในการวิเคราะห์ข้อมูล หน้าจอคำสั่งก็พ่นข้อผิดพลาดเกี่ยวกับความเข้ากันได้ออกมาเป็นพรวนจนน่าปวดหัว
'นั่นไงล่ะ การปรับแต่งสภาพแวดล้อมของไพธอนบนวินโดวส์มักจะมี "เซอร์ไพรส์" ให้เสมอ ชีวิตก่อนผมโดน Anaconda ตามใจจนเสียคน พอมาตอนนี้ถึงได้รู้ว่าสภาพแวดล้อมแบบดั้งเดิมมันโหดร้ายแค่ไหน'
เขาถอนหายใจและตัดสินใจละทิ้ง pandas ไปทันที
"ไม่มี pandas แล้วจะวิเคราะห์ข้อมูลไม่ได้งั้นเหรอ? นายดูถูกความสามารถในการปรับแต่งด้วยมือของหลินเป่ยเกินไปแล้ว!" เขาถกแขนเสื้อที่ไม่มีอยู่จริงขึ้น "มันก็แค่พจนานุกรม รายการ และการวนซ้ำไม่ใช่หรือไง? เขียนตรรกะทางสถิติเองอาจจะให้ประสิทธิภาพที่ดีกว่าด้วยซ้ำ! (โกหกทั้งนั้น)"
การพัฒนาหลัก เริ่มต้นขึ้น!
เขาพัฒนาไฟล์ .py ขึ้นมาใหม่และเริ่มพิมพ์โค้ด
#อันดับแรก นำเข้าไลบรารีช่วยชีวิต
import requests
from bs4 import BeautifulSoup
import time
import datetime
import re
โชคดีที่เว็บบอร์ดของโรงเรียนสามารถเข้าถึงได้ผ่านหน้าเว็บในคอมพิวเตอร์ ไม่ใช่แค่แอปในมือถือ
"ขั้นแรก ผมต้องจำลองการเข้าสู่ระบบเพื่อเอาคุกกี้มาก่อน..." เขาพึมพำกับตัวเองขณะตรวจสอบโครงสร้างการเข้าสู่ระบบของเว็บบอร์ดโรงเรียน "โครงสร้างฟอร์มนี้ดูย้อนยุคไปหน่อยแฮะ"
ไม่นานนัก เขาก็จัดการส่วนของการส่งคำถามผ่านเครือข่ายเสร็จสิ้น และดึงค่า HTML ของหน้าแรกของเว็บบอร์ดมาได้สำเร็จ
"ต่อไปคือการแยกวิเคราะห์รายการโพสต์และดึงเวลาที่โพสต์ออกมา" เขาขมวดคิ้ว จ้องมองโค้ด HTML ที่หนาแน่น "โครงสร้าง DOM นี้... เขียนได้สะเปะสะปะชะมัด ไม่มีชื่อคลาส CSS ที่เป็นระบบเลยเหรอ? คงต้องพึ่งพา regex กับการระบุตำแหน่งโหนดพ่อแม่ลูกเพื่อผ่านจุดนี้ไปให้ได้"
'BeautifulSoup ไม่ได้ทำได้ทุกอย่างหรอกนะ ถ้าเจอ HTML ที่ไม่ได้มาตรฐานแบบนี้ สุดท้ายก็ต้องใช้กำลังเข้าสู้! มันเหมือนได้รับมีดพับสวิสมา แต่กลับพบว่าส่วนใหญ่ต้องใช้ไม้จิ้มฟันที่ซ่อนอยู่ข้างในมางัดแงะกุญแจแทนนั่นแหละ'
เขาจดจ่ออยู่กับการต่อสู้กับโครงสร้าง HTML อย่างเต็มที่ เวลาค่อยๆ ผ่านไปอย่างเงียบเชียบพร้อมกับเสียงกดแป้นพิมพ์
หลังจากผ่านไปนานเท่าไหร่ไม่ทราบได้ เสียงประท้วงจากท้องก็ดึงเขากลับสู่ความเป็นจริง นอกหน้าต่าง ท้องฟ้ามืดมิดลงแล้ว
"ให้ตายสิ เขียนโค้ดชั่วคราวมันก็สนุกดีอยู่หรอก แต่ถ้าเขียนติดต่อกันนานๆ... มันหิวแฮะ" เขาขยี้ตาที่แห้งผากและตัดสินใจไปจัดการเรื่องมื้อค่ำก่อน
โชคดีที่ในโรงเรียนไม่ได้มีแค่โรงอาหาร นัตสึคาวะพบร้านราเมนที่ดูดีร้านหนึ่งในย่านการค้าและจัดการดับความหิวของเขาจนอิ่มหนำ
หลังมื้อค่ำ นัตสึคาวะตัดสินใจแวะที่ซูเปอร์มาร์เก็ตเพื่อซื้อวัตถุดิบที่เตรียมง่ายๆ ติดไว้ เพราะเขาไม่อยากออกไปกินข้างนอกตลอดเวลา การซื้อของมาเก็บไว้บ้างจึงเป็นการป้องกันไว้ก่อนที่ดี
เขาเลือกซื้อข้าว เส้น บะหมี่ หมูสามชั้น ไข่ และวัตถุดิบอื่นๆ จากนั้นจึงเดินกลับหอพักท่ามกลางลมเย็นยามค่ำคืน
ในช่วงดึก แสงไฟในห้อง 403 ก็เปิดขึ้นอีกครั้ง นัตสึคาวะอาบน้ำอย่างรวดเร็วและกลับเข้าสู่โลกของโค้ด เขาปรับแต่งตรรกะการแยกวิเคราะห์และเขียนฟังก์ชันหลักสำหรับการแปลงสตริงเวลาและสถิติรายชั่วโมงด้วยตัวเอง
ราวๆ ตีหนึ่ง เขาได้ทำการทดสอบขั้นสุดท้าย สคริปต์ทำงานได้สำเร็จ และหน้าจอแสดงผลก็แสดงสถิติการกระจายเวลาของโพสต์ในเว็บบอร์ดในช่วง 24 ชั่วโมงที่ผ่านมาออกมาอย่างชัดเจน
"เสร็จสมบูรณ์!" เขาผ่อนลมหายใจยาว ความรู้สึกสำเร็จช่วยไล่ความเหนื่อยล้าให้จางหายไป "ถึงแม้มันจะเป็นแค่รุ่นต้นแบบ แต่ระบบหลักก็เสร็จสมบูรณ์แล้ว! ใช้ Requests สำหรับดึงข้อมูล ใช้ BeautifulSoup สำหรับแยกวิเคราะห์ และจัดการข้อมูลด้วยตัวเอง... บริการครบจบในที่เดียว!"
ความรู้สึกนี้เหมือนกับการประกอบเครื่องจักรที่ใช้งานได้จริงด้วยเครื่องมือที่จำกัด โดยมีฟันเฟืองทุกตัวที่ผ่านการปรับแต่งด้วยมือของตัวเอง
เขาบันทึกโค้ดและปิดโน้ตบุ๊ก นอกหน้าต่าง สถานศึกษาทั้งแห่งตกอยู่ในความเงียบงัน
"ดูเหมือนว่าบางสิ่งมันจะสลักอยู่ในดีเอ็นเอจริงๆ นั่นแหละ" นัตสึคาวะหัวเราะเบาๆ พลางส่ายหัวขณะปิดไฟในห้อง "อย่างเช่นการใช้เวลาทั้งคืนเพื่อแก้ปัญหาการพึ่งพาไลบรารีและตามแก้บั๊ก"
ห้องพักตกอยู่ในความมืดมิดอย่างเงียบสงบ แต่ชีวิตในโรงเรียนของเขาที่มาพร้อมกับ 'เครื่องมือรวบรวมข้อมูล' ชิ้นแรกที่สร้างด้วยน้ำพักน้ำแรง ก็ได้เริ่มต้นขึ้นอย่างเงียบเชียบ แม้ว่าเขาจะรู้ซึ้งถึงธาตุแท้ภายใต้เปลือกนอกอันงดงามของโรงเรียนแห่งนี้ แต่เขาก็ไม่สามารถพูดออกมาตรงๆ ได้ เขาต้องการหลักฐานที่จับต้องได้เพื่อสนับสนุน 'การคาดคะเน' ของเขา เขาต้องการทำให้ผู้ซื้อเชื่อมั่นว่าข้อมูลที่เขามอบให้นั้นคุ้มค่ากับราคา และโปรแกรมรวบรวมข้อมูลพื้นฐานตัวนี้จะกลายเป็น 'ดวงตา' สำหรับการ 'รู้อนาคต' ของเขาในรั้วโรงเรียนพิเศษแห่งนี้