Рейтинг инструментов iOS разработки,
2022 год

Мы опросили 2.000 iOS разработчиков в Telegram-канале iOS Good Reads и узнали, какие архитектурные подходы они предпочитают, какими инструментами пользуются и какие библиотеки подключают к проекту. Если вы хотите построить план обучения в iOS – эти данные вам помогут сориентироваться на текущем рынке.
Языки и платформы
Swift практически полностью вытеснил Objective-C, а доля ненативных языков – исчезающе мала.
Q: На каком языке вы пишете большую часть кода своих iOS проектов?

Swift – 97%
Objective-C – 11%
Dart – 2%
Objective-C++ – 2%
Kotlin – 2%
C++ – 2%
JavaScript/TypeScript – 1%
89% бинарников в iOS 15 используют Objective-C, C++ – 17%, Swift – 13%. Доля Swift за год выросла практически на треть, но все еще очень далека от Objective-C.
Apple’s use of Swift and SwiftUI in iOS 15, blog.timac.org
Больше крутых материалов про iOS разработку – в Telegram-канале iOS Good Reads!
На уровне написания кода достаточно знать один скриптовый язык, но полезно уметь читать Bash, Swift, Ruby и Python.
Q: Какие языки вы используете для скриптинга и автоматизации своих задач?

Bash – 51%
Swift – 38%
Ruby – 37%
Python – 31%
JavaScript – 5%
Другое – 8%
Не использую никаких – 19%
28% iOS разработчиков работают с кроссплатформенными фреймворками.
За последние годы React Native существенно потерял позиции, уступив их Flutter и Kotlin Multiplatform Mobile.
Q: Какие кроссплатформенные технологии вы используете?

Flutter – 12%
C++ – 10%
Kotlin Multiplatform Mobile – 9%
React Native – 5%
Другая технология – 3%
Не использую – 72%
Архитектура и подходы к разработке
MVVM лидирует с большим отрывом среди всех архитектурных подходов.
Q: Какие архитектурные подходы вы используете?
MVVM – 59%
MVC – 36%
VIPER – 28%
CleanSwift – 21%
Redux – 9%
TCA – 5%
RIBs – 4%
Другое – 11%
Не использую универсальных архитектурных решений – 9%
ВКонтакте ценят классический подход к написанию iOS-приложений по MVC. Новый код пишется на Swift, подход к разработке актуализируется каждый год в соответствии с нововведениями языка. Команда активно внедряет SPM, чтобы разбивать крупные модули на простые небольшие и независимые компоненты. Приложение ВКонтакте отличается повышенным спросом на быстродействие и точность в отрисовке пользовательского интерфейса, поэтому почти вся вёрстка рассчитывается вручную в фоновой очереди.
Вакансии в команду ВКонтакте
За последний год SPM совершил огромный скачок вперед, а использование CocoaPods начинает падать как среди разработчиков, так и среди авторов библиотек.
Q: Как у вас организован Dependency Management?

CocoaPods – 72%
SPM – 55%
Binary Frameworks – 11%
Carthage – 9%
Copy to sources – 6%
Другое решение – 3%
Не использую зависимости – 2%
SPM постепенно вытесняет CocoaPods. Например, команда SwiftNIO в ближайшем релизе перестает поддерживать поды, и рекомендует переходить на SPM. Основная причина – релиз в CocoaPods довольно трудоемкий, требует поддержки кучи podspec и постоянного разбора проблем подов.
SwiftNIO is dropping support for CocoaPods, forums.swift.org
Больше крутых материалов про iOS разработку – в Telegram-канале iOS Good Reads!
80% опрошенных разбивают свое приложение на модули.
Q: Какой подход к модуляризации вы используете?

Development CocoaPods – 32%
SwiftPM / Packages – 30%
xcodeproj targets – 23%
Multiple xcodeproj'ects – 13%
SwiftPM / Mixed targets & packages – 13%
SwiftPM / Targets – 11%
Tuist targets – 6%
Другое решение – 4%
Не использую модуляризацию – 19%
Треть iOS разработчиков уже начали использовать SwiftUI для верстки.
Сложно выделить один предпочтительный подход к верстке UI. Все зависит от специфики проекта и личных предпочтений команды.
Q: Как вы верстаете UI?

UIKit / Autolayout (Cocoa) – 48%
SwiftUI – 32%
UIKit / Autolayout (3rd party DSL) – 28%
UIKit / Xibs – 27%
UIKit / фреймы в коде – 26%
UIKit / Storyboards – 25%
Texture – 3%
Другое решение – 8%
Чаще всего разработчики покрывают свои проекты unit-тестами, и на этом заканчивают.
Q: Какие тесты вы пишете в рабочих проектах?

Unit тесты – 64%
Скриншотные тесты – 21%
End-to-end тесты – 16%
Компонентные тесты – 15%
API тесты – 8%
Другие виды тестов – 3%
Не пишу тесты – 30%
Способы отладки iOS приложений
Брейкпойнты — 1533 чел
1
Принты — 1242 чел
2
Xcode View Debugger — 1109 чел
3
Команды lldb — 882 чел
4
os_log — 238 чел
5
Reveal — 121 чел
6
Lookin – альтернативный Reveal и Xcode View Debugger инструмент для просмотра и дебага иерархии вьюшек. Главные отличия от альтернатив в том, что он бесплатный и опенсорсный, и в том, что его можно запускать прямо на телефоне.
Больше крутых материалов про iOS разработку – в Telegram-канале iOS Good Reads!
Хочешь читать лучшие материалы про iOS разработку?
Подписывайся на Telegram-канал iOS Good Reads, в котором уже шесть лет ежедневно публикуются самые классные статьи, видео и новости про разработку iOS приложений!
Библиотеки
Среди баз данных лидирует Core Data, но Realm подбирается к ней удивительно близко.
Q: Как вы храните данные?

