Tauri ทำแอป desktop และมือถือจากหน้าเว็บ ไฟล์เล็กจนต่ำกว่า 600KB ได้
Tauri คือเฟรมเวิร์กที่ให้เขียนแอป desktop และมือถือด้วยเทคโนโลยีเว็บที่ถนัดอยู่แล้ว โดยใช้ webview ของระบบแทนการแบก Chromium ทั้งก้อนแบบ Electron ผลคือไฟล์เล็กลงมากจนเหลือต่ำกว่า 600KB ได้ และออกได้หลายแพลตฟอร์มจากโค้ดชุดเดียว บทความนี้พาเริ่มจากศูนย์

Tauri คือเฟรมเวิร์กสำหรับทำแอป desktop และมือถือ โดยให้เขียนหน้าจอด้วยเทคโนโลยีเว็บที่คนสายเว็บถนัดอยู่แล้ว ทั้ง HTML, CSS และ JavaScript จุดที่ทำให้มันต่างจากแอปเว็บแบบเดิมคือ Tauri ไม่ได้แพ็คเอนจินเบราว์เซอร์ติดไปกับแอป แต่ไปหยิบ webview ที่ติดมากับระบบปฏิบัติการของเครื่องนั้นมาแสดงผลให้แทน
ผลที่ตามมาเห็นชัดที่สุดคือขนาดไฟล์ แอป Tauri แบบขั้นต่ำมีขนาดต่ำกว่า 600KB ได้ ส่วนหลังบ้านเขียนด้วย Rust ภาษาที่ขึ้นชื่อเรื่องความเร็วและความปลอดภัยของหน่วยความจำ ถ้าคุณเคยทำเว็บเป็นแต่อยากได้แอป desktop หรือมือถือจริงๆ สักตัว หรือกำลังเบื่อแอปที่กินแรมเครื่องไปเรื่อยๆ บทความนี้จะพาดูตั้งแต่ Tauri คืออะไรไปจนถึงการเริ่มโปรเจกต์แรก โดยไม่ต้องมีพื้นฐานมาก่อน
เล็กกว่าเพราะไม่ต้องแบกเบราว์เซอร์ไปด้วย

แอปสายเว็บแบบ Electron ที่เราคุ้นกันทำงานด้วยวิธีตรงไปตรงมา คือฝังเบราว์เซอร์ Chromium ทั้งก้อนเข้าไปในแอปทุกตัว เพื่อให้มั่นใจว่าหน้าจอจะแสดงผลเหมือนกันทุกเครื่อง ข้อดีคือควบคุมง่าย แต่สิ่งที่ต้องแลกมาคือทุกแอปต้องแบกเอนจินเบราว์เซอร์ขนาดใหญ่ติดตัวไปด้วยเสมอ ไฟล์จึงบวมและกินทรัพยากรเครื่องมากกว่าที่ควร
Tauri เลือกอีกทาง แทนที่จะแพ็คเบราว์เซอร์ไปเอง มันใช้ webview ที่ติดมากับระบบปฏิบัติการอยู่แล้ว บน Windows, macOS และ Linux ต่างก็มี webview ของตัวเองให้หยิบใช้ได้ ผลคือแอปไม่ต้องแบกเอนจินก้อนใหญ่ขนาดนั้น เหลือเพียงโค้ดที่เราเขียนเองกับส่วนเล็กๆ ของ Tauri ที่คอยเชื่อมเข้ากับ webview ของระบบ ขนาดไฟล์จึงลดลงได้มาก จนแอปขั้นต่ำมีขนาดต่ำกว่า 600KB ได้ ตัวเลขพวกนี้มาจากเอกสารทางการของ Tauri เอง
หลังบ้านเป็น Rust แต่ไม่ต้องเก่ง Rust
หลังบ้านของ Tauri เขียนด้วย Rust ซึ่งฟังดูน่ากลัวสำหรับคนสายเว็บ แต่จุดที่น่าสนใจคือเราได้ประโยชน์ของ Rust มาแม้จะยังไม่เชี่ยวภาษานี้ เพราะตัวเฟรมเวิร์กวางโครงมาให้แล้ว เราจึงได้โค้ดที่จัดการหน่วยความจำอย่างปลอดภัยและเสถียรกว่ามาให้โดยอัตโนมัติ ความผิดพลาดประเภทที่ทำให้แอปแครชหรือเปิดช่องโหว่จะตรวจพบตั้งแต่ตอนคอมไพล์ ไม่ต้องไปเจอตอนผู้ใช้รันจริง
การเชื่อมระหว่างหน้าเว็บกับหลังบ้านก็ไม่ได้ยุ่งยาก ฝั่ง JavaScript เรียกฟังก์ชันที่เขียนไว้ฝั่ง Rust ผ่านคำสั่ง invoke ส่วนใครที่ทำแอปมือถือและอยากลงไปแตะโค้ดเนทีฟมากขึ้น ก็เขียนหลังบ้านด้วย Swift หรือ Kotlin เพิ่มได้ผ่านระบบ Tauri Plugins
อีกเรื่องที่ช่วยให้วางใจได้คือเรื่องความปลอดภัย เพราะ Tauri ตรวจสอบความปลอดภัยทุกครั้งที่ออกเวอร์ชันใหญ่และเวอร์ชันย่อย และรายงานผลตรวจสอบของเวอร์ชัน 2.0 ก็เปิดให้คนทั่วไปอ่านได้ ไม่ใช่แค่คำโฆษณาลอยๆ
เขียนทีเดียว ออกได้ทั้ง desktop และมือถือ
จุดขายที่ทำให้หลายคนหันมามองคือการรองรับหลายแพลตฟอร์ม Tauri สร้างแอปสำหรับ desktop ได้ครบทุกแพลตฟอร์มหลัก และในเวอร์ชัน 2 ก็ขยายไปถึงมือถือด้วย ทั้งหมดนี้มาจากโค้ดชุดเดียว ไม่ต้องแยกเขียนทีละระบบ
ที่เป็นเช่นนี้เพราะฝั่งหน้าจอไม่ผูกกับเฟรมเวิร์กตัวใดตัวหนึ่ง Tauri รองรับเฟรมเวิร์กฝั่ง frontend อะไรก็ได้ที่คอมไพล์ออกมาเป็น HTML, JavaScript และ CSS ฉะนั้นถ้าทีมถนัด React, Vue, Svelte หรือเขียนเว็บล้วนๆ อยู่แล้ว ก็เอาของเดิมมาต่อยอดเป็นแอปได้เลย ไม่ต้องเริ่มเรียนของใหม่ทั้งหมด
ข้างในมี TAO กับ WRY ทำงานอยู่
ถ้าอยากรู้ว่าเบื้องหลังที่ทำให้ Tauri ใช้ webview ของระบบได้จริงคืออะไร คำตอบคือไลบรารีสองตัวที่ Tauri ทำขึ้นเอง
TAO รับหน้าที่สร้างและจัดการหน้าต่างของแอป ส่วน WRY รับหน้าที่เชื่อมกับ webview ของแต่ละระบบเพื่อแสดงหน้าจอออกมา ปกติเราไม่ต้องแตะมันตรงๆ เพราะ Tauri ห่อให้ใช้ง่ายอยู่แล้ว แต่ทั้งสองตัวเป็นไลบรารีโอเพนซอร์ส ใครที่ต้องการปรับแต่งระบบให้ลึกกว่าที่ Tauri เปิดให้ ก็หยิบสองตัวนี้ไปใช้แยกเองได้
เริ่มโปรเจกต์แรกจากศูนย์

