ข้ามไปเนื้อหาหลัก

เจาะลึก Yarunoka: เมื่อตารางเวลานั้นคือ กฎ ไม่ใช่แค่รายการเวลา

นักพัฒนาเปิดตัว Yarunoka รูปแบบ JSON DSL ภาษาอิสระที่ออกแบบมาเพื่อเก็บรักษาความหมายและกฎเกณฑ์ของตารางเวลา แทนการใช้แค่ชุดข้อมูลเวลาธรรมดา

เรียบเรียงโดย AI
Inewgen
06 Aug 2026ที่มา: Dev.to3 นาทีอ่าน (0 ครั้ง)
แชร์
เจาะลึก Yarunoka: เมื่อตารางเวลานั้นคือ กฎ ไม่ใช่แค่รายการเวลา

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

ขนาดตัวอักษร
  • Yarunoka เป็นข้อกำหนดที่เป็นอิสระจากภาษาโปรแกรม สำหรับจัดการ JSON DSL ที่เรียกว่า Yrnk
  • แนวคิดหลักคือการเก็บกฎเกณฑ์และบริบทของตารางเวลา แทนที่จะเป็นเพียงรายการวันที่หรือ Timestamp
  • การใช้งานชุดแรกพัฒนาด้วย PHP 8.4 และรองรับการทำงานร่วมกับไลบรารี Yasumi เพื่อจัดการวันหยุด
  • ออกแบบมาเพื่อให้ทั้งมนุษย์และ AI เชิงสร้างสรรค์สามารถทำความเข้าใจตารางเวลาได้อย่างง่ายดาย

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

ด้วยเหตุนี้ นักพัฒนาจึงได้สร้าง Yarunoka ขึ้นมา ซึ่งเป็นข้อกำหนดที่ไม่ขึ้นกับภาษาโปรแกรมใดๆ สำหรับ JSON DSL ขนาดเล็กที่เรียกว่า Yrnk โดยชื่อนี้มาจากประโยคคำถามในภาษาญี่ปุ่นว่า "やるのか?" (yaru no ka?) ที่สื่อความหมายว่า "จะทำไหม?" ซึ่งสอดคล้องกับหน้าที่ของตัวประเมินผลในระบบ

ตัวอย่างเช่นโครงสร้างข้อมูลสำหรับโอนเงินเดือน:

{
  "label": "Payday transfer",
  "description": "At 10:00 on the 25th of every month. If the 25th is not a business day, move it to the previous business day.",
  "days": [25],
  "shift": ["prev", "or_same", "business_day"],
  "times": ["10:00"]
}

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

developer workspace computer code screen

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง

การแยกตรรกะของตารางเวลาออกจากระบบปฏิบัติการงาน (Job Execution System) ถือเป็นสถาปัตยกรรมที่มีประโยชน์มาก เพราะช่วยให้เอกสารตารางเวลาชุดเดียวกันสามารถถูกนำไปใช้แชร์ข้ามระบบแอปพลิเคชันที่แตกต่างกันได้อย่างอิสระ โดยที่ตัวกำหนดตารางเวลาไม่ต้องไปกังวลเรื่องคิวงาน ระบบลองทำซ้ำ หรือสถานะการทำงานครั้งล่าสุด

ไม่อยากพลาดข่าวใหม่?

สมัครรับสรุปข่าวสารใหม่ทางอีเมล ไม่บ่อยจนรำคาญ

โฆษณา

ผู้สร้างระบุว่าเขารู้สึกขัดใจเสมอมากับเส้นแบ่งระหว่างปฏิทินและรายการสิ่งที่ต้องทำ (To-do list) ปฏิทินบอกว่าเหตุการณ์จะเกิดขึ้นเมื่อไหร่ ส่วน To-do list บอกว่าต้องทำอะไร แต่ในมุมมองของเขา ทั้งสองอย่างคือแผนงาน และเมื่อต้องพัฒนาเอเจนต์ AI ส่วนตัวที่ต้องจดจำกิจกรรมที่เกิดขึ้นซ้ำๆ เขาจึงต้องการสิ่งที่เป็นมากกว่าลิสต์วันที่สร้างขึ้นมาลอยๆ แต่ต้องการโครงสร้างที่เก็บรักษา "กฎ" ที่อยู่เบื้องหลังวันเหล่านั้น

เอกสาร Yrnk จะถูกสร้างขึ้นจากแนวคิดหลักสามประการ โดยเวอร์ชัน PHP สามารถบูรณาการเข้ากับ Yasumi เพื่อดึงข้อมูลวันหยุดนักขัตฤกษ์ได้ เช่นตัวอย่างการเก็บขยะ:

{
  "label": "Recycling collection",
  "description": "At 07:30 on the first and third Friday of each month, except on public holidays.",
  "days": [["1st", "fri"], ["3rd", "fri"]],
  "if": ["not", "holiday"],
  "times": ["07:30"]
}

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

สำหรับการใช้งานจริงขณะนี้ มีแพ็กเกจแรกคือ yarunoka/core ซึ่งใช้งานร่วมกับ PHP 8.4 ขึ้นไป และไม่มีการพึ่งพาไลบรารีรันไทม์ภายนอกอื่นๆ ทั้งนี้ ฟีเจอร์ในเวอร์ชัน 1.0 ยังไม่ครอบคลุมนิพจน์นามธรรมบางประเภท เช่น "ช่วงครึ่งแรกของเดือนมีนาคม" หรือ "ช่วงต้นเดือน" แต่มีชุดทดสอบความสอดคล้อง (Conformance Tests) เตรียมไว้เพื่อให้การนำไปพัฒนาในภาษาโปรแกรมอื่นได้ผลลัพธ์ที่ตรงกัน

ที่มา: Dev.to

ความคิดเห็น

แสดงความคิดเห็น
0/2000

พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้