UserDefaults – 75%
Keychain – 59%
Core Data – 55%
Realm – 34%
JSON Serialization (хранение в файлах) – 22%
SQLite – 14%
GRDB – 6%
Другое решение – 5%
Большинству разработчиков для работы с сетью достаточно функциональности, предоставляемой стандартной URLSession.
Q: Что вы используете на сетевом слое своих приложений?

URLSession – 67%
Alamofire – 47%
Moya – 17%
Другая готовая библиотека – 4%
Свое решение – 17%
Мода на DI-фреймворки угасла, и большинство разработчиков реализуют dependency injection своими руками.
Единственный популярный DI фреймворк на рынке – Swinject.
Q: Чем вы пользуетесь для Dependency Injection?

Swinject – 31%
Needle – 5%
Typhoon – 3%
dip – 3%
Другая библиотека – 10%
Свое решение – 40%
Не использую DI – 29%
Чаще всего для загрузки изображений используются либо Kingfisher, либо старый добрый SDWebImage.
Q: Как вы загружаете изображения?

Kingfisher – 48%
SDWebImage – 36%
Nuke – 16%
Нативно инструментами SwiftUI – 12%
Другая библиотека – 8%
Свое решение – 26%
Инструменты разработки
Xcode используют все, но значимый процент разработчиков вместе с ним пользуются VSCode и Swift Playgrounds.
Q: Какие IDE вы используете чаще всего при разработке iOS приложений?

Xcode – 98%
VSCode – 17%
Swift Playgrounds – 14%
Sublime – 8%
AppCode – 4%
Vim – 4%
Другое – 2%
65% iOS разработчиков используют в своих проектах кодогенерацию.
Сразу у трех кодогенераторов высокие показатели использования – SwiftGen, XcodeGen и Sourcery.
Q: Какие кодогенераторы вы используете?

SwiftGen – 36%
XcodeGen – 25%
Sourcery – 20%
Generamba – 14%
Tuist – 9%
Другое решение – 6%
Не использую – 35%
Самый популярный линтер – SwiftLint. Swift-format от Apple даже не добрался до топа.
Q: Какие линтеры/форматтеры вы используете для Swift кода?

SwiftLint – 84%
SwiftFormat – 15%
Другое решение – 5%
Не использую – 16%
Terminal

Самый популярный Git-клиент
Charles

Самый популярный Proxy-клиент
Postman

Самый популярный HTTP-клиент
Git клиенты
Proxy клиенты
HTTP клиенты
Половине разработчиков хватает консольного git клиента, а остальные в основном пользуются SourceTree и Fork.
Terminal – 48%
SourceTree – 40%
Fork – 30%
Встроенный в IDE – 19%
GitKraken – 5%
Другой клиент – 14%
Proxyman вышел только в 2021 году, но уже успел занять треть всего рынка. Это отличный повод его попробовать!
Charles – 56%
Proxyman – 30%
Другой клиент – 6%
Не использую – 23%
Однозначный лидер среди HTTP клиентов – Postman.
Postman – 71%
cURL – 21%
Server-provided (Swagger/GraphQL Playgrounds) – 14%
Paw – 13%
Insomnia – 8%
Другой клиент – 4%
Не использую – 11%
Proxyman – отличная альтернатива Charles. Если вы решили с ним разобраться, вот хорошая статья с разбором его конфигурации и использования базовой функциональности.
Debugging Network Traffic With Proxyman, donnywals.com
Больше крутых материалов про iOS разработку – в Telegram-канале iOS Good Reads!
Большинство команд продолжает работать с Jira.
Q: Какой таск-трекер используется в вашей команде?

Jira – 76%
Trello – 14%
Notion – 9%
GitHub – 8%
YouTrack – 7%
Другое решение – 16%
GitHub

Самый популярный сервис хостинга репозиториев
GitLab

Самый популярный CI/CD сервис
Хостинг репозиториев
CI/CD
Большая тройка сервисов для хостинга репозиториев: GitHub, GitLab, Bitbucket.
GitHub – 68%
GitLab – 44%
Bitbucket – 28%
Локально – 10%
Другое решение – 4%
Большая тройка CI/CD сервисов: GitLab, GitHub, Jenkins.
GitLab – 47%
GitHub – 35%
Jenkins – 34%
TeamCity – 18%
CircleCI – 4%
Xcode Cloud – 4%
TravisCI – 2%
Другое – 13%
Портрет респондента
Профессиональный уровень участников
Q: Как вы оцениваете свой текущий профессиональный уровень?

Только изучаю iOS – 10%
Junior – 11%
Middle – 32%
Senior – 30%
Lead – 17%
Понравилось исследование?
Подписывайся на iOS Good Reads – кроме полезных статей, там регулярно появляются новые опросы и горячие холивары вокруг них!