ข่าวดีของคนที่อยากลองคือจุดเริ่มไม่ได้ซับซ้อน ลำดับแรกสุดมีอยู่สามขั้น
ขั้นแรก ติดตั้งของที่ต้องมีก่อนตามระบบปฏิบัติการของคุณ หลักๆ คือ Rust และเครื่องมือพื้นฐานของระบบ ซึ่งหน้าเอกสารทางการไล่ให้ครบเป็นข้อๆ ตามแต่ละ OS อยู่แล้ว
ขั้นที่สอง สร้างโครงโปรเจกต์ด้วย create-tauri-app ตัวช่วยนี้จะถามว่าอยากใช้เฟรมเวิร์กฝั่งหน้าจอตัวไหน แล้ววางโครงให้พร้อมเริ่ม บรรทัดที่พิมพ์ได้เลยคือ
npm create tauri-app@latestขั้นที่สาม เขียนหน้าจอด้วยเฟรมเวิร์กที่คุณเลือกไว้เหมือนทำเว็บปกติ เมื่อถึงตอนที่อยากให้หน้าเว็บสั่งงานหลังบ้าน ก็เรียกฟังก์ชันฝั่ง Rust ผ่าน invoke เท่านี้ก็ได้แอปตัวแรกที่รันบนเครื่องจริงแล้ว
ของที่ต้องชั่งใจก่อนลงมือ
Tauri มีข้อแลกเปลี่ยนที่ควรรู้ก่อนตัดสินใจ เพราะมันใช้ webview ของแต่ละระบบ การแสดงผลจึงอาจต่างกันเล็กน้อยในแต่ละ OS ไม่ได้คุมเป๊ะเท่าการแพ็คเบราว์เซอร์ตัวเดียวกันไปทุกเครื่อง งานที่ต้องการหน้าตาเหมือนกันเป๊ะทุกพิกเซลจึงต้องทดสอบหลายระบบมากขึ้น
อีกข้อคือหากงานฝั่งหลังบ้านเริ่มซับซ้อน สุดท้ายก็ต้องลงมือเขียน Rust จริงจัง ส่วนการรองรับมือถือเพิ่งมาเต็มตัวในเวอร์ชัน 2 จึงยังใหม่กว่าฝั่ง desktop ที่อยู่มานานกว่า
ล่าสุด Tauri เพิ่งปล่อย tauri-cli เวอร์ชัน 2.11.4 ขึ้น crates.io เป็นรีลีสย่อยที่เน้นอัปเดตไลบรารีเบื้องหลังและตรวจความปลอดภัย ไม่ได้มีฟีเจอร์ใหญ่เพิ่มเข้ามา แต่ก็เป็นสัญญาณว่าโปรเจกต์ยังเดินหน้าและมีคนดูแลอย่างสม่ำเสมอ
สิ่งที่คนสายเว็บเคยขาดไม่ใช่ทักษะการทำหน้าจอ เพราะทักษะนั้นมีอยู่แล้ว แต่เป็นวิธีเปลี่ยนหน้าจอเว็บที่เขียนไว้ให้กลายเป็นแอปจริง โดยไม่ต้องแบกเบราว์เซอร์ทั้งตัวไปด้วย และนั่นคือจุดที่ Tauri เข้ามาช่วยเติมเต็มได้พอดี
ที่มา:
- บทความ What is Tauri? จาก Tauri
- รีลีส Release tauri-cli v2.11.4 · tauri-apps/tauri จาก Tauri



