Ты уже пишешь приложения под iOS? Тогда тебе должны быть известны различные варианты разработки. А если в твоей голове только появилась мысль о разработке мобильных приложений под iOS, то за ней должны последовать следующие вопросы:
- какой язык программирования для iOS нужно изучать?
- где брать материалы для изучения?
- нужен ли Mac?
- нужно ли
iOS-устройство ? - какой редактор подойдет для написания кода?
- где учиться на iOS-разработчика?
Статья даст ответы на эти вопросы и поможет достичь поставленной цели.
Операционная система iOS была выпущена компанией Apple в 2007 году. Она не ограничивается iPhone и iPad, но я расскажу о разработке приложений только для этих устройств. Статья разделена на несколько частей:
- Разработка нативных приложений.
- Языки программирования для создания
iOS-приложений . - Среда разработки для iOS.
- Разработка iOS-приложений и игр с дополненной реальностью при помощи фреймворка ARKit.
- Разработка игр при помощи фреймворка SpriteKit.
Кроме нативной разработки существует ещё и кроссплатформенная, когда приложение пишется сразу для iOS и Android на языке, отличном от нативного. Об этом мы поговорим в другой раз, но можете утолить любопытство уже сейчас и прочитать статью главного редактора Apptractor Леонида Боголюбова, написанной для Лайв Тайпинг.
Разработка нативных приложений
Процесс разработки нативного приложения — это написание программы на одном из основных языков iOS-разработки:
Преимущества нативной разработки:
- приложение оптимизировано под платфому iOS, а значит, будет работать быстро и корректно;
- приложение реагирует на нажатия мгновенно, отсутствуют задержки в анимации и при скроллинге контента;
- понятный и простой доступ к аппаратной части устройств — камере, микрофону, акселерометру, геолокации, адресной книге, плееру
и т. д. На этих и других возможностях устройства можно базировать функциональность приложения; - родной для платформы интерфейс. Нативные приложения обычно оперируют «платформенными» элементами интерфейса: меню, навигация, формы и все остальные элементы дизайна берутся от операционной системы и потому привычны и понятны пользователю;
- с каждым обновлением iOS синтаксис языка
Objective-C практически не меняется, поэтому поддержка приложения происходит практически безболезненно — изменить или переписать придётся лишь незначительное количество кода.
Недостатки:
- поддержка приложения на языке Swift. Регулярные обновления версий платформы iOS вынуждают обновлять код, но с приходом пятой версии Swift компания Apple обещает облегчить этот процесс;
- большинство текущих проектов написаны на языке
Objective-C . С каждым годом всё труднее найти программиста, желающего писать на нём, а переписывать проекты на Swift многие компании отказываются, так как это огромный и невероятно трудоёмкий процесс.
Для клиентов студий разработки вопрос о том, за какую разработку платить — нативную или кроссплатформенную — тоже актуален. Кроссплатформенную разработку можно посоветовать тогда, когда бюджет ограничен, нужно узнать спрос на мобильное приложение или если на стороне клиента есть свой
На каком языке пишут приложения для iOS
Разработчики из компании Apple предоставили два варианта:
Objective-C . Ветеран с большой историей, постепенно отходящий на второй план;- Swift. Очень молодой и быстро набирающий популярность среди разработчиков.
Оба языка для создания iOS-приложений относятся к
Objective-C
Язык программирования для iOS приложений, созданный в начале
Плюсы:
- высокая степень поддерживаемости кода: с каждым обновлением изменения в
Objective-C минимальны; - большое количество документации, технической литературы и огромное сообщество. Apple предоставляет и регулярно обновляет официальные книги и ресурсы. Какие именно знания нужны iOS разработчику, ты можешь узнать из нашей статьи;
- быстрый переход с одного из языков семейства C.
Objective-C — это расширение языка С. Это означает, что любой код на С является также корректным кодом и дляObjective-C , нужно только привыкнуть к синтаксису; - совместимость
Objective-C внутри проектов, написанных на Swift, позволит тебе применять два языка одновременно.
Минусы:
- если ты никогда не сталкивался с программированием и решил сразу начать с
Objective-C , то могут возникнуть сложности понимания принципов ООП и нагромождённого синтаксиса. Трудности исчезнут по ходу обучения; - низкая читаемость кода: в начале изучения синтаксис покажется сложным;
- динамическая система типов данных, которая также является плюсом, предполагает возможность появления или пропуска ошибок даже во время компиляции. В частности, затянуть процесс могут опечатки;
- низкая по сравнению с языком Swift производительность;
- взаимодействие с файлами Swift происходит при помощи «моста» (условный адаптер, который переводит код на Swift в формат
Objective-C ), что сильно тормозит процесс сборки.
Примеры приложений, разработанных нашей командой на языке
ИЛЬ ДЕ БОТЭ —интернет-магазин парфюмерии и косметики;- Мой доктор — приложение для молодых родителей и беременных женщин, которым нужна консультация врача в любое время суток;
- Vogue Collections —
интернет-магазин одежды.
Swift
Молодой, мощный и открытый язык программирования общего назначения. Официально представлен компанией Apple 2 июня 2014 года. Сочетает в себе все лучшее от C и
Swift покажется знакомым
Плюсы:
- скорость. Сейчас язык почти на одном уровне с
C++ , и в Купертино обещают, что это не предел; - упрощённая навигация по файлам проекта. В отличие от
Objective-C , который создаёт два файла для объявления и реализации, Swift обходится всего одним. Кроме того, имена методов и комментарии между файлами синхронизируются автоматически; - лёгкая читаемость, поскольку данный язык не построен на C. Например, не нужно ставить точку с запятой в конце строки и писать скобки для окружения выражения внутри if/else. Никаких квадратных скобок, Swift напоминает обычный английский язык, является гораздо более чистым и имеет упрощённый синтаксис;
- лаконичность. Количество кода со Swift становится гораздо меньше. К примеру, для добавления двух строк можно воспользоваться оператором «+«;
- большие возможности по сравнению с
Objective-C . Например, дженерики (универсальные шаблоны). Универсальный код позволит тебе писать гибкие, общего назначения, функции и типы, которые могут работать с любыми другими типами. Ты можешь написать код, который не повторяется и выражает свой контент в абстрактной форме; - полное взаимодействие с кодом, написанным на
Objective-C , позволит тебе применять два языка одновременно; - повышенная безопасность. Swift, в отличие от
Objective-C , строго типизирован, то есть при объявлении именованных параметров нужно явно указывать тип данных, иначе при исполнении кода компилятор вызывает ошибку. Это облегчит процесс устранения багов, поскольку ты можешь решить проблему сразу; - поддержка динамических библиотек. Одно из значимых изменений в Swift — переход от статических библиотек к динамическим, которые по сути являются исполняемыми кусками кода. Они присоединяются к приложению и «связываются» с новыми версиями языка, что позволяет программе работать стабильно.
Минусы:
- Swift постоянно развивается и меняется. Например, вызов метода может измениться после обновления. Благо Apple выстроили этот процесс таким образом, что код написанный на более ранних версиях не будет сломан. Ты только увидишь предупреждение о том, что твой код написан на старой версии, и редактор предложит переход на более новую и поможет выполнить этот процесс построчно;
- взаимодействие с файлами
Objective-C происходит при помощи «моста», который сильно тормозит процесс сборки.
Большая часть проектов нашей компании написана на языке Swift. Вот некоторые примеры:
- Sephora — приложение магазина парфюмерии и косметики;
- Киноголик — сервис для покупки абонементов в кино;
- LIME — приложение магазина одежды;
- Kaspersky Security Pulse — приложение со статьями об информационной безопасности.
C++ (Си плюс)
Компилируемый, статически типизированный язык программирования общего назначения. Поддерживает такие парадигмы программирования, как процедурное программирование,
Один из вариантов такого взаимодействия — это использование диалекта
Наконец, можно использовать
Какой язык выбрать?
Но совсем не знать Objective-C не получится, так как в ходе программирования приложений для iOS он будет встречаться, и тебе придется читать и понимать его.
Что касается языка
Где брать материалы для изучения?
Материалы по языку Swift:
Apple Education предоставляет свои учебники на английском языке совершенно бесплатно. Вот список тех, с которых стоит начать:
- Swift Programming Language;
- Intro to App Development with Swift;
- App Development with Swift;
- путеводитель («методичка») от Apple — Swift Programming Language Guide.
Если нужны учебники на русском языке, то предлагаю:
- Swift. Основы разработки под iOS и macOs Swift 3;
- Разработка приложений в среде Xcode для iPhone и iPad с использованием iOS SDK.
Личная рекомендация — бесплатный курс по Swift от Алексея Скутаренко Swift Марафон, а также группа Вконтакте iOS Development Course. В группе ты можешь посмотреть домашние задания по каждому уроку или получить ответ на свой вопрос.
Материалы по языку Objective-C
Книг от Apple, к сожалению, нет, но есть отличные платные издания:
- Programming in
Objective-C 2.0 — на английском языке; - Программирование на iOS и macOS — на русском языке.
Личная рекомендация — бесплатный видеокурс по
Стоит отметить, что помимо рекомендованных мной видеокурсов, большое количество
как платных, так и бесплатных обучающих материалов по Swift и
Материалы по языку C++
- Язык программирования
С++ . Учебник, который используют в большинстве ВУЗов; - Основы
С++ . Программирование для начинающих; - бесплатный видеокурс по
С++ от канала #SimpleCode.
Источники актуальной информации
Чтобы не отставать от тенденций, не будет лишним ознакомиться со следующим списком больших компаний и огромных личностей, а также подписаться на их твиттер, блоги
- raywenderlich.com. Неисчерпаемый источник бесплатных руководств. Подходит и новичкам, и профессионалам, которым нужно быстро понять работу нового фреймворка;
- NSHipster. Блог дизайнера и разработчика облачного сервиса Heroku, который он ведёт уже не в одиночку. Фреймворки, объекты фреймворков,
Objective-C , Swift, Xcode, важны opensource-проекты — здесь есть полезные статьи про всё; - Natasha The Robot. Отличный блог
iOS-разработчицы Наташи Мурашев. Обязателен всем, кто разбирается со Swift и не только; - Блог
iOS-разработчика студии Plausible Labs Майка Эша. То, о чём здесь говорится, требуются знания чуть глубже базовых; - Little Bites of Cocoa. Блог со всякими полезными руководствами. Новички и опытные разработчики полюбят его за лаконичность постов и широту освещаемых вопросов;
- iOS Dev Weekly. Cрез новостей из мира мобильной iOS-разработки. Приходит в виде почтовой рассылки по пятницам. Куратор — Дэйв Вервер;
- Github известной компании Rambler&Co. Содержит множество интересного из Open source. Также их внутренний спейс и блог;
- Блог про разработку под iOS на «Хабрахабре»;
- Cайт iosgoodreads.ru и канал в Telegram от Rambler. Самые интересные статьи, видео и новости, связанные с разработкой на iOS.
Среда разработки iOS приложений
Самыми популярные среды разработки приложений на iOS, или IDE (Integrated Development Environmetn) — это Xcode от Apple и AppCode от JetBrains.
Xcode
Быстрый редактор, укомплектованный полным набором инструментов для разработки под iOS, macOS и др. Скачивается из App Store бесплатно.
Плюсы:
- IB (Interface Builder). IB — это приложение с набором инструментов для разработки графических интерфейсов, интегрированное в Xcode. Процесс работы напоминает создание дизайна «на холсте». Всю вёрстку можно сделать в IB, а затем связать визуальные элементы с файлом реализации, в котором описана вся логика взаимодействия с ними.
Плюсом Interface Builder является наглядная вёрстка, настраивание стилей, бэкграунда, шрифтов
- симулятор. Предоставляет полный набор
iOS-устройств , на которых можно запустить и протестировать своё приложение; - отладчик. Умеет разбирать визуальную часть поэлементно для поиска ошибок в вёрстке, также поможет отловить баг и разобраться с проблемой утечки памяти. В добавок ко всему отладчик может производить все эти операции и
UI-тесты в «беспроводном» режиме; - встроенная система контроля версий в GitHub. Помимо стандартных функций ветвления, в режиме разделённого экрана позволяет просматривать изменения в различных «ветках»;
- функция имитации геолокации. Незаменима при работе с картой. Имеет «зашитый» набор городов, список которых можно дополнить;
- содержит Swift Playground, так называемую «песочницу», которая позволяет быстро проверить новый алгоритм или графическую рутину (например, несколько строчек кода), не создавая целое приложение;
- может собирать приложение сразу на
iOS-устройство ; - поддержка «тёмной темы» macOS.
Минусы:
- нестабилен. В процессе работы может самопроизвольно закрываться с ошибкой. Проект никак не пострадает, и последние изменения кода не пропадут. Просто перезапусти Xcode и продолжай работать с того момента, на котором остановился;
- зачастую не работает автодополнение (функция дополнения текста по введённой части).
AppCode
Как и Xcode, содержит полный набор необходимых средств для эффективной и удобной работы с языком
Плюсы:
- стабилен. Внезапных закрытий, как в Xcode, нет;
- автодополнение не отваливается и работает быстрее, чем в Xcode;
- интеграция с баг/
issue-трекерами , такими как JIRA, YouTrack, Lighthouse, Pivotal Tracker, GitHub, Redmineи т. д. ; - более подробное описание ошибок и предупреждений;
- может собирать приложение сразу на
iOS-устройство , как и Xcode.
Минусы:
- для сборки приложения всё равно нужен Xcode;
- нет Intreface Builder. Открытие
IB-файла из AppCode происходит в Xcode; - нет визуального отладчика, а также нет беспроводной отладки;
- нет Swift Playground;
- запуск приложения происходит на
Xcode-симуляторе ; - AppCode — платный продукт, для бесплатного ознакомления даётся 30 дней. На момент написания статьи расценки такие: за первый год пользования придется заплатить 199 $, второй — 154 $, последующие — 119 $ (данные взяты с официального сайта);
- обновление языка приходит с некоторой задержкой. В Xcode ты получишь свежую версию ещё на
бета-тестировании .
Иными словами, даже если ты выберешь AppCode в качестве основного IDE, для полноценной разработки мобильных приложений на iOS всё равно нужен Xcode.
Нужен ли Maс?
Да. Для разработки нужна Xcode IDE (Integrated Development Environment — интегрированная среда разработки). Установить Xcode ты сможешь только на Mac. Выбирай из этих вариантов: MacBookPro/Air, iMac, MacPro или Mac mini (самый бюджетный вариант). Не обязательно покупать новый, но чтобы твой Mac мог поддерживать последнюю версию macOS хотя бы два года, советую брать тот, что не старше пяти лет.
Вариант для ознакомления — поставить на свой PC виртуальную машину при помощи, например, VirtualBox. Статья Installing MacOS to VirtualBox подробно описывает, как это сделать. Работать будет медленно, но для «быстрого старта» вполне подойдет.
Нужно ли iOS-устройство ?
Необязательно. IDE Xcode от Apple содержит в себе симулятор устройств. Например, можно выбрать iPhone XR и вживую проверить результат своей работы. К сожалению, симулятор полностью не заменит реальное устройство (например, камера или акселерометр в нём отсутствуют).
Нужно ли учиться на iOS-программиста?
Российские ВУЗы консервативны и с большим опозданием начинают перестраивать свои образовательные программы под мобильную разработку. Поэтому один из лучших и самых быстрых способов научиться писать приложения для Айфона и Айпада — изучать все самостоятельно по книгам и статьям и позже поступить на стажировку в одну из студий мобильной разработки.
Разработка приложений и игр с дополненной реальностью при помощи ARKit
ARKit — фреймворк, разработанный компанией Apple для работы с AR. Что такое AR и как это работает? AR — это технология, которая способна сканировать окружающее пространство и максимально достоверно интегрировать виртуальные объекты в реальную жизнь. Эти самые виртуальные элементы могут отображать специальные устройства, поддерживающие эту технологию:
- cмартфоны и планшеты. В нашем случае — это iPhone и iPad;
AR-шлемы и очки. Одна из последних разработок — очки Magic Leap;- компьютеры.
Сканирование пространства происходит при помощи камеры устройства. Что может
И это далеко не все возможности! При помощи AR разрабатывают обучающие, развлекательные программы и, конечно же, игры:
Классное видео с одной из презентаций Apple, на котором при помощи AR оживает мир, сделанный из конструктора Lego.
Важно! Для разработки требуется iPhone или iPad. Хочу лишь напомнить, что в симуляторе Xcode нет камеры, и без нее не получится отсканировать пространство. В строке arkit из таблицы Device Compatibility ты можешь увидеть полный список устройств Apple c поддержкой ARKit.
Учебные материалы по ARKit:
- ARKit by TutoiralsTutorials — учебник на английском языке;
- Beginning ARKit for iPhone and iPad — учебник на английском языке;
- Mastering ARKit for iOS — видеокурс на английском языке.
Разработка игр при помощи SpriteKit
SpriteKit — это фреймворк, а точнее
Учебные материалы по SpriteKit:
- учебник на выбор с этого сайта;
- видеокурс SpriteKit c нуля.
Важно! Разработка игр для iOS не ограничивается фреймворком SpriteKit. Существует огромное количество движков для создания 2D и 3D игр. Самые популярные из них — Unity и Unreal. А создании
Заключение
Самым актуальным языком мобильной разработки под iOS в 2019 году является Swift. Причина не только в его скорости и лаконичном синтаксисе, но и в том, что он становится стандартом
Это не отменяет необходимости знакомиться с
Как видно,
А если вы поняли, что не готовы самостоятельно работать над