Написать пост

Учимся iOS-разработке: что должен знать любой разраб в 2024 году

Аватарка пользователя sudo >: )

Мы опросили middle и senior специалистов, какие фреймворки и инструменты iOS учить, чтобы легко найти работу в разработке.

Джунов и стажёров в айти интересует, какие библиотеки, фреймворки и инструменты iOS учить, чтобы быстро и легко найти работу в разработке.

Мы опросили специалистов уровня middle и senior, которые дали свои комментарии. Вот, что они ответили.

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

Если вы хотите присоединиться к числу экспертов и прислать ответ от вашей компании или лично от вас, то пишите на experts@tproger.ru, мы расскажем, как это сделать.

Язык

Очевидно, но всё же: начинать нужно со Swift. Это основной язык разработки для платформ Apple — iOS и macOS. За 10 лет с момента выхода он полностью заменил Objective-С. В целом iOS-разработчику полезно знать Objective-C, поскольку его всё ещё можно встретить в легаси проектов с историей, но основной инструмент всё же Swift.

Архитектурные фреймворки

Apple в своей документации по-прежнему рекомендует архитектурные шаблоны MVC, Model-View-Controller. Это первый шаблон, с которым столкнётся начинающий iOS-разработчик. Шаблон — это способ организации кода, призванный сделать его поддерживаемым, расширяемым и читаемым. 

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

С этой проблемой можно работать с помощью других архитектурных шаблонов проектирования, например MVP, Model-View-Presenter и MVVM, Model-View-ViewModel. 

Библиотеки

UIKit и Swift UI

UIKit — фреймворк для создания интерфейсов в iOS. Он существует почти столько же, сколько сам айфон, и включает все компоненты пользовательского интерфейса — кнопки, текстовые поля, таблицы…

SwiftUI — более новый фреймворк, который позволяет верстать пользовательские интерфейсы в соответствии с актуальным декларативным подходом. В чём отличие декларативного от более старого императивного подхода?

Императивный подход предполагает, что мы пишем код приложения как инструкцию: за шагом 1 следует шаг 2 — и никак иначе.

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

Как правило, декларативный подход делает код более читаемым и поддерживаемым. Это очень важно, потому что разработчик около 80 % времени не пишет, а читает код, разбирается в нём.

Пока UIKit и SwiftUI существуют параллельно — в том числе потому, что SwiftUI работает с версиями iOS от 13 и младше. Со временем UIKit уйдёт, как и язык Objective-C.

Core Data и SwiftData

Это инструменты работы с базами данных. Более новый фреймворк SwiftData создан на основе Core Data и предлагает более удобный и простой синтаксис. Кстати, SwiftData и Core Data могут использоваться одновременно.

GCD и async/await

GCD, Grand Central Dispatch — это механизм от Apple работы с многопоточным асинхронным кодом. 

Если упростить, взаимодействие фронтенда и бэкенда устроено так: мы отправляем запрос и получаем ответ. Пока этот запрос идёт к серверу, а тот собирает эти данные и пытается нам их вернуть, может пройти 2-3 секунды. Если мы будем ждать выполнения метода — нам придётся на это время «заблокировать» приложение, остановить его работу для пользователя. Это плохо, так нельзя. 

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

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

Среда разработки

XCode — это «родная» среда разработки для создания приложений для iPhone, iPad, Apple Watch, MacBook и других устройств экосистемы Apple.

XCode включает в себя редактор кода, интерфейсные конструкторы, отладчики — словом, все инструменты, которые нужны для разработки и тестирования.

Любые существующие альтернативы — неофициальные, Apple их не поддерживает.

Система контроля версий

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

Чтобы ответить на вопрос, что надо изучать молодым разработчиками под iOS или тем кто хотят ими стать в 2024, надо для начала в кранце описать те изменения которые происходят сейчас в индустрии.

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

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

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

Следующий важнейший момент - это максимально быстро постараться получить опыт работы в команде, ознакомиться с современными методологиями построения рабочего процесса, понимать что такое Agile, Scram, Code Review, парное программирование и т.д.

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

