✦เรื่องเล่าจากนักพัฒนา

ผมเขียนแอปทั้งตัวจาก iPad นี่คือวิธีทำ

Xcode, Interface Builder, iOS Simulator และโปรเจกต์ Swift เต็มรูปแบบ 47 ไฟล์ ทั้งหมดทำงานผ่าน iPad Pro ของผมในร้านกาแฟ ไม่มีการประนีประนอม ไม่มีวิธีเลี่ยง นี่คือเรื่องราวทั้งหมด

ปัญหาของการ "เขียนโค้ดบน iPad"

ทุกปี Apple ทำให้ iPad แรงขึ้น ชิป M-series จอ Liquid Retina XDR Magic Keyboard และทุกปีนักพัฒนาก็ถามคำถามเดิม: เขียนโค้ดบนเครื่องนี้ได้จริงไหม?

คำตอบคือ "ก็พอได้" มาตลอด คุณใช้ VS Code ในเบราว์เซอร์ผ่าน GitHub Codespaces ได้ SSH เข้าเซิร์ฟเวอร์ด้วย Blink Shell ได้ ใช้แอปอย่าง Swift Playgrounds ทดลองเบื้องต้นได้ แต่พอต้องใช้เครื่องมือตัวจริง — Xcode, Android Studio, Visual Studio, เทอร์มินัลที่มี dotfiles ของคุณ — ก็ติดทันที

ข้อจำกัดเหล่านี้ไม่ใช่เรื่องไร้เหตุผล Apple ไม่อนุญาตให้ IDE เต็มรูปแบบทำงานบน iPadOS Xcode จะไม่มีวันทำงานแบบเนทีฟบน iPad (อย่างน้อยก็ไม่ใช่รุ่นเต็ม) และตัวแก้ไขบนเบราว์เซอร์ ไม่ว่าจะดีแค่ไหน ก็ถูกจำกัดด้วยสิ่งที่แท็บเบราว์เซอร์ทำได้

ผมเลยลองอีกวิธี แทนที่จะเอา IDE มาไว้บน iPad ผมเอา iPad ไปหา IDE

การตั้งค่า: Remio + Mac mini + iPad Pro

การตั้งค่าของผมง่ายจนน่าอายเลย:

ผมเปิด Remio บน iPad ใส่ PIN ที่แสดงบน Mac mini แล้วภายในสองวินาทีก็เห็นเดสก์ท็อป Mac ความละเอียดเต็ม สีครบ พร้อมสภาพแวดล้อมการพัฒนาทั้งหมดอยู่ตรงที่ผมทิ้งไว้

ไม่ต้องตั้งค่า VPN ไม่ต้องดูแล SSH tunnel ไม่ต้องสร้างบัญชี มีแค่ PIN และการเชื่อมต่อ

ทำไมวิธีนี้ถึงดีกว่าการเขียนโค้ดบนเบราว์เซอร์

ผมลองทางเลือกอื่นมาหมดแล้ว หมดจริง ๆ นี่คือเหตุผลที่ Remio กับ Mac ตัวจริงชนะทุกโซลูชันบนเบราว์เซอร์ที่ผมเคยลอง

GitHub Codespaces / VS Code Web

Codespaces น่าประทับใจจริง ๆ สำหรับการพัฒนาเว็บ แต่มันรันในคอนเทนเนอร์ Linux ไม่มี Xcode ไม่มี Interface Builder ไม่มี iOS Simulator ไม่มีตัวแก้ไขโมเดล Core Data ถ้าคุณสร้างแอป iOS หรือ macOS มันใช้ไม่ได้เลย และแม้แต่งานเว็บ คุณก็ถูกจำกัดด้วยแซนด์บ็อกซ์ของเบราว์เซอร์ — เข้าถึงไฟล์ในเครื่องไม่ได้ ไม่มีเทอร์มินัลเนทีฟ รันโปรเซสเบื้องหลังตามใจไม่ได้

SSH + ตัวแก้ไขในเทอร์มินัล

ผมรัก Vim จริง ๆ แต่การสร้างแอป SwiftUI 47 ไฟล์ พร้อม xib, asset catalog และโมเดล Core Data ในตัวแก้ไขเทอร์มินัลไม่ใช่ความเร็ว แต่มันคือการทรมานตัวเอง ฟีเจอร์ของ IDE อย่างการเติมโค้ด การรีแฟกเตอร์ พรีวิวสด และดีบักเกอร์แบบภาพ มีอยู่ด้วยเหตุผล

เดสก์ท็อปบนคลาวด์ (AWS WorkSpaces, Shadow PC)

คุณเช่า Mac บนคลาวด์ได้ในราว $50-100 ต่อเดือน แต่คุณมี Mac อยู่แล้ว ทำไมต้องจ่ายเช่าเครื่องที่แย่กว่า? กับ Remio คุณใช้เครื่องจริงของคุณ — ไฟล์จริง ชุดเครื่องมือจริง สภาพแวดล้อมจริง และความหน่วงก็ดีกว่า เพราะ Mac ของคุณอยู่ในเครือข่ายที่บ้าน ไม่ใช่ในดาต้าเซ็นเตอร์ที่เวอร์จิเนีย

