Полезные ресурсы, чтобы прокачаться в iOS-разработке

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

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

Расскажу, что пригодится разработчикам на разных уровнях погружения в iOS.

Почему разработка для iOS — топовое направление для развития и какой путь проходит разработчик в Яндексе, читайте в интервью с ведущим разработчиком команды мобильного SuperApp Александром Денисовым.

Для начинающих

Первый вопрос, на который нужно ответить: UIKit или SwiftUI? Я считаю, что, к сожалению, единственно верного ответа нет. Эти два подхода кардинально различаются: UIKit — императивный, SwiftUI — декларативный. Стать экспертом сразу в двух технологиях не получится. Если учить одновременно, в голове всё смешается. А выйти на приемлемый уровень разработки возможно, только приложив уйму усилий для каталогизации получаемых знаний.

UIKit старше, гораздо стабильнее и используется повсеместно. С ним вам, скорее всего, будет проще найти первую работу. Но если смотреть на вектор движения, то компания скорее избавляется от UIKit. Думаю, что в ближайшем будущем SwiftUI станет стандартом индустрии.

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

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

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

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

  • SwiftUI Stanford CS193P — курс 2021 года с упором на SwiftUI. В 2023 выпускался с незначительно обновлённой информацией (добавились главы про Actor-ов), но из видеоряда — только запись экрана ноутбука. Так что смотреть приятнее версию 2021 года.

  • UIKit-курс. Выпускался в 2018 году, уже несколько устарел, но даёт неплохое представление об азах UIKit.

  • Школа мобильной разработки от Яндекса, 2023. Самая актуальная запись лекций. Также выходила в 2021 году.

В качестве как альтернативы, так и дополнения к курсам порекомендую книги:

  • The Swift Programming Language. Это библия Swift-разработчика. Бесплатная документация по языку от Apple. Книга разбита на несколько частей: сначала идёт краткий обзорный тур по возможностям Swift, затем — подробная документация и справочные материалы, описывающие грамматику языка.

  • Swiftbook — это перевод вышеупомянутой книги The Swift Programming Language.

Для опытных

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

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

  • Kodeco (бывший raywanderlich.com) — множество материалов как для изучения частных областей iOS-разработки, так и для погружения в тонкости разработки под альтернативные платформы. Большая часть контента доступна по подписке (недешёвой), но есть и бесплатные публикации. Отдельно стоит обратить внимание на курс по современной многопоточности.

  • Objc.io — портал с внушительным количеством обширных материалов про тонкости разработки под iOS. Большинство материалов комплексные и включают в себя как книги, так и видеолекции и репозитории проектов к ним.

  • Advanced Swift — мастрид для любого профессионала.

  • Point-Free — регулярно публикуемые видео, исследующие разнообразные темы: функциональное программирование, UDF-архитектуру (авторы TCA) и множество других продвинутых практик. Часть контента доступна бесплатно. Для лучшего понимания рекомендуется смотреть выпуски в порядке выхода.

  • «Код Воробья» — есть как туториалы, так и ссылки на полезные библиотеки от автора и сообщества. Я рекомендую марафоны по UIKit/SwiftUI.

  • Kavsoft — канал с примерами использования SwiftUI: не абстрактных форм и кнопок, а сложных интерфейсов из реальных приложений. Чего стоит только анимированный header как в Spotify.

  • Medium — детальные туториалы чуть ли не по любой теме, связанной с разработкой под iOS.

  • Swift by Sundell — статьи, новости и подкасты с разбором базовых и продвинутых техник разработки.

Для разработчиков любого уровня

Чтобы не пропускать важные релизы, следить за новостями iOS-разработки (и не только), а также участвовать в жизни комьюнити разработчиков, я рекомендую вступить в чаты и подписаться на новостные рассылки:

  • iOS Good Reads — ежедневные статьи, видео и новости, связанные с iOS-разработкой.

  • iOS Dev Weekly — еженедельная рассылка полезностей по iOS, Xcode, Swift на английском.

  • AppTractor — дайджест статей по мобильной разработке: iOS, Android, Design и связанные темы.

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

Бонус!

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

Краткий пересказ от YandexGPT