SwiftUI: особенности, плюсы и минусы и о том, как создают iOS-приложения

SwiftUI — фреймворк для создания iOS-приложения
SwiftUI — это фреймворк с набором готовых библиотек для создания пользовательского интерфейса в iOS-приложениях. Этот инструмент, разработанный Apple, пришёл на смену UIKit — последний почти во всём устраивал разработчиков, но создание элементов в части UI занимало много времени. SwiftUI не стоит путать со Swift — языком программирования, с помощью которого пишут приложения для платформы Apple. Его используют преимущественно для разработки на платформах iOS и macOS, но также он может пригодиться и на других проектах. Этот язык популярен среди разработчиков — по итогам декабря 2022 года он занял 15-е место в рейтинге «Топ 50 языков программирования» по версии индекса TIOBE.

SwiftUI: особенности разработки, преимущества и недостатки
Вся разработка с помощью SwiftUI происходит в специальной интегрированной среде — Xcode. Она создана компанией Apple специально для работы с платформами iOS, macOS, watchOS и tvOS. Далее разберём, какие есть особенности у SwiftUI.
Плюсы SwiftUI:
- Декларативный подход — это парадигма, при которой главную роль играет решение задачи, и описывается ожидаемый результат, а не способ его получения. Это позволяет лучше сфокусироваться на задаче.
- Скорость вёрстки — адаптировать приложения на свифт в большинстве случаев действительно быстро, однако стоит оговориться, что это справедливо для большинства стандартных экранов. Для особых форматов, таких как Apple TV или Apple Watch придётся адаптировать некоторые элементы вёрстки.
- Живое превью — возможность динамического интерактивного предпросмотра любых макетов пользовательских представлений. Эта функциональность доступна через Xcode.

- Совместимость с UIKit и AppKit. SwiftUI предназначен для работы вместе с UIKit (фреймворком для создания приложений iPhone, iPod touch и iPad) и AppKit (набором инструментов для создания графического интерфейса). Это даёт возможность постепенного внедрения новых UI-элементов в существующие проекты.
- Готовые инструменты для дизайна — с их помощью можно работать на специальном холсте, а все изменения будут синхронизироваться с кодом в соседнем редакторе. Код отображается в виде предварительного просмотра по мере ввода данных. Есть возможность просматривать созданные элементы в светлой и тёмной теме.

Несмотря на большое количество плюсов, SwiftUI не безупречен. Возможно, его минусы — лишь зоны роста, которые со временем станут не актуальными. Вот недостатки, на которые мы обратили внимание:
Минусы SwiftUI:
- Недостаточно готовых библиотек — многим разработчикам всё ещё не хватает встроенных функций, которые одинаково хорошо справлялись бы с нужной функциональностью на всех версиях.
- Низкая совместимость версий — каждая новая версия может отличаться от предыдущей, что требует от разработчика дополнительных ресурсов, чтобы переписать часть кода. Справедливости ради отметим, что с последними версиями iOS таких проблем стало меньше.
- Нехватка специалистов — так как SwiftUI считается относительно новым фреймворком, не так много разработчиков, которые долгое время на нём работают и накопили высокий уровень экспертизы. Однако и этот минус можно превратить в преимущество, для тех, кто хочет попробовать свои силы. Потребность в таких специалистах на русском рынке только растёт.

Кейсы использования
На SwiftUI создают приложения для самых разных сфер бизнеса: нефтедобычи, e-commerce и банков. Именно с помощью этого фреймворка написан СберМаркет — лидер в области доставки продуктов в России. Возможности SwiftUI позволяют делать удобные, лёгкие и быстрые приложения с интуитивно понятным управлением и приятным пользовательским опытом.
Наша команда iOS-разработчиков реализует и масштабирует проекты для различных отраслей и компаний. Мы используем возможности SwiftUI в том числе в e-commerce приложениях, так как его характеристики в скорости крайне важны в ритейле.
Средняя оценка наших iOS-приложений в App Store — 4,71.
Опыт Surf: что, кроме SwiftUI, помогает нам в iOS-разработке
В своей работы мы активно используем внутренние разработки и решения для работы с таблицами, сетью, а также библиотеки с самыми распространёнными фичами. У нашей команды iOS-разработчиков большой опыт реализации проектов в самых разных отраслях бизнеса, что позволяет оптимизировать разработку и сэкономить время.
- Bundler — позволяет получить идентичную среду для запуска проекта на любом компьютере, что ускоряет разработку и снижает количество ошибок, связанных с разными средами и версиями библиотек.
- SurfGen — собственное решение от Surf, способное ускорить разработку за счёт автоматизации рутинных задач. Инструмент работает через запросы к серверу по API, который описан в формате Swagger (OpenAPI).
- SwiftGen — помогает создавать безопасный доступ к изображениям, шрифтам, цветовым палитрам и т. д. Это значительно ускоряет выполнение монотонных, но трудоёмких задач, например, изменение цвета элементов или замена иконок. Это собственный набор библиотек для генерации кода сетевых сервисов, ускоряющий процесс разработки до 20%.
- Swiftlint и SwiftFormat — помогают следовать установленному стилю кода и обеспечивают согласованность проекта. Это снижает расходы на разработку и поддержку кодовой базы.
- Fastlane используется в процессе CI/CD — непрерывного развёртывания в процессе разработки — для управления запросами на включение и загрузки приложения через TestFlight и AppDistribution. Этот инструмент обеспечивает высококачественный код и тоже экономит время разработки.