หนึ่งวันของงานจริง

ขอพาไปดูว่าวันทำงานจริงเป็นอย่างไร — วันอังคารหนึ่งที่คาเฟ่

08:30 น.นั่งลง เชื่อมต่อ ทำงานต่อ

ผมนั่งลงที่คาเฟ่พร้อม iPad และ Magic Keyboard เปิด Remio เชื่อมต่อ Mac mini ที่บ้าน Xcode เปิดโปรเจกต์ของเมื่อคืนอยู่แล้ว — ทุกเบรกพอยต์ ทุกแท็บ ทุกการเปลี่ยนแปลงที่ยังไม่คอมมิตอยู่ตรงที่ผมทิ้งไว้

08:35 น.เขียน SwiftUI

ผมเขียนโค้ด SwiftUI การเติมโค้ดทำงานสมบูรณ์เพราะเป็นXcode ตัวจริงบน Mac ตัวจริงที่มีคอมไพเลอร์ Swift ตัวจริง ทุกการกดแป้นรู้สึกทันที — การจัดการอินพุตแบบเนทีฟของ Remio ทำให้ไม่มีความหน่วงที่รับรู้ได้ระหว่างกดแป้นกับเห็นตัวอักษรปรากฏ

ทำไมถึงรู้สึกเหมือนทำงานในเครื่อง

อินพุตเนทีฟส่งตรงถึงโฮสต์ — ประมวลผลราว 8 มิลลิวินาทีบน LAN วัดภายใน ส่วนที่เหลือคือจังหวะรีเฟรช 60 Hz ของจอคุณเอง

09:15 น.รันบน iOS Simulator

ผมต้องทดสอบบน iOS Simulator กด ⌘R Simulator เปิดบน Mac แล้วผมเห็นบนหน้าจอ iPad ผมโต้ตอบกับ iPhone จำลองด้วยท่าทางสัมผัสบน iPad ได้ ซึ่งเป็นธรรมชาติอย่างน่าแปลกใจ แตะ ปัด เลื่อน ใช้งานได้เลย

10:00 น.งาน UI ใน Interface Builder

ถึงเวลาทำงาน UI ผมเปิด Interface Builder ลากคอนสเตรนต์ ปรับเลย์เอาต์ พรีวิวบนหน้าจอหลายขนาด นี่คืองานแบบที่ทำไม่ได้เลยในตัวแก้ไขบนเบราว์เซอร์ เครื่องมือภาพเหล่านี้ทดแทนไม่ได้

11:30 น.ดีบักปัญหา concurrency

ผมกำลังดีบักปัญหา concurrency ที่ยุ่งยาก ตั้งเบรกพอยต์ ไล่โค้ดทีละขั้น ตรวจตัวแปรในดีบักเกอร์ LLDB ทำงานได้สมบูรณ์เพราะผมใช้ของจริง ไม่ใช่ของเลียนแบบบนเว็บ

13:00 น.สลับไปทำ Android

หลังมื้อเที่ยง ผมสลับไปโปรเจกต์ Android ปิด Xcode แล้วเปิด Android Studio การเชื่อมต่อและการตั้งค่าเดิม Remio ไม่สนว่าคุณรันแอปอะไร — มันสตรีมทั้งเดสก์ท็อป

19:00 น.สรุปของวัน

สิ้นวัน ผมเขียน Swift ไปราว 400 บรรทัด แก้บั๊กสามตัว ส่งบิลด์ขึ้น TestFlight และรีวิว pull request สองรายการ ทั้งหมดจาก iPad ที่คาเฟ่ ไม่ต้องตั้งค่าพิเศษหรือประนีประนอมอะไรเลย

รายละเอียดที่ทำให้มันใช้งานได้

คีย์ลัด

นี่คือจุดที่แอปรีโมทเดสก์ท็อปส่วนใหญ่ล้มเหลว Remio ส่งต่อคีย์ลัดทุกตัวได้ถูกต้อง ⌘B เพื่อบิลด์ ⌘R เพื่อรัน ⌘⇧O เพื่อเปิดอย่างรวดเร็ว ⌃⌘Space สำหรับอีโมจิ (ใช่ แม้แต่ตัวนั้น) แป้นตัวปรับแต่งของ Magic Keyboard แมปแบบ 1:1 กับแป้นตัวปรับแต่งของ Mac ไม่มีชั้นแปลง ไม่มีความสับสนจากการแมปแป้นใหม่

การแสดงผลข้อความ

โค้ดคือข้อความตัวเล็ก และมีเยอะ แอปรีโมทเดสก์ท็อปที่ทำให้ข้อความเบลอหรือมีร่องรอยบกพร่องใช้พัฒนาไม่ได้เลย การเข้ารหัส H.265 ที่ปรับค่าสำหรับข้อความของ Remio ทำให้โค้ดคมกริบ สีไฮไลต์ไวยากรณ์ถูกต้อง น้ำหนักตัวอักษรถูกต้อง ที่ความละเอียดของ iPad Pro ดูเหมือน Xcode รันอยู่ในเครื่องจริง ๆ

