Site icon AppTractor

Xcode 27, похоже, меняет правила игры

Я достаточно давно разрабатываю приложения для платформ Apple, чтобы знать: большинство обновлений сред разработки идут по предсказуемому сценарию. Несколько улучшений удобства, возможно, пара новых шаблонов и список изменений, который выглядит внушительнее, чем реальные последствия обновления.

Поэтому, когда я впервые получил доступ к бета-версии Xcode 27, я не ожидал многого. Я ошибался.

Проведя с этой бета-версией достаточно времени, могу без преувеличения сказать: Xcode 27 выглядит как самое продуманное обновление инструмента за последние годы. Оно не просто добавляет новые функции. Оно пересматривает базовые предположения о том, как разработчики действительно работают, и перестраивает среду вокруг более удачных решений.

Это всё ещё бета-версия, поэтому до финального выпуска многое может измениться. Но уже сейчас всё выглядит на удивление цельно и определённо заслуживает обсуждения.

Вот что особенно привлекло моё внимание.

Рабочее пространство наконец перестало мешать

Первое, что я заметил, открыв Xcode 27 beta, — в нём стало легче «дышать». Звучит драматично, но любой, кто проводил долгие часы в перегруженной среде разработки, поймёт, о чём я.

Старая панель инструментов напоминала ящик со всякой всячиной. В панели переходов находились элементы, которым там было совершенно не место. Средства управления системой контроля версий были втиснуты по углам. Технически всё работало, но никогда не ощущалось по-настоящему продуманным.

Новая панель инструментов выглядит именно продуманной.

Навигация по истории и элементы управления редактором теперь находятся там, куда естественно падает взгляд. Ход сборки спокойно отображается под заголовком окна. Центр оставлен для двух вещей, к которым разработчик обращается чаще всего: точки входа в агент для программирования и выбора схемы с целевым устройством.

Ничто больше не борется за внимание.

Перенос выбора ветки на нижнюю панель оказался одним из тех изменений, о необходимости которых я не подозревал, пока не увидел его.

Названия веток сейчас часто длинные. Настоящие, описательные названия, которые действительно объясняют назначение ветки. Им нужно место, и в этой бета-версии они наконец его получили.

Но больше всего я постоянно возвращался к настройке интерфейса. У меня всегда были собственные представления о том, как должна выглядеть панель инструментов. Теперь впервые эти представления можно воплотить. Добавляйте то, чем пользуетесь. Убирайте ненужное. Размещайте элементы там, куда уже привыкла тянуться рука.

Темы оформления — ещё одно крупное изменение рабочего пространства. Похоже, Xcode 27 заменит старую систему фиксированных цветовых схем на действительно гибкую настройку. В новой панели Appearance есть два ползунка: один управляет насыщенностью цвета текста, второй — насыщенностью фона. Увеличьте интенсивность фона — и за всем рабочим пространством появится полноценный градиент. Измените основной оттенок — вся палитра перестроится под него.

Больше всего меня впечатлило то, насколько умно распространяются изменения темы. Меняете базовый цвет — всё соответствующим образом обновляется. Но если вы явно зафиксировали конкретное значение для отдельного элемента, оно сохраняется и больше не зависит от будущих изменений палитры. Это умная система, которая позволяет экспериментировать, не лишая разработчика точного контроля.

Возможность задавать отдельную тему для каждого рабочего пространства незаметно стала одной из моих любимых функций. Идея назначить каждому проекту собственное оформление, чтобы уже по открывшемуся окну сразу понимать, с каким проектом вы работаете, ещё до того, как посмотрели на заголовок, кажется мелочью. Но в повседневной работе она даёт заметный выигрыш в удобстве.

Встроенные предупреждения и ошибки тоже переработали. Предиктивные проблемы теперь отображаются с приглушённым фоном, соответствующим теме, пока вы печатаете, чтобы меньше мешать. Когда запускается сборка, они либо превращаются в полноценные диагностические сообщения, либо исчезают, если вы уже успели исправить проблему. Читать код стало приятнее и чище.

