Câu chuyện lập trình viên

Tôi đã code trọn một app từ iPad. Đây là cách làm.

Xcode. Interface Builder. iOS Simulator. Một dự án Swift đầy đủ với 47 tệp. Tất cả chạy qua chiếc iPad Pro của tôi tại một quán cà phê. Không đánh đổi. Không mẹo lách. Đây là toàn bộ câu chuyện.

Vấn đề của việc "code trên iPad"

Mỗi năm, Apple lại làm iPad mạnh mẽ hơn. Chip dòng M. Màn hình Liquid Retina XDR. Magic Keyboard. Và mỗi năm, các lập trình viên lại đặt cùng một câu hỏi: liệu tôi có thể thực sự code trên thiết bị này không?

Câu trả lời luôn là "tạm được". Bạn có thể dùng VS Code trong trình duyệt qua GitHub Codespaces. Bạn có thể SSH vào một server bằng Blink Shell. Bạn có thể dùng các ứng dụng như Swift Playgrounds cho những thử nghiệm cơ bản. Nhưng ngay khi bạn cần đến những công cụ thật sự — Xcode, Android Studio, Visual Studio, một terminal đúng nghĩa với dotfiles của bạn — bạn lại bế tắc.

Đây không phải những giới hạn tuỳ tiện. Apple không cho phép các IDE đầy đủ chạy trên iPadOS. Xcode sẽ không bao giờ chạy native trên iPad (ít nhất là bản đầy đủ). Và các trình soạn thảo chạy trên trình duyệt, dù có tốt đến đâu, về bản chất vẫn bị giới hạn bởi những gì một tab trình duyệt có thể làm.

Vì vậy tôi thử một hướng khác. Thay vì mang IDE đến iPad, tôi mang iPad đến với IDE.

Cấu hình: Remio + Mac mini + iPad Pro

Cấu hình của tôi đơn giản đến mức gần như đáng ngượng:

Tôi mở Remio trên iPad, nhập mã PIN hiển thị trên Mac mini, và chỉ trong hai giây tôi đã nhìn thấy màn hình desktop của Mac. Đầy đủ độ phân giải. Đầy đủ màu sắc. Với toàn bộ môi trường phát triển y nguyên như lúc tôi rời đi.

Không phải cấu hình VPN. Không phải duy trì SSH tunnel. Không phải tạo tài khoản. Chỉ một mã PIN và một kết nối.

Vì sao cách này tốt hơn code trên trình duyệt

Tôi đã dùng qua tất cả các giải pháp thay thế. Thật đấy, tất cả luôn. Đây là lý do Remio cùng một chiếc Mac thật đánh bại mọi giải pháp chạy trên trình duyệt mà tôi từng thử.

GitHub Codespaces / VS Code Web

Codespaces thực sự ấn tượng khi làm web. Nhưng nó chạy trong một container Linux. Không có Xcode. Không có Interface Builder. Không có iOS Simulator. Không có trình chỉnh sửa model Core Data. Nếu bạn đang xây ứng dụng iOS hay macOS, đơn giản là nó không phải một lựa chọn. Và ngay cả với phát triển web, bạn vẫn bị giới hạn bởi cơ chế sandbox của trình duyệt — không truy cập tệp cục bộ, không terminal native, không thể chạy các tiến trình nền tuỳ ý.

SSH + trình soạn thảo trong terminal

Tôi yêu Vim. Thật lòng đấy. Nhưng xây một ứng dụng SwiftUI với 47 tệp, các xib, asset catalog và một model Core Data trong trình soạn thảo terminal thì không phải là năng suất — đó là hành xác. Những tính năng của IDE như gợi ý mã, tái cấu trúc (refactoring), xem trước trực tiếp và trình gỡ lỗi trực quan tồn tại là có lý do.

Máy tính đám mây (AWS WorkSpaces, Shadow PC)

Bạn có thể thuê một chiếc Mac trên đám mây với giá khoảng $50-100/tháng. Nhưng bạn đã sở hữu một chiếc Mac rồi. Sao lại trả tiền để thuê một chiếc kém hơn? Với Remio, bạn dùng chính chiếc máy của mình — với tệp thật, toolchain thật, môi trường thật. Và độ trễ còn tốt hơn vì Mac của bạn nằm trong mạng gia đình, chứ không phải ở một trung tâm dữ liệu tận Virginia.

