Site icon AppTractor

Мой стек iOS-разработки 2021

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

Немного обо мне: я iOS-инженер из Кейптауна, ЮАР. Занимаюсь разработкой приложений для iOS более 5 лет в сфере FinTech и электронной коммерции. Мне нравится создавать продукты, которые влияют на жизнь людей, и я думаю на Swift ⚡️😉.

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

iOS-разработка в 2021 году

Сейчас очень интересное время для iOS-разработчика. WWDC21 и WWDC20 были наполнены множеством новых и интересных вещей, которые теперь можно использовать для создания приложений. Хотя некоторые из них нельзя использовать сразу из-за отсутствия обратной совместимости с предыдущими версиями iOS, я вижу в этом возможность научиться. До того момента, как ваша команда будет готова отказаться от поддержки старых ОС, вы можете использовать это время, чтобы изучить такие вещи, как SwiftUI, Combine и async/await.

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

TL;DR: мой стек iOS-разработки

Это инструменты, которые я использую для CI (непрерывная интеграция) и CD (непрерывная доставка).

Xcode

Быть разработчиком iOS и не использовать Xcode практически невозможно, если вообще возможно. Наша любимая IDE за эти годы значительно улучшилась. Команда Apple добавила множество замечательных функций, чтобы облегчить нам жизнь как разработчикам. Лично мне очень нравится интеграция системы контроля версий, и мне не терпится попробовать Xcode Cloud.

Fastlane

Я использую Fastlane для автоматизации всего! Релизы, примечания к релизам, журналы изменений, сборки TestFlight и AppStore — вот некоторые из вещей, которые я автоматизирую с помощью Fastlane.

Github

Я не только использую Github для управления версиями, но также недавно начал использовать GitHub Actions для CI/CD. Наличие моего кода и CI/CD в одном месте — это для меня большая победа 💯.

Инструменты программирования

На мой взгляд, каждый проект iOS должен иметь эти инструменты. SwiftLint гарантирует, что стиль и синтаксис кода соблюдаются и согласованы. SwiftGen генерирует код для всех ваших ресурсов, чтобы сделать их типобезопасными. Все разработчики iOS любят безопасность типов и чистый код ❤️.

Я начал перемещать библиотеки из CocoaPods и использовать SPM для управления зависимостями, поскольку все больше библиотек добавляют его поддержку.

Архитектура

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

Мне очень нравится паттерн MVVM. В нем нет слишком большого количества шаблонного кода, что дает ясность понимания и улучшает тестирование. В тандеме с MVVM мне нравится использовать RxSwift для привязки свойств к представлениям. Apple одобрила функциональное реактивное программирование в виде Combine. Я с нетерпением жду, когда в будущем смогу заменить RxSwift на Combine.

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

UI

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

Я должен упомянуть эти две библиотеки DiffableDataSource и KingFisher 🌟.

DiffableDataSource — это другой вариант использования Diffable Data Source ото Apple, доступного для использования с iOS 9 и выше. Таким образом, вы можете использовать композиционные макеты и diffable data sources, не отказываясь от поддержки предыдущих версий iOS.

KingFisher — король кеширования изображений. Если ваше приложение загружает изображения, обратите внимание на эту библиотеку. Она добавляет поддержку кэширования, состояний загрузки, плейсхолдеров и других функций, связанных с показом изображений.

База знаний

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

Сообщество

Сообщество разработчиков iOS — потрясающее. Так много людей свободно делятся своими знаниями с другими. За эти годы я многому научился у этого сообщества.

Как лучше всего использовать сообщество:

  1. Быть активным! Создайте профиль в Twitter, следите за новостями других iOS-разработчиков, участвуйте в iOS Dev Happy.
  2. Читайте документацию, читайте код на Github, найдите общедоступные репозитории, попытайтесь понять код.
  3. Используйте StackOverflow — не просто копируйте-вставляйте, а сначала понимайте, а затем уже копируйте.
  4. Учитесь у своих коллег и senior-разработчиков. Не бойтесь задавать вопросы и бросать вызов статус-кво.

Блоги

YouTube

Книги

Рассылки

Будь сам senior инженером, в котором ты нуждался, когда был junior-ом, — аноним.

Спасибо, что прочитали мою статью. Продолжайте думать на Swift ⚡️!

Exit mobile version