Запуск проекта без лишнего трения

Я теряю много идей из-за лишних действий. Не потому, что забываю их, а потому что иногда затраты на создание нового проекта кажутся несоразмерными самой идее. Нужно придумать имя, идентификатор пакета, выбрать место на диске, принять организационное решение, к которому я ещё не готов.

Пока всё это настраиваешь, первоначальный интерес успевает исчезнуть. Xcode 27 beta, похоже, полностью убирает эту проблему. Создаёте новый проект — и сразу оказываетесь в безымянном рабочем пространстве. Никаких форм. Никакого ритуала именования. Просто чистый холст и та отправная точка, которая подходит для вашей идеи.

Если эксперимент окажется полезным, позже даёте ему имя и сохраняете. Если ни к чему не приведёт — просто закрываете окно. Ничего удалять и чистить не нужно.

Я тестировал этот подход во время работы с бета-версией, и он действительно изменил моё отношение к небольшим экспериментам. То, от чего раньше я бы отказался из-за накладных расходов на создание проекта, теперь можно просто взять и попробовать.

Похожие улучшения получили и отдельные файлы Swift. В бета-версии открытие самостоятельного файла .swift создаёт полноценное рабочее пространство с результатами в реальном времени и предварительным просмотром интерфейса прямо на холсте.

Для обмена ранними идеями с коллегами через один файл вместо целого проекта это заметное улучшение. Можно увидеть настоящий результат без лишней проектной оболочки.

Агенты, которые действительно вписываются в мой рабочий процесс

Скажу прямо: я довольно скептически относился к обновлениям агентов для программирования в Xcode 27 beta. Функции агентов в инструментах разработчика часто выглядят как сначала придуманная функция, для которой потом пытаются найти рабочий сценарий.

Здесь оказалось иначе. Самое важное изменение состоит в том, что разговор с агентом больше не находится в отдельном режиме, куда нужно переключаться. Он живёт прямо в панели редактора рядом с кодом, как обычный файл. Его можно открыть в отдельной вкладке, разделить редактор, поставить рядом с файлом, над которым вы работаете. Он становится частью рабочего пространства, а не чем-то, существующим сбоку. Уже одно это сильно меняет то, насколько естественно начинаешь пользоваться агентом.

Особенно меня впечатлила команда /plan. Вместо того чтобы просто отдать агенту задачу и беспокоиться, что он сейчас начнёт менять неизвестно что, вы сначала описываете желаемый результат. Агент изучает кодовую базу и создаёт структурированный план ещё до того, как изменит хотя бы одну строку. После этого вы можете просмотреть план и скорректировать его. Можно возразить, добавить ограничения, изменить направление решения. Реализация начинается только тогда, когда вы сами разрешаете.

Наблюдать за агентом после подтверждения плана действительно интересно. Каждое изменение отображается в реальном времени в правой части редактора. Создаваемые файлы, снимки симулятора, создаваемые материалы — всё видно по мере работы. Вы не ждёте конечного результата. Вы наблюдаете сам процесс.

Боковая панель для организации параллельных разговоров с агентами сделана неброско, но полезно. Одновременный запуск нескольких экспериментов легко мог бы превратиться в хаос. В бета-версии он остаётся управляемым: хорошо видно, какой из разговоров сейчас требует вашего внимания.

Тестирование на устройствах, которое не выбивает из рабочего потока

Device Hub — одно из тех изменений в Xcode 27 beta, к которым я постоянно возвращаюсь, размышляя о том, что Apple на самом деле пытается сделать с новой версией. Это не какая-то революционная новая возможность. Это переосмысление того, что вы и так делаете постоянно.

Когда вы запускаете приложение в симуляторе, Device Hub открывает окно размером с реальное устройство. Оно компактное, функциональное и находится прямо в рабочем пространстве. Быстрые действия для перехода на главный экран, поворота устройства и создания снимка сразу доступны. Если расширить окно, появляются дополнительные элементы управления, включая Inspector.