Một ngày làm việc thực sự

Để tôi kể bạn nghe một ngày làm việc thực tế trông ra sao — một thứ Ba tại quán cà phê.

08:30 AMNgồi xuống, kết nối, làm tiếp

Tôi ngồi xuống một quán cà phê với iPad và Magic Keyboard. Mở Remio. Kết nối tới Mac mini ở nhà. Xcode đã mở sẵn với dự án từ tối qua — từng breakpoint, từng tab, từng thay đổi chưa commit đều y nguyên như lúc tôi rời đi.

08:35 AMViết SwiftUI

Tôi đang viết mã SwiftUI. Gợi ý mã hoạt động hoàn hảo vì đây là Xcode thật chạy trên một chiếc Mac thật với trình biên dịch Swift thật. Mỗi lần gõ phím đều tức thì — cơ chế xử lý nhập liệu native của Remio nghĩa là không có độ trễ cảm nhận được giữa lúc nhấn phím và lúc ký tự hiện ra.

Vì sao có cảm giác như tại máy

Nhập liệu native được gửi thẳng tới máy chủ, thời gian khứ hồi dưới 5ms trên Wi-Fi gia đình.

09:15 AMChạy trên iOS Simulator

Tôi cần kiểm thử trên iOS Simulator. Tôi nhấn ⌘R. Simulator khởi chạy trên Mac, và tôi thấy nó ngay trên màn hình iPad. Tôi có thể tương tác với chiếc iPhone giả lập bằng thao tác cảm ứng trên iPad — điều bất ngờ là rất tự nhiên. Chạm, vuốt, cuộn. Mọi thứ đơn giản là hoạt động.

10:00 AMLàm giao diện trong Interface Builder

Đến lúc làm giao diện. Tôi mở Interface Builder. Kéo các constraint, chỉnh bố cục, xem trước trên nhiều kích thước thiết bị. Đây đúng là kiểu công việc không thể làm được trong một trình soạn thảo chạy trên trình duyệt. Những công cụ trực quan là không thể thay thế.

11:30 AMGỡ lỗi concurrency

Tôi đang gỡ một lỗi concurrency hóc búa. Tôi đặt breakpoint, chạy từng bước qua mã, kiểm tra biến trong trình gỡ lỗi. LLDB hoạt động hoàn hảo vì tôi đang dùng đồ thật, chứ không phải một bản mô phỏng trên nền web.

01:00 PMChuyển sang Android

Sau bữa trưa, tôi chuyển sang dự án Android. Tôi đóng Xcode và mở Android Studio. Vẫn kết nối đó, vẫn cấu hình đó. Remio không quan tâm tôi đang chạy ứng dụng nào — nó stream toàn bộ desktop.

07:00 PMTổng kết một ngày

Đến cuối ngày, tôi đã viết khoảng 400 dòng Swift, sửa ba lỗi, gửi một bản build lên TestFlight và review hai pull request. Tất cả từ một chiếc iPad tại quán cà phê. Không việc nào trong số đó đòi hỏi cấu hình đặc biệt hay phải đánh đổi.

Những chi tiết làm nên tất cả

Phím tắt

Đây là chỗ mà hầu hết các ứng dụng remote desktop gục ngã. Remio chuyển tiếp chính xác mọi phím tắt. ⌘B để build. ⌘R để chạy. ⌘⇧O để mở nhanh. ⌃⌘Space để chèn emoji (đúng vậy, cả phím đó luôn). Các phím bổ trợ của Magic Keyboard ánh xạ 1:1 tới các phím bổ trợ của Mac. Không có lớp chuyển đổi nào, không có sự rối rắm vì phím bị ánh xạ lại.

Hiển thị văn bản

Code là chữ nhỏ. Và rất nhiều. Một ứng dụng remote desktop làm mờ chữ hay tạo ra artifact thì hoàn toàn không dùng được để lập trình. Mã hoá H.265 của Remio với thiết lập tối ưu cho văn bản giữ cho code sắc nét như dao cạo. Màu tô sáng cú pháp chính xác. Độ đậm phông chữ đúng chuẩn. Ở độ phân giải của iPad Pro, trông đúng như thể Xcode đang chạy ngay tại máy.

Đa màn hình

