Xcode. Interface Builder. Симулятор iOS. Полноценный проект на Swift из 47 файлов. И все это через мой iPad Pro в кофейне. Без компромиссов. Без обходных путей. Вот вся история.
В чем проблема «программирования на iPad»
Каждый год Apple делает iPad мощнее. Чипы серии M. Дисплей 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
Моя конфигурация почти неприлично проста:
- Mac mini M4 — стоит дома, всегда включен, на нем Xcode и все инструменты разработки
- iPad Pro 13" — с Magic Keyboard и Apple Pencil, где бы я ни был
- Remio — соединяет их без всякой настройки
Я открываю Remio на iPad, ввожу PIN-код, показанный на Mac mini, и через две секунды вижу рабочий стол Mac. Полное разрешение. Полный цвет. И вся моя среда разработки ровно там, где я ее оставил.
Никакого VPN для настройки. Никаких SSH-туннелей, которые надо поддерживать. Никакой учетной записи. Только PIN-код и подключение.
Почему это лучше программирования в браузере
Я пробовал все альтернативы. Правда, все. Вот почему Remio с настоящим Mac побеждает любое браузерное решение, которое я пробовал.
GitHub Codespaces / VS Code Web
Codespaces действительно впечатляет для веб-разработки. Но он работает в контейнере Linux. Нет Xcode. Нет Interface Builder. Нет симулятора iOS. Нет редактора моделей Core Data. Если вы делаете приложения для iOS или macOS, это просто не вариант. Да и для веб-разработки вас ограничивает песочница браузера: нет доступа к локальным файлам, нет нативного терминала, нельзя запускать произвольные фоновые процессы.
SSH и терминальные редакторы
Я люблю Vim. Правда люблю. Но собирать приложение на SwiftUI из 47 файлов, xib-файлов, каталогов ресурсов и модели Core Data в терминальном редакторе — это не продуктивность, а мазохизм. Автодополнение кода, рефакторинг, живые превью и визуальный отладчик существуют не просто так.
Облачные рабочие столы (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 мс обработки в локальной сети по нашим внутренним замерам; остальное — собственная частота обновления вашего дисплея, 60 Гц.
09:15Запуск в симуляторе iOS
Нужно проверить в симуляторе iOS. Нажимаю ⌘R. Симулятор запускается на Mac, а я вижу его на экране iPad. Я могу управлять виртуальным iPhone жестами на iPad — и это на удивление естественно. Касание, смахивание, прокрутка. Просто работает.
10:00Интерфейс в Interface Builder
Пора заняться интерфейсом. Открываю Interface Builder. Перетаскиваю констрейнты, настраиваю макеты, смотрю превью на разных размерах устройств. Именно такая работа невозможна в браузерном редакторе. Визуальные инструменты незаменимы.
11:30Отладка многопоточности
Я отлаживаю хитрую проблему с многопоточностью. Ставлю точки останова, прохожу код по шагам, смотрю переменные в отладчике. LLDB работает идеально, потому что это настоящий инструмент, а не веб-имитация.
13:00Переключаюсь на Android
После обеда я перехожу к проекту для Android. Закрываю Xcode и открываю Android Studio. То же подключение, та же конфигурация. Remio все равно, какое приложение запущено, — он передает весь рабочий стол.
19:00Итоги дня
К концу дня я написал около 400 строк на Swift, исправил три бага, отправил сборку в TestFlight и просмотрел два pull request. И все это с iPad в кафе. Ничего из этого не потребовало ни особой настройки, ни компромиссов.
Детали, благодаря которым это работает
Сочетания клавиш
Здесь разваливается большинство приложений удаленного рабочего стола. Remio корректно передает каждое сочетание клавиш. ⌘B — собрать. ⌘R — запустить. ⌘⇧O — быстро открыть. ⌃⌘Space — эмодзи (да, даже это). Клавиши-модификаторы Magic Keyboard соответствуют клавишам-модификаторам Mac один к одному. Нет слоя перевода, нет путаницы с переназначением клавиш.
Отрисовка текста
Код — это мелкий текст. И его много. Приложение удаленного рабочего стола, которое размывает текст или добавляет артефакты, совершенно непригодно для разработки. Кодирование H.265 с настройками для текста в Remio сохраняет код предельно четким. Цвета подсветки синтаксиса точны. Начертания шрифтов верны. На разрешении iPad Pro действительно кажется, что Xcode запущен локально.
Переключение между экранами
На моем Mac mini есть виртуальный второй дисплей. Remio позволяет переключать просматриваемый экран одним касанием — код на одном, симулятор на другом. На iPad я смахиваю между ними или использую Stage Manager, чтобы расположить рабочее пространство.
Буфер обмена и передача файлов
Нужно взять сообщение об ошибке из консоли, чтобы потом поискать его? Синхронизация буфера обмена в Remio делает это бесшовным: копируете текст на одном устройстве, вставляете на другом. А когда мне нужен справочный файл в папке проекта, я отправляю его прямо с iPad на Mac.
Мои советы по рабочему процессу
После полугода программирования таким способом у меня выработались привычки, которые делают работу еще лучше.
- Подключите Mac по проводу. Мой Mac mini подключен к роутеру кабелем Ethernet. Это убирает главную переменную в качестве трансляции.
- Используйте стабильный Wi-Fi для iPad. Wi-Fi 5 ГГц в кафе обычно подходит. Если соединение нестабильно, адаптивное качество Remio подстроится само, но стабильное соединение — это стабильно четкий текст.
- Установите размер шрифта в Xcode 13–14 пунктов. Так текст комфортно читается на дисплее iPad Pro через Remio без увеличения.
- Пользуйтесь сочетаниями клавиш для всего. Чем меньше вы используете касания и мышь для операций в IDE, тем быстрее работаете. Это хороший совет и для локальной разработки.
- Включите «Уменьшение движения» в настройках iPadOS. Это немного снижает нагрузку на анимацию на стороне iPad и дает Remio чуть больше запаса производительности.
Чего я не могу (честно)
Чтобы быть до конца честным, вот ограничения.
- Нужен интернет. Если вы в самолете без Wi-Fi, это не работает. Хотя у меня получалось использовать это через Wi-Fi в полете — медленно, но работало.
- Mac должен оставаться включенным. Это не облачный сервис. Если кто-то выдернет Mac из розетки или он перезагрузится для обновления, соединение пропадет, пока он не вернется.
- Крайне чувствительные к задержке задачи — например, игры или запись звука в реальном времени — имеют заметную (хоть и небольшую) задержку. Для программирования задержка незаметна.
Эти компромиссы реальны. Но для меня их с лихвой перевешивает возможность носить всю среду разработки в планшете весом 700 граммов.
Мечта разработчика на iPad сбылась
Годами я ждал, что Apple принесет Xcode на iPad. В какой-то момент я понял, что этого может никогда не случиться — по крайней мере в полной, профессиональной версии. Поэтому я перестал ждать и нашел ответ получше.
Remio не ставит Xcode на ваш iPad. Он ставит на iPad весь ваш Mac. Каждое приложение, каждый инструмент, каждый файл. С таким качеством изображения и отзывчивостью ввода, что кажется, будто Mac стоит прямо перед вами, — потому что во всем, что важно, так оно и есть.
Лучшая конфигурация для разработки — не та, где больше всего мощности. А та, что у вас действительно с собой.
Мой iPad Pro с Remio — лучшая рабочая машина из всех, что у меня были, и не из-за характеристик, а потому что он едет всюду со мной, а вместе с ним — вся моя среда разработки.
Если вы разработчик с Mac и iPad, попробуйте Remio. Настройка занимает две минуты. Учетная запись не нужна. А если интересна игровая сторона, загляните в наше руководство как играть в игры для ПК на iPad — та же технология с низкой задержкой, благодаря которой работает программирование, делает потрясающими и игры.