Именно в Inspector находится рабочий процесс тестирования доступности. Можно увеличить контрастность, повысить размер динамического текста, переключиться в тёмный режим — и приложение сразу реагирует. Возможность проходить через такие режимы, не выходя из процесса разработки, действительно важна. Когда тестировать просто, вы делаете это чаще и раньше.

Поддержка тестирования через iPhone Mirroring тоже заслуживает внимания. Поскольку окно зеркалирования в macOS 27 можно изменять по размеру, Device Hub позволяет проверить, насколько хорошо приложение работает с различными соотношениями сторон. Приложения, которые уже поддерживают изменяемые окна на iPad и Mac, обычно справляются с этим естественно, а теперь проверить это можно без дополнительных действий.

Физические устройства отображаются в той же боковой панели, что и симуляторы. Подключаете iPad — он появляется прямо рядом с виртуальными устройствами. Тестирование физического устройства и симулятора в рамках одной сессии, одного окна и одного рабочего процесса — именно то устранениt трения, j котором сначала не задумываешься, но потом оно оказывается очень полезным.

Локализация, которая раньше занимала недели

Я работал над приложениями с поддержкой нескольких языков. Я знаю, сколько раньше стоил этот процесс. Экспортировать строки, договориться с переводчиками, дождаться результата, импортировать переводы, найти проблемы с компоновкой, исправить их — и повторять этот цикл для каждого нового языка. Локализация никогда не была любимой частью выпуска приложения.

То, что Xcode 27 beta показывает в этой области, выглядит как серьёзное переосмысление процесса. Основную тяжёлую работу берёт на себя агент для программирования. Вы сообщаете, какие языки нужны, а он:

При этом используется полный контекст проекта и встроенные в Xcode рекомендации по стилю конкретного языка, поэтому результат должен быть контекстно подходящим, а не простым механическим переводом.

Каталог строк превращается в интерфейс проверки. Можно просматривать переводы язык за языком, просить исправления и добавлять новые языки, когда вы будете готовы. Выбираете язык, нажимаете Generate Translations — и агент начинает работать в фоне, пока вы продолжаете заниматься другими задачами.

Запуск локализованной сборки остаётся самым быстрым способом найти проблемы компоновки. Текст вылезает за границы кнопки, подписи некрасиво обрезаются, отдельные строки требуют корректировки. Такие проблемы можно заметить даже без знания языка, и если обнаружить их заранее, не придётся удивляться, когда носители языка начнут тестировать приложение через TestFlight.

Если этот рабочий процесс сохранится до финального выпуска, локализация после выхода Xcode 27 будет ощущаться совершенно иначе.

Organizer перестаёт только сообщать о проблемах и начинает помогать

В предыдущих версиях Xcode Organizer хорошо умел показывать, что именно не так. В Xcode 27 beta он становится лучше в другом: помогает понять, что с этим делать.

Переработанный экран Overview поднимает самые важные проблемы наверх и размещает показатели и диагностику на одном экране. Всплеск производительности на графике и вероятный участок кода, который его вызвал, теперь можно видеть рядом, а не искать по разным панелям.

Появились два новых показателя, которые закрывают пробелы прежнего набора. Отслеживание хранилища показывает размер приложения на диске с разбивкой на документы, данные и двоичный файл. За размером двоичного файла особенно важно следить, потому что он влияет на время загрузки через мобильную сеть и скорость запуска. История по версиям позволяет понять, действительно ли попытки уменьшить размер работают.

Обнаружение рывков анимации теперь работает не только при прокрутке. Обновлённый показатель фиксирует рывки в любых местах, включая взаимодействия Liquid Glass и представления SwiftUI. Неровный переход, который старые метрики могли пропустить, теперь должен быть заметен.