Trên Mac mini, tôi có một màn hình phụ ảo. Remio cho phép tôi chuyển giữa các màn hình hoặc xem cả hai cạnh nhau. Tôi để code trên một màn hình và Simulator trên màn hình còn lại. Trên iPad, tôi có thể vuốt qua lại giữa chúng hoặc dùng Stage Manager để giữ cả hai luôn hiển thị.

Truyền tệp

Cần lấy một ảnh chụp màn hình từ Simulator để chú thích trên iPad? Remio hỗ trợ đồng bộ clipboard — sao chép một ảnh trên Mac, dán nó trên iPad. Việc chuyển các đoạn mã, ảnh chụp màn hình và tệp nhỏ giữa hai thiết bị diễn ra liền mạch.

Mẹo quy trình làm việc của tôi

Sau sáu tháng code theo cách này, tôi đã hình thành một vài thói quen giúp trải nghiệm còn tốt hơn nữa.

  1. Giữ Mac dùng kết nối có dây. Mac mini của tôi cắm thẳng vào router qua Ethernet. Điều này loại bỏ biến số lớn nhất ảnh hưởng đến chất lượng stream.
  2. Dùng kết nối Wi-Fi ổn định cho iPad. Wi-Fi 5GHz ở quán cà phê thường là đủ. Nếu kết nối chập chờn, cơ chế chất lượng thích ứng của Remio sẽ tự điều chỉnh — nhưng một kết nối ổn định đồng nghĩa với chữ luôn sắc nét.
  3. Đặt cỡ chữ Xcode ở mức 13-14pt. Cỡ này đọc thoải mái trên màn hình iPad Pro qua Remio mà không cần phóng to.
  4. Dùng phím tắt cho mọi thứ. Càng ít dùng cảm ứng/chuột cho các thao tác IDE, bạn càng nhanh. Đây cũng là lời khuyên hay cho cả khi làm việc tại máy.
  5. Bật "Reduce Motion" trong cài đặt iPadOS. Việc này giảm nhẹ chi phí hoạt ảnh ở phía iPad, cho Remio thêm một chút dư địa hiệu năng.

Những gì tôi không làm được (nói thật)

Để hoàn toàn thành thật, đây là những giới hạn.

Những đánh đổi đó là có thật. Nhưng với tôi, chúng bị lấn át hoàn toàn bởi khả năng mang cả môi trường phát triển của mình trong một chiếc máy tính bảng nặng 700 gram.

Giấc mơ lập trình trên iPad, thành hiện thực

Suốt nhiều năm, tôi chờ Apple mang Xcode lên iPad. Đến một lúc nào đó, tôi nhận ra điều đó có thể sẽ không bao giờ xảy ra — ít nhất là bản đầy đủ, chuyên nghiệp. Vậy nên tôi ngừng chờ đợi và tìm ra một câu trả lời tốt hơn.

Remio không đặt Xcode lên iPad của bạn. Nó đặt cả chiếc Mac của bạn lên iPad. Mọi ứng dụng, mọi công cụ, mọi tệp. Với chất lượng hiển thị và độ phản hồi nhập liệu khiến bạn có cảm giác như chiếc Mac đang ở ngay trước mặt — bởi vì, theo mọi khía cạnh quan trọng, đúng là như vậy.

Cấu hình phát triển tốt nhất không phải là cấu hình mạnh nhất. Đó là cấu hình mà bạn thực sự mang theo bên mình.

Chiếc iPad Pro cùng Remio là cỗ máy phát triển tốt nhất tôi từng sở hữu — không phải vì thông số của nó, mà vì nó đi cùng tôi đến mọi nơi, và cả môi trường phát triển của tôi cũng đi theo.

Nếu bạn là lập trình viên có một chiếc Mac và một chiếc iPad, hãy thử Remio. Cài đặt mất hai phút. Không cần tài khoản. Và nếu bạn tò mò về mảng chơi game, hãy xem hướng dẫn của chúng tôi về chơi game PC trên iPad — chính công nghệ độ trễ thấp giúp việc code trơn tru cũng khiến chơi game trở nên tuyệt vời.

Biểu tượng ứng dụng Remio

Tự mình trải nghiệm Remio.

Mang cả chiếc Mac trong chiếc iPad của bạn. Cài đặt mất hai phút, không cần tài khoản, và việc gõ phím có cảm giác như tại máy nhờ nhập liệu native.

Miễn phí trọn đờiKhông tài khoảnGhép cặp trong 30 giây