การสลับระหว่างหน้าจอ

บน Mac mini ผมมีจอที่สองแบบเสมือน Remio ให้ผมสลับหน้าจอที่ดูอยู่ได้ในแตะเดียว — โค้ดอยู่จอหนึ่ง Simulator อีกจอหนึ่ง บน iPad ผมปัดสลับระหว่างกัน หรือใช้ Stage Manager จัดพื้นที่ทำงาน

คลิปบอร์ดและการถ่ายโอนไฟล์

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

เคล็ดลับการทำงานของผม

หลังเขียนโค้ดแบบนี้มาหกเดือน ผมมีนิสัยบางอย่างที่ทำให้ประสบการณ์ดียิ่งขึ้น

  1. ต่อ Mac ด้วยสาย Mac mini ของผมเสียบเข้าเราเตอร์ด้วย Ethernet ช่วยตัดตัวแปรใหญ่สุดของคุณภาพสตรีม
  2. ใช้ Wi-Fi ที่เสถียรสำหรับ iPad Wi-Fi 5GHz ที่คาเฟ่มักใช้ได้ ถ้าสัญญาณไม่นิ่ง คุณภาพแบบปรับอัตโนมัติของ Remio จะปรับให้เอง — แต่การเชื่อมต่อที่เสถียรหมายถึงข้อความคมชัดสม่ำเสมอ
  3. ตั้งขนาดฟอนต์ใน Xcode เป็น 13-14pt อ่านสบายบนจอ iPad Pro ผ่าน Remio โดยไม่ต้องซูม
  4. ใช้คีย์ลัดกับทุกอย่าง ยิ่งใช้สัมผัส/เมาส์กับงาน IDE น้อย คุณก็ยิ่งเร็ว คำแนะนำนี้ดีสำหรับการพัฒนาในเครื่องด้วย
  5. เปิด "ลดการเคลื่อนไหว" ในการตั้งค่า iPadOS ช่วยลดภาระแอนิเมชันฝั่ง iPad เล็กน้อย ทำให้ Remio มีกำลังเหลือเพิ่มอีกนิด

สิ่งที่ผมทำไม่ได้ (พูดตามตรง)

เพื่อความซื่อสัตย์เต็มที่ นี่คือข้อจำกัด

ข้อแลกเปลี่ยนเหล่านั้นมีอยู่จริง แต่สำหรับผม มันถูกชดเชยมากมายด้วยการพกสภาพแวดล้อมการพัฒนาทั้งหมดไว้ในแท็บเล็ตหนัก 700 กรัม

ความฝันของนักพัฒนา iPad เป็นจริงแล้ว

หลายปีที่ผมรอให้ Apple นำ Xcode มาไว้บน iPad แล้วก็ตระหนักว่ามันอาจไม่เกิดขึ้นเลย — อย่างน้อยก็ไม่ใช่รุ่นเต็มระดับมืออาชีพ ผมจึงเลิกรอและหาคำตอบที่ดีกว่า

Remio ไม่ได้เอา Xcode มาใส่ใน iPad แต่เอาMac ทั้งเครื่องมาไว้บน iPad ทุกแอป ทุกเครื่องมือ ทุกไฟล์ ด้วยคุณภาพจอและการตอบสนองของอินพุตที่ทำให้รู้สึกเหมือน Mac อยู่ตรงหน้า — เพราะในทุกแง่ที่สำคัญ มันก็เป็นอย่างนั้น

การตั้งค่าที่ดีที่สุดไม่ใช่ตัวที่แรงที่สุด แต่คือตัวที่คุณมีติดตัวจริง ๆ

iPad Pro กับ Remio คือเครื่องพัฒนาที่ดีที่สุดที่ผมเคยมี — ไม่ใช่เพราะสเปก แต่เพราะมันไปได้ทุกที่ที่ผมไป และสภาพแวดล้อมการพัฒนาเต็มรูปแบบของผมไปด้วย

ถ้าคุณเป็นนักพัฒนาที่มี Mac และ iPad ลอง Remio ดู ตั้งค่าใช้เวลาสองนาที ไม่ต้องมีบัญชี และถ้าสนใจด้านเกม ดูคู่มือของเราเรื่องเล่นเกมพีซีบน iPad — เทคโนโลยีความหน่วงต่ำเดียวกันที่ทำให้การเขียนโค้ดใช้งานได้ ก็ทำให้การเล่นเกมยอดเยี่ยมด้วย

ไอคอนแอป Remio

ลองใช้ Remio ด้วยตัวคุณเอง

พก Mac ทั้งเครื่องไว้ใน iPad ตั้งค่าใช้เวลาสองนาที ไม่ต้องมีบัญชี และการพิมพ์รู้สึกเหมือนทำงานในเครื่องด้วยอินพุตเนทีฟ

ใช้งานฟรีไม่ต้องมีบัญชีจับคู่ใน 30 วินาที