Metric Goals заменяют прошлогодние рекомендации более честной системой. Цели теперь подстраиваются под то, что делает именно ваше приложение и какие технологии оно использует, вместо универсальных нормативов для всех. Цели охватывают:

Исторические базовые показатели помогают увидеть, улучшается ли ситуация или какое-то недавнее изменение ухудшило её.

Функция Generate Recommendations связывает агент программирования с диагностическими данными. Описываете ухудшение, позволяете агенту разобраться в доступной информации вместе с вами и итеративно приходите к отправной точке, подходящей именно вашей кодовой базе.

Та часть анализа производительности, которая раньше во многом строилась на догадках, становится гораздо более структурированной.

Поиск медленного кода без гаданий

Работа с производительностью всегда напоминала расследование. Что-то работает медленно, вы это знаете, открываете трассировки и надеетесь найти виновника раньше, чем закончится терпение. Top Functions в Instruments, который появится в Xcode 27, меняет этот процесс.

Выбираете диапазон времени в профиле центрального процессора, где приложение испытывало проблемы, нажимаете Top Functions и получаете отсортированный список функций, которые потребили больше всего времени за этот период.

Причём это не только один самый дорогой вызов. Функция показывает методы, которые стали проблемой за счёт количества и повторяемости. То есть именно тот случай, когда ни один отдельный вызов не выглядит страшно, но суммарная стоимость уничтожает частоту кадров. На практике это может превратить час анализа трассировки в несколько минут целенаправленного исследования.

Top Functions приводит вас в нужное место кода. После этого CMD+Shift+O в Xcode позволяет сразу перейти к соответствующей функции. Во многих случаях, когда вы наконец смотрите на правильный участок кода, решение становится очевидным. После исправления снова запускаете Instruments и проверяете Top Functions.

Если код вашего приложения больше не появляется в этом списке, у вас есть реальные доказательства улучшения, а не просто надежда, что стало быстрее.

Xcode Cloud стало проще начать использовать

Ручной поиск регрессий невозможно масштабировать. Каждое изменение кодовой базы может сломать то, что до этого работало. А узнать об этом можно только одним способом — действительно обнаружить проблему. Xcode Cloud автоматизирует этот процесс.

В Xcode 27 beta настройка Xcode Cloud стала настолько простой, что откладывать её почти больше нет причин. Подключаете репозиторий с исходным кодом, подтверждаете информацию о команде — и модульные и интерфейсные тесты автоматически запускаются в облаке при каждом изменении сразу на нескольких устройствах и версиях системы.

Интеграция с TestFlight и App Store делает путь от успешной сборки до пользователей прямым. Если ухудшение всё-таки проскочило, вы быстро узнаете об этом и так же быстро сможете выпустить исправление.

Бета-версия, на которую действительно стоит обратить внимание

Я начал работу с Xcode 27 beta с довольно сдержанными ожиданиями, но в итоге был искренне впечатлён тем, насколько цельной она уже выглядит для предварительной версии.

Главное отличие этой бета-версии от обычного раннего доступа — то, насколько хорошо её компоненты уже работают вместе.

Настройка рабочего пространства, мгновенное создание проектов, интеграция агентов, Device Hub, новый процесс локализации, обновления Organizer, улучшения Instruments.

Ничто из этого не выглядит как отдельная функция, прикрученная к старому фундаменту.

Скорее ощущается, что фундамент заново переосмыслили, а новые возможности естественно выросли уже из него.

До финального выпуска ещё есть время, и что-то наверняка изменится. Но если итоговый Xcode 27 окажется хотя бы близок к тому, что показывает эта бета-версия, это действительно будет релиз, которого стоит ждать.

Если у вас есть доступ к бета-версии для разработчиков, её определённо стоит установить и попробовать.

Начните с ползунков темы и настройки панели инструментов, а затем запустите команду /plan на какой-нибудь задаче, которую давно откладывали.

Остальное подтянется само.

Источник

Exit mobile version