Ниже краткий гайд того как бы я рекомендовал выстраивать изучение iOS в 2024:

  1. Потратить время на базовые знания в области алгоритмов и структур данных и изучение языка программирования Swift, понимать что такое массивы, множества, классы, структуры, перечисления и т.д. Этот пункт может быть очень тяжелым для начинающего и поэтому я бы рекомендовал не тратить на него много времени с самого начала, чтобы не потерять мотивацию, а возвращаться к нему и подтягивать знания во время остальных пунктов.
  2. Начать изучать SwiftUI и жизненного цикла приложения в iOS, начать писать первые очень простые приложения, которые позволят продолжать тренировать и прокачивать пункт No1.
  3. Почитать про архитектуру приложений, паттерны проектирования (базовые из них). Изучать и самое главное постараться максимально понять на примерах, что такое SOLID. На этом этапе можно взять свое тестовое приложение с предыдущего этапа и переписать его используя лучшие практике.
  4. Освоить системы контроля версий хотя бы на базовом уровне. Изучать что такое Git и как с ним работать, выработать привычку делать изменения своего кода в отдельных ветках и т.д.
  5. Начать изучать сетевое взаимодействие, понимать что такое HTTP, как происходит взаимодействие с сервером, какие запросы бывают и т.д. На этом этапе я бы советовал взять любой открытый API и написать простейший клиент к нему использую URLSeession. Не надо искать библиотеке, которые помогут вам это сделать, попробуйте разобраться в тех фреймворках которые предоставляет Apple.
  6. Немного покопать в сторону многопоточности используя пример с запросами к серверу, почитать про GCD и нативный Cuncurrency в Swift (Actors, async/await, etc.)
  7. Если предыдущие этапы пройдены, и появилось базовое понимание того как работает разработка под iOS, можно смело переходить к сторонним библиотекам. Во-первых, надо изучить механизм подключения этих библиотек - Swift Package Manager (SPM). На данном этапе можно взять свое предыдущее приложение по работе с API и переписать сетевую часть на вариант с использованием сторонней библиотеки Alamofire.
  8. Начать изучать Unit тестирование и постараться покрыть свое приложение тестами. В процессе покрытия тестами вы скорее всего обнаружите, что большую часть кода покрыть тестами не получается, и это отличный знак того, что надо вернуться к первым пунктам и более детально изучить улучшение архитектуры приложения.
  9. Почитать про методологии разработки, работу в команде, Agile, Scrum и т.д.
  10. Опционально: необязательно, но безусловно будет плюсом покопать также в сторону баз данных и работы с данными в iOS: SwiftData, Core Data.
  11. Искать первую работу в этой области. Если вы действительно сможете пройти предыдущие 9 пунктов, напишете пару тестовых проектов, которые вы довели до конца, могу вас уверить, что вы сможете устроиться на начальную позицию в хорошую компанию.

Если есть желание попробовать себя в разработке приложений под iOS, то по большому счету на сегодняшний день существует несколько больших фреймворков для создания приложений. Например: от Apple – UIKit, SwiftUI. От Google – Flutter, от Meta – React Native. Остальные фреймворки или мало популярны или устарели (Например Cordova и PhoneGap, Ionic).

Существуют 2 вида разработки мобильных приложений: нативная и кроссплатформенная. Стоит отметить – для новичков предпочтительнее нативная разработка. В то время как кроссплатформенные подойдут для более опытных разработчиков. Нативная разработка избавит от изучения различий между платформами, позволит сосредоточиться на нюансах разработки мобильных приложений именно для iOS, а не распыляться на все платформы.

Итак, чтобы приступить к разработке своего первого мобильного приложения для iOS, необходимо сделать следующее:

  1. Определиться с идеей и предполагаемым интерфейсом приложения.
  2. Выбрать язык программирования, на котором вы будете писать код. Это может быть Swift или Objective-C. Но Swift предпочтительней, так как он имеет легкий синтаксис и Apple регулярно добавляет новые улучшения.
  3. Выбрать фреймворк, который вы будете использовать. Более современный и легкий для обучения будет SwiftUI, это декларативный (описательный) фреймворк от Apple, или надежный и основополагающий UIKit, это более старый фреймворк, но использующийся в большинстве iOS приложений.
  4. Установить среду разработки Xcode. Это необходимый в разработке инструмент, даже для кроссплатформенной.
  5. Начать претворять в жизнь вашу идею!

По началу знаний и навыков будет не хватать. Поэтому полезно будет воспользоваться открытыми библиотеками и инструментами для iOS (вы легко можете их найти на github).

Из самых популярных библиотек стоит выделить:

  1. Alamofire – для HTTP-запросов и только.
  2. Lottie – какое iOS приложение без красивых анимаций?
  3. RxSwift/Combine – для реактивного программирования.
  4. SwiftDate – Для упрощения работы с датами. Работа на прямую с датами может вызвать множество вопросов особенно для новичков.
  5. - Kingfisher/SDWebImage – для загрузки изображений.

Инструменты:

  1. Git – инструмент для управления версиями вашего приложения. Для упрощения работы можно использовать графические оболочки – Fork, SourceTree и другие.
  2. CocoaPods и Swift Package Manager – менеджеры для установки библиотек.
  3. Firebase – сервис от Google, который поможет вести статистику и работать с БД.
  4. Fastline – для автоматизации загрузки ваших кодов на AppStore.
  5. TestFlight – чтобы устанавливать ваше приложение на телефон и хвастаться перед друзьями.

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

Устаревшие технологии

В разработке на iOS есть инструменты и фреймворки, которые, несмотря на свою предыдущую популярность, становятся устаревшими. Например, RxSwift и SnapKit были незаменимыми инструментами для реактивного программирования и упрощения работы с AutoLayout соответственно. Однако с появлением SwiftUI и Combine, эти технологии уходят на второй план, поскольку новые инструменты предлагают более интегрированные и эффективные способы достижения тех же целей.

Библиотеки и фреймворки, которые нужно знать в 2024 году

  1. SwiftUI полностью изменяет подход к разработке интерфейсов на всех устройствах Apple, предлагая более простой и мощный декларативный синтаксис. Это первое, что должен освоить начинающий разработчик, стремящийся к созданию современных и адаптивных приложений.
  2. Combine играет ключевую роль в управлении асинхронным кодом и событиями в приложениях iOS, используя концепции реактивного программирования. Освоение этой библиотеки позволяет создавать более чистый и понятный код для работы с данными и событиями.
  3. Swift Composable Architecture (TCA) предлагает структурированный подход к построению приложений, сосредоточиваясь на управлении состоянием и эффектами в декларативном стиле. TCA облегчает тестирование, поддержку и масштабирование приложений, делая его ценным инструментом для современного iOS-разработчика.

Важные инструменты разработки

  1. Xcode остаётся неотъемлемой частью экосистемы разработчика на iOS, предоставляя все необходимые инструменты для разработки, отладки и распространения приложений.
  2. Swift Package Manager значительно упрощает управление зависимостями, позволяя легко интегрировать и обновлять библиотеки и фреймворки в проектах.

В iOS разработке на сегодня есть два основных фреймворка для создания интерфейсов: старый добрый UIKit и более свежий и модный SwuftUI. И перед новичками часто стоит задача - какой же из них лучше изучать, чтобы быстрее найти работу?

Короткий ответ на вопрос - лучше знать оба. :)

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

Еще, по моему опыту, много проектов сегодня используют фреймворки для реактивного программирования (в основном, Combine и RXSwift). Далеко не все джуны их знают, поэтому изучить их основы точно будет плюсом. Начать советую с Combine - это нативный фреймворк Apple, который, как мне кажется, постепенно вытесняет RXSwift.

Что касается базовых инструментов для разработки и командной работы - в 2024 году вряд ли что-то кардинально изменится. Уверенное пользование Xcode, git, основы работы с Figma - все это точно пригодится в любой команде.

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

Если вы хотите присоединиться к числу экспертов и прислать ответ от вашей компании или лично от вас, то пишите на experts@tproger.ru, мы расскажем, как это сделать.

Следите за новыми постами
Следите за новыми постами по любимым темам
726 открытий3К показов