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


Разработчик приложений iOS - одна из самых «молодых» IT-специальностей: средний возраст кандидатов на эту позицию - 25 лет. Для сравнения: средний возраст соискателей должности разработчика приложений Android - 28 лет. Если сравнивать заработок, предлагаемый разработчикам мобильных приложений iOS и Android, то преимущество у разработчиков iOS: их потенциальный доход превышает зарплатные предложения, которые предлагают разработчикам Android, в среднем на 6%.

В должностные обязанности разработчика приложений iOS входит:
разработка мобильных приложений под iOS;
поддержка мобильных приложений;
участие в отладке и тестировании приложений;
размещение приложений в AppStore.

Заработная плата и требования работодателей

Средняя заработная плата разработчика приложений iOS в Москве составляет 100 000 руб., в Санкт-Петербурге - 80 000 руб., в Волгограде - 48 000 руб., в Воронеже - 50 000 руб., в Екатеринбурге - 64 000 руб., в Казани - 50 000 руб., в Красноярске - 57 000 руб., в Нижнем Новгороде - 55 000 руб., в Новосибирске - 63 000 руб., в Омске - 50 000 руб., в Перми - 57 000 руб., в Ростове-на-Дону - 57 000 руб., в Самаре - 57 000 руб., в Уфе - 50 000 руб., в Челябинске - 58 000 руб.

Начинающими разработчиками iOS могут стать студенты технических и профильных вузов, обладающие хорошей теоретической подготовкой. Соискателям необходимо знать CSS и HTML, принципы объектно-ориентированного программирования, среды разработки Cocoa/Xcode, языки программирования Objective-C/С++. Стартовый оклад начинающих разработчиков в Москве составляет от 45 000 до 60 000 руб. , в Санкт-Петербурге - от 40 000 до 50 000 руб.

Вход в следующий зарплатный диапазон открыт специалистам со стажем разработки приложений под iOS не менее 1 года. Востребован опыт работы с паттернами проектирования, системами контроля версий. От соискателей требуется знание iOS SDK, языков программирования C/C++, шаблонов проектирования, распространенных библиотек, iOS Human Interface Guidelines, принципов клиент-серверной модели взаимодействия приложений. Необходимо уметь разбираться в чужом коде и владеть «техническим» английским. Дополнительным плюсом при трудоустройстве послужит знание методик организации процесса разработки в команде и опыт практического применения распространенных библиотек. Зарплатные предложения для соискателей, соответствующих указанным требованиям, достигают 80 000 руб. в Москве, 65 000 руб. в городе на Неве.

Более высокий доход работодатели предлагают соискателям с высшим образованием и опытом разработки под iOS от 2 лет. От кандидатов требуется отличное знание библиотек и архитектуры iOS, правил и требований к релизам в AppStore, скриптовых языков (Ruby, Python). Основным свидетельством профессионализма для работодателей является портфолио завершенных и опубликованных в AppStore приложений. Также востребованы навыки работы с Core Data, опыт разработки клиент-серверных приложений, опыт оптимизации приложений, рефакторинга чужого кода. Конкурентным преимуществом при трудоустройстве пользуются специалисты, способные разрабатывать приложения под другие платформы. Зарплатные предложения в этом диапазоне в Москве достигают 120 000 руб. , в северной столице - 100 000 руб.

На максимальный заработок могут претендовать соискатели со стажем разработки под iOS более 3 лет и успешным опытом работы в стартапах. Также необходимы навыки разработки сложных пользовательских интерфейсов, архитектуры приложений. Зарплатный максимум для разработчиков iOS в Москве составляет 200 000 руб. , в Санкт-Петербурге - 150 000 руб.

Регион Диапазон I Диапазон II Диапазон III Диапазон IV Медиана
(без опыта работы разработчиком iOS) (с опытом работы от 1-го года) (с опытом работы от 2-х лет) (с опытом работы от 3-х лет) (средняя заработная плата)
Москва 45 000 - 60 000 60 000 - 80 000 80 000 - 120 000 120 000 - 200 000 100 000
Санкт-Петербург 40 000 - 50 000 50 000 - 65 000 65 000 - 100 000 100 000 - 150 000 80 000
Волгоград 20 000 - 29 000 29 000 - 38 000 38 000 - 58 000 58 000 - 95 000 48 000
Воронеж 25 000 - 30 000 30 000 - 40 000 40 000 - 60 000 60 000 - 100 000 50 000
Екатеринбург 30 000 - 38 000 38 000 - 51 000 51 000 - 77 000 77 000 - 130 000 64 000
Казань 25 000 - 30 000 30 000 - 40 000 40 000 - 60 000 60 000 - 100 000 50 000
Красноярск 27 000 - 34 000 34 000 - 46 000 46 000 - 68 000 68 000 - 115 000 57 000
Нижний Новгород 25 000 - 33 000 33 000 - 44 000 44 000 - 66 000 66 000 - 110 000 55 000
Новосибирск 28 000 - 38 000 38 000 - 50 000 50 000 - 76 000 76 000 - 125 000 63 000
Омск 25 000 - 30 000 30 000 - 40 000 40 000 - 60 000 60 000 - 100 000 50 000
Пермь 25 000 - 34 000 34 000 - 46 000 46 000 - 70 000 70 000 - 115 000 57 000
Ростов-на-Дону 25 000 - 34 000 34 000 - 46 000 46 000 - 68 000 68 000 - 115 000 57 000
Самара 25 000 - 34 000 34 000 - 46 000 46 000 - 68 000 68 000 - 115 000 57 000
Уфа 25 000 - 30 000 30 000 - 40 000 40 000 - 60 000 60 000 - 100 000 50 000
Челябинск 25 000 - 35 000 35 000 - 46 000 46 000 - 70 000 70 000 - 115 000 58 000

Портрет соискателя

94% кандидатов на позицию разработчика iOS - мужчины. Молодежь в возрасте до 30 лет составляет 73% от общего числа претендентов. 74% соискателей имеют высшее образование. 29% специалистов владеют английским языком на свободном или разговорном уровне.

Код для вставки в блог

Разработчик приложений iOS

Исследовательский центр портала Superjob в апреле 2015 года изучил предложения работодателей и ожидания претендентов на позицию «Разработчик приложений iOS» в 15 городах России. разных платформах.

Какие правила проектирования нужно освоить?

Разработчик под ios должен освоить MVC (Model-View-Controller) - определяет, как данные отображаются и обновляются для пользователя. А также паттерн делегирование - с его помощью вы сможете рациональнее переиспользовать код. Все это нужно для того, чтобы создавать интуитивно понятные пользователю приложения, что очень важно для его прибыльности.

Для чего iOS-developer’у нужно освоить GitHub?

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

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

iPhone разработчик - это не просто программист, который идеально знает Swift и Objective-C. Вы должны смотреть на процесс разработки приложения шире и обладать необходимыми навыками для того, чтобы делать первоклассные проекты. Поэтому, кроме того, чтобы учить языки программирования, мы советуем изучить создание приложений в целом и начинать практиковаться:)

Например, один из наших разработчиков в начале своего пути ходил по разным собеседованиям на разные должности, переписывал вопросы, которые ему задавали и обучался самостоятельно: “Я считаю, что книги не помогают - они хороши, когда у тебя есть объем знаний и ты хочешь его структурировать. Поэтому лучше всего ставить цель, начинать с малого и двигаться.”

Для того, чтобы попасть в Artjoker, кроме навыков, описанных выше, нужно:

    • Следовать принципам SOLID, DRY, YAGNI
    • Использовать менеджеры зависимостей CocoaPods (Carthage)
    • Хорошо понимать GIT flow
    • Работать с базами данных (CoreData, SQLite или Realm)
    • иметь опыт написания клиент-серверных приложений (знание AFNetworking, Alamofire, Apollo GraphQL приветствуется) работать с багтрекинговыми системами

Разработка мобильных приложений для ios - один из профилей команды Artjoker, так что развивайтесь, прогрессируйте и приходите к нам - наши тимлиды помогут вам вырасти в настоящих сеньоров:)

Если вы хотите узнать больше о жизни и работе в Artjoker, читайте "50 фактов о работе в Artjoker и смотрите видео:)

20-летний разработчик Ярослав Моргачёв написал для сайт колонку о том, как за три месяца научился разработке iOS-приложений на языке Swift, выпустил приложение для фитнеса и попал в топ-1 категории «Здоровье и фитнес» и топ-3 по всем платным приложениям App Store.

Не так давно моё первое приложение «Тело в лето » влетело в топ-1 категории «Здоровье и фитнес» и топ-3 по всем платным приложениям App Store.

За полтора месяца публикации его скачали 5 тысяч раз, и на протяжении всего этого времени оно остается в подборке «Игры и приложения по 15 рублей» от Apple.

Как это возможно? На сайт часто всплывают вроде «Если вы хотите научиться программировать, будьте готовы потратить на это 10 лет своей жизни». И да, в этом есть доля правды.

Дело лишь в том, что за 10 лет вы не просто научитесь программировать, а станете настоящим профессионалом в этом деле, который способен как гуру отвечать на StackoverFlow.

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

Итак, я полез в дебри программирования.

Шаг первый. Зарождение идеи

Не буду скрывать, что кое-какой опыт в работе над проектами у меня был. Тут можно вспомнить и о проектах в сфере дизайна, и об агентстве рекламы в Twitter twiPR, которое мы запустили три года тому назад (и которое вскоре закрылось), и о многом другом.

В общем, навык запуска и вывода проектов в свет уже был прокачан, пускай и на начальном уровне. Но движение конкретно в сторону разработки приложений началось с Степана Светлого о приложении «Мотивация дня».

После прочтения меня посетила интересная мысль: в отличии от веба, в App Store действуют другие правила.

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

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

Шаг второй. Ищем, как будем учиться

Как я говорил, мой опыт в программировании под iOS был равен «0». Поэтому – вначале был Google. Вообще, если вы хотите назвать себя разработчиком (вас очень не будут любить за это «нормальные» разработчики, но это вы поймете позже), вам придется научиться получать информацию не от преподавателя.

Вы будете находить десятки и сотни строк кода на самых различных ресурсах, и да, в большинстве случаев никто не описывает «как эта штука работает». Поэтому будьте готовы разбираться во всем сами.

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

Возможно, он будет сложен вам на старте, когда только предстоит понять, по каким принципам он работает. Дальше - все трудности описывает фраза: «Я знаю, как это должно происходить программно, но я не знаю, как это написать». Тут вас спасёт уже упомянутый Google.

Касательно поиска – большинство кода, который вы будете находить, будет написано на Objective-C. Это потому, что Swift - относительно молодой язык, а до него весь App Store был в приложениях, написанных на Objective-C. Сейчас в магазине приложений доступно около 2 млн приложений, и только 100 тысяч из них написаны на Swift. Это лишь 5%.

Из этого можно сделать предположение что 95% всей информации по iOS-разработке, что вы найдете, - вам не подходит. Но. На этот случай есть крутой переводчик .

Для тех, кого сейчас посетила мысль «А почему бы не учить Objective-C вместо Swift?» - ответьте себе на вопрос: хотите ли вы писать быстро и понятно, или иметь большее количество информации и примеров, но с непонятным синтаксисом и c огромным количеством знаков препинания? То-то же. Поэтому выбирайте Swift.

Шаг третий. Создаем идею и основу приложения

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

Но, чёрт побери, я предпочел разобраться в Xcode исконно русским методом - «тык-тык». Не вышло. Позже я, как человек, который быстро учится на ошибках, перешел к изучению уроков. И начал писать приложение для изучения ПДД. Идея была в том, чтобы не создавать идею. А взять популярную, и воплотить её чуть более круто, чем она представлена сейчас.

Это продолжалось примерно полторы недели. Тогда же я столкнулся кучей вопросов. Как я и писал, ответы на них очень сложно найти в варианте под Swift. Кроме того, я понял, что выбрал слишком неподъёмную для новичка сферу с точки зрения объёма - ПДД. А ведь это теория, тесты на время, игра, в которой даются случайные вопросы до трёх ошибок. Стало очевидным: я буду делать это приложение до конца лета. Слишком долго.

И тут в голову пришла идея №2 - приложение для ежедневных тренировок. В App Store есть тысячи аналогов, но вот что интересно: в топе висят висят простейшие приложения с кнопочкой «Старт». Жмёшь и видишь, что и сколько тебе нужно сделать. Всё.

Почему приложения от Nike и подобные, которые обходят конкурентов по функциональности, не висят в топе? Идея проста, а реализация - слишком сложная.


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

Шаг четвертый. Рисуем «вкусную» обложку

На этапе проектирования «оболочки» приложения в голову пришёл отрывок из книги «Дизайн-мышление в бизнесе» Тима Брауна, где описывается ситуация с покупкой велосипеда.

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

Как я уже говорил, у меня заранее был навык «склепать интерфейс за час». Навык был применён успешно. Если интересно - использовал Sketch 3 в противовес продукту от Adobe, который считаю слишком перегруженным.

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


Шаг пятый. Программируем

Когда вы начнете, вам предстоит разобраться с функцией AutoLayot (это что-то из разряда «программирования мышкой»). Она позволяет сделать так, чтобы одна надпись находилась на одном месте на разных поколениях iPhone и iPad.

Я не нашел стоящих уроков по AutoLayot, а во всех примерах на YouTube его применяют как-то вскользь. Искренне желаю вам удачи и стрессоустойчивости, чтобы не удалить всё связанное с программированием к чертовой матери на этом этапе.

К слову, у меня с этой функцией сразу не сложилось, и я включил её за два дня до конца работы над приложением. Это были два самых скучных дня за всю разработку, потому что они состояли из одной и той же последовательности итераций: «пробуем - смотрим - работает? - повторить».

Отдельного внимания заслуживает момент, когда вам нужно будет заставить какой-то элемент двигаться (например, по нажатию кнопки). Чтобы облегчить будущим разработчикам жизнь, я пишу одну техническую подробность: господа, я тоже пытался двигать View при включенном AutoLayot, и это была ошибкой. Нужно менять Constraint. Потом поймёте, что всё это значит.

Еще один важный совет: в Xcode есть песочница - Xcode Playground. Вы, конечно, можете залезть туда, но я настоятельно не советую: копаясь в ней, можно быстро потерять мотивацию, потому что вы ничего не создаете.

Я сторонник мнения, что человек должен видеть результат своих трудов при обучении, а песочница - это обучение ради обучения. Но есть и хорошая сторона - в песочнице вы сможете познакомиться со Swift в вакууме. Хотя, опять-же, по моему опыту, вам пригодится UIKit, CoreData – и сложность будет в них.

Swift же учится по ходу, и в своем большинстве представляет из себя простой английский - даже не уча Swift можно понять, что сделает строчка prefersStatusBarHidden() -> Bool { return true } .

Итак, я посчитал, что на мой проект у меня должно уйти два дня. Но не тут-то было! Первым был главный экран, и на него ушло 4 часа. Затем я перешел к самому важному - тренировкам.

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

Затем пошли всякие обзоры и описания упражнений, и, наконец - встроенные покупки и настройки (приложение напоминает вам о тренировке в назначенное время).

Как итог: на разработку приложения ушел месяц.

Шаг шестой. App Store Review

Первая попытка отправить приложение на проверку была сразу после того, как я запустил его на своем телефоне и всё проверил. Вполне ожидаемо, я получил отказ. Оказалось, что в моем приложении нет кнопки «Восстановить покупки».

Ок, попытка номер два: добавляем «Восстановить покупки» и отправляем приложение. Снова отказ. Оказывается, в первый раз я проглядел еще и претензию к скриншотам приложения, которые создают «ложные ассоциации с продуктами Apple». На форуме мне посоветовали почитать гайдлайны, в которых я ничего не нашел - либо потому, что плохо искал, либо там действительно ничего нет.

Еще мне скинули скриншот, который создаёт эти ложные ассоциации. Это был экран блокировки.

Слева экран с ложными ассоциациями, справа - сделанный прямо с моего телефона (который приняли)

Изменил скриншоты по образу и подобию тех, что в других приложениях. Убрал название оператора, добавил сигнал и значок Wi-Fi. Угадаете, что было дальше? Отказ.

Пройти, наконец, это Review мне помог уже упомянутый Степан Светлый, который сказал: «Скриншот должен быть именно таким, каким он был бы на реальном девайсе». Возвращаем оператора, добавляем сигнал, Wi-Fi и значок камеры вниз. Отправляем. О, чудо. На утро мне приходит заветное уведомление «Приложение ожидает выпуска разработчиком».

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

Здесь я хочу опубликовать мой личный рейтинг iPhone и Android программистов. Я выражаю свое личное мнение как тестировщика мобильных приложений.
Я не могу сказать, что они лучше всех. Но работать с ними мне нравилось, потому что количество ошибок после выполнения ими той или иной задачи стремился к нулю. Т.е. эти люди делают свою работу качественно без брака. Если ошибка и обнаружена, то число ее переоткрытий практически не превышает одного раза. Ошибка исправляется раз и навсегда. Это достигается хорошим знанием платформы и просто хорошим качеством кода. Чем меньше ошибок, тем меньше тратится время на исправление. Меньше время разработки, значит вы тратите меньше денег на проект.
Я считаю наличие крешей в готовом продукте показателем качества продукта.
Если программа падает и теряет данные, пользователь скачает другую.
Итак, личный рейтинг. Те люди, с которыми я работал.

  1. Любимов Михаил , Разработчик iOS приложений, Sebbia, Ростов-на-Дону. Проект Shoppoints.
  2. Дмитрий , iOS Developer, Fidel.ru
  3. Андрей О iOS developer

Черный список:

  1. D-Systems или Распределенные системы . https://www.free-lance.ru/users/d-systems/portfolio/ Делали первоначально мой проект. Вместо сроков 3 недели это заняло 4 месяца. Ссылаются на то, что я начал тестировать, хотя разработка еще не была завершена. Я получил код очень плохого качества, хотя первоначально требовалось чтобы код был сделан так, чтобы легко написать версию под iPhone. Мне потребовалось много ресурсов чтобы потом делать переделки. Когда об этом было заявлено — они согласились переделать, но дальше молчание.
  2. Индусские программисты. Тот программист, с которым я работал по одному из проектов — число переоткрытий ошибок превышает 3. Приложение падало на каждом шагу… Любой чих за деньги….
  3. [email protected] - или Депинфотех. Не рекомендую связываться КАТЕГОРИЧЕСКИ. Спамят письмами, хотят взяться за любой проект, хотя не имеют ни опыта не разработки. При ставке 20 долларов в час предлагают Junior разработчика. Когда нужно сделать приложение под iOS присылают примеры работ на Android

Когда я был фрилансером, я работал с достаточно многими программистами.

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

  1. Ставка для программистов, у которых нет приложений в App Store — 300 рублей в час. Так или иначе программист будет изучать XCode за ваш счет, если он ничего не писал. Ставка опытного программиста — от 500 рублей в час. Особняком конечно лежит Москва. Тут ставки от 500 рублей и выше….
  2. По качеству программного кода русские программисты превосходят украинских и индийских коллег. По мне лучше взять разработчиков не из Москвы, а из провинции. Новосибирск, Казань…. Это актуально и для фирм, занимающихся разработкой.
  3. Если у вас есть проект, ищите программиста, который делал нечто похожее. Если это финансы — ищите кто делал расчеты. Если это игры — примеры игр. Разработчик будет делать меньше ошибок, если отрасль ему знакома.
  4. Предлагайте оценить сроки по каждой задаче. Если программист тратит на натягивание дизайна 2х кнопок 2 часа — это не ваш программист. Может я и утрирую, но исправление одной ошибки — не более 2х часов. Если ошибка сложная.
  5. Задайте программисту вопрос по математике. Нормальный программист сможет вывести одно неизвестное из формулы.
  6. Спросите работал ли программист с багтрекером, знает ли циклы обработки ошибки. Если работал, сколько переоткрытий ошибок у него обычно было.
  7. Спросите, сколько крешей обычно было в его приложениях под iOS. Почему они случались и насколько быстро исправлялись.

Подбор iOS разработчиков на проект

Если вы заказчик и решили сделать свое мобильное приложение и не знаете, что для этого нужно.
Вы можете обратиться ко мне, я расскажу и помогу найти нужного вам человека или фирму. Следует учесть, что iOS разработчики инди(те которые работают одни) имеют меньшую ставку в час, чем фирмы(ООО). Качество же услуг фирмы может хромать и зависит насколько хорошо поставлены в фирме процессы разработки(есть ли система контроля версий, есть ли багтрекер). Не всегда фирма с большими рейтами для iOS программистов сможет обеспечить достаточно хорошее качество разработки. Все зависит от конкретных людей и иногда инди разработчик даже лучше. С другой стороны фирма обеспечивает договор — гарантию что вас не кинут и работа будет доделана до конца. В случае инди разработчика под iOS я рекомендую поговорить с ним лично, расспросить о проектах, которые он делал.

Контакты разработчиков

В общем если вам нужны контакты мобильных разработчиков, они есть ниже. Просто поделитесь ссылкой в одной из соц. сетей. Там есть и контакты разработчиков и специалистов по продвижению.
Удачи.

Анатолий Ларин
[email protected] мобильный маркетолог, буду подсказывать ^__^ http://touchin.ru

Александр Штучкин
[email protected] !

Николай Додонов
[email protected] Делаем свое приложение.

Полина Витенко
[email protected]
специалист по маркетинговым коммуникациям, очень-очень хочу больше узнать о маркетинге в сфере IT

Online
Дака Мартынюк
[email protected]

Ярослав Сеньшин
[email protected] Пишу первое приложение, поэтому хочется узнать все тонкости

Иван Козлов
[email protected]
Руковожу отделом мобильной разработки

Евгений Валеев
[email protected]
Технический директор мобильной софтверной компании

Алексей Гончаров
Готовим приложение, интересно)

Тимофей Утнасин
[email protected]
Компания FlexyMind — разработка детских развивающих игр для мобильных ОС

Наталия Давыдова
[email protected]
руководитель отдела мобильной разработки компании H&H http://handh.ru

Дима Орлов
[email protected]
Я делаю мобильные приложения

Моисеенков Алексей
[email protected]
основываю свою студию

Маргарита Сырцова, [email protected], директор компании по комплексному созданию облика компании, мотивирует желание развивать направление приложений

Поляков Максим
[email protected]
Я знаю как изменить мир, теперь мне надо понять как лучше на этом заработать.

Марина Виноградова
[email protected]
Мы запускаем скоро мобильное приложение

Даниил Соснин
[email protected]
Готовим мобильное приложение.

Online
Екатерина Жолобова
Жолобова Екатерина, [email protected] Мобильный маркетолог со стажем)

Завьялов Антон, [email protected] Разрабатываю проект для лиги маркетологов с интерактивной поддержкой

Насыров Наиль
[email protected]
Одно из направлений проекта в аспирантуре ИТМО

Владислав Александрович
Владислав Карбовский, разработчик
[email protected]

Александр Хитущенко
[email protected]
Руководство проектом мобильного приложения для туристов т

Илья Чернецкий
Илья Чернецкий [email protected] делаю мобильные приложения (http://coinkeeper.me, relevanceto.me etc)

Ольга Кабанова
Ольга Кабанова, [email protected], занимаюсь продвижением десктопных и мобильных приложений

Ксения Копылова
Ксения К.([email protected]) и Тимофей М. ([email protected]) — занимаемся разработкой мобильных приложений

Yura Easy
Лобынцев Юрий
[email protected]
руковожу разработкой мобильных приложений

Сергей Шмаков
[email protected]
SMM-менеджер buruki.ru + участвую в разработке нового приложения для buruki.ru для iOS и Android

Петр Фальковский
[email protected]
интересен рынок мобильных приложений

Надя Кошкина
Надежда Кошкина [email protected] — маркетинг IT-проектов; занимаемся разработкой собственного приложения. Леонид Назаров [email protected] — дизайнер интерфейсов.

Марина Калямина
[email protected]
Очень актуальная тема. В голове много идей для создания приложений, хотелось бы послушать советы

Глеб Буров
Глеб Буров, CTO Seedr
[email protected]

Виктор Штефанец
интернет-проекты
[email protected]

Вячеслав Богородицкий
[email protected]
руководитель проектов в веб-студии.
сейчас развиваем направление мобильных приложений.

Евгений Дементьев
[email protected]
Руководитель отдела мобильной разработки «Топфейс»

Иван Балашов
Андрей Маркин [email protected], маркетолог в сфере IT, планируется запуск мобильного приложения.

Online
Денис Каланов
Директор по развитию IT-Доминанты
[email protected]
Планируем запуск мобильного приложения…

Вероника Минина
маркетолог мобильных приложений, UFT
[email protected]
Мотивирует: быть в курсе know how,узнать об опыте коллег, получить новые знания, контакты.

Петр Василевский, Алексей Финагин
[email protected], [email protected]
Разрабатываем мобильное приложение.

Попова Татьяна
[email protected]
Развиваем он-лайн проект, готовим запуск его мобильной версии

Андрей Григорьев
Развиваем мобильное приложение Forex по iOS
[email protected]

Online
Александр Зайцев
Александр Зайцев [email protected] Интересна тема, т.к. сам занимаюсь разработкой.

Владислав Поклонцев
Поклонцев Владислав [email protected]
Разрабатываем первое мобильное приложение.

Вадим Скаржевский
[email protected]
Планирую делать приложение. Хочу узнать тонкости

Яна Кузьмина
[email protected]
Продакт менедер пары мобильных приложений

Сергей Грищёв
Грищёв Сергей
[email protected]
Основатель студии мобильных приложений ShadeApps, у нас вышло уже 2 приложения под iOS — ещё 3 находятся в разоаботке

Екатерина Макарова
[email protected]
Начинающий специалист по продвижению мобильных приложений, очень хочется перенять опыт.

Евгения Филина
e-mail:
[email protected];
[email protected]

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

В сегменте мобильных технологий, без сомнения, лидирует Apple со своим смартфоном iPhone. На прошедшей в сентябре презентации компания из Купертино продемонстрировала уже 7-ю версию мобильного девайса. Вместе с ней Apple представила новую версию мобильной операционной системы iOS 10. Теперь это самая значимая операционка в мире, как и ее предшественницы. Из этого следует, что изучение разработки для iOS - самое выгодное вложение времени и средств.

«Яблочная» экосистема

Сегодня мы займемся разработкой простого мобильного приложения для iOS. Конечно, лучше всего для этого подходит родной Mac. Но если ты сторонник Windows или у тебя просто нет Мака, можно установить операционную систему macOS под виртуальную машину в Windows. На просторах Сети тебе не составит большого труда найти специально заточенную под PC версию macOS, в народе называемую Хакинтош. Смело ставь ее на виртуалку VMware, VirtualBox - на твой выбор. Сразу предупрежу, что на PC-клавиатуре нет части клавиш, которые есть на Mac-клаве, и многие их сочетания нажать в Хакинтоше невозможно. Это изрядно портит настроение. В остальном все описанные ниже операции можно успешно выполнить на Хакинтоше.

Необходимые знания

Чтобы программировать вообще и для iOS в частности, надо довольно много знать. Математика и логика, может, и не понадобятся вначале, но будут востребованы потом. Современные технологии избавили программиста от необходимости досконально знать архитектуру компьютера, однако понимать базовые механизмы, такие как системы счисления, их преобразование, скорость работы подпрограмм или эффективность алгоритмов (большое O), необходимо.

На более высоком уровне iOS-разработчику надо глубоко знать операционную систему macOS и собственно саму iOS. Также тебе обязательно надо освоить «яблочный» язык программирования. Знание Delphi, C++, C# или VB.NET тебе не сильно поможет. У Apple своя экосистема со своими языками: Objective-C и Swift. Конечно, знание C++ еще никому не навредило, программы и вставки на нем встречаются везде, даже у Apple. Но самый используемый по определению Objective-C, просто потому, что появился гораздо раньше (в середине восьмидесятых годов прошлого века), тогда как Swift лишь два года назад (в 2014-м). Apple возлагает большие надежды на новый язык и много инвестирует в него. Для поддержки старого софта используется Objective-C, а новый пишется на Swift. Поэтому тебе неплохо знать оба.

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

Инструменты для разработки

Как ты знаешь, главный инструмент разработчика под macOS и вместе с ней iOS - среда программирования Xcode . Она включает средства для создания приложений для Mac, iPhone, iPad, Apple TV, Apple Watch. Все платформы Apple. Xcode содержит средство построения интерфейса (Interface Builder), редактор кода, поддерживающего все современные средства работы с кодом. Кроме того, не выходя из Xcode, можно протестировать приложение; если оно разрабатывается для внешнего устройства, то его можно запустить в эмуляторе.

В систему включены эмуляторы всех устройств, новые версии которых можно докачать. В дополнение Xcode содержит графические инструменты для анализа производительности приложения, включая средства диагностирования загруженности CPU, использования накопителя (HDD, SDD и другие), нагрузки на графический адаптер (со стороны OpenGL).

13 сентября вышла новая, горячо ожидаемая версия среды разработки 8.0. Стабильные версии можно бесплатно скачать в App Store. Альфы и беты распространяются по подписке разработчика. Восьмая версия вобрала в себя: новую версию языка Swift 3, средство изучения Swift Playground для iPad, новую версию Interface Builder, которая стала быстрее работать и позволяет просматривать макет приложения на разных платформах, без необходимости развертывать на симуляторе само приложение.

На Xcode 8 можно разрабатывать приложения для macOS Sierra, iOS 10, watchOS 3 и tvOS 10. Имеются все SDK. Новые версии операционок стали последовательно появляться аккурат после презентации Apple, состоявшейся в начале сентября.

Язык Objective-C

Кратко вспомним основные сведения о языке. Objective-C - компилируемый объектно ориентированный язык программирования, используемый для написания приложений под «яблочные» системы. Представляет собой надмножество или, другими словами, надстройку над C, унаследовав от последнего синтаксис, типы данных, способы контроля за ходом выполнения программы и добавив к нему возможности объектно ориентированного программирования - описание классов и методов.

Как в C++, в Objective-C центральную роль играют объекты, с которыми связаны четыре парадигмы: абстракция, инкапсуляция, наследование, полиморфизм. Язык C++ является строго типизированным, тогда как Objective-C - слабо типизированный или обладает динамической системой типов данных. Подобно Smalltalk, в Objective-C объектам посылаются сообщения. Это исключительная возможность динамических языков, так как тип объектов проверяется во время исполнения программы, а не во время компиляции.

Описание языка Objective-C занимает не один объемистый томик. Поэтому, чтобы получить объективные знания, удобно пройти курс « ». Целый раздел курса посвящен этому языку.

Разработка приложения для iOS

В качестве семпла мы разработаем весьма простое приложение. Не будем отступать от священной традиции, поприветствуем мир. Однако с учетом того, что у нас графическое приложение, мы немного разнообразим его: добавим кнопку, нажимая которую будем отображать или скрывать надпись «Hello, World».

Запусти Xcode, в появившемся окне выбери Create new project или в главном меню File -> New -> Project. В следующем окне будет предложено выбрать целевую платформу и тип приложения.


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

Типы приложений

  • Заготовка Single View Application предназначена для простого приложения с одним экраном. Заготовка включает компонент View Controller, который позволяет настроить вид приложения с помощью конструктора форм Interface Builder.
  • Master Detail Application создает приложение, где в табличном представлении отображается коллекция объектов. После выбора одного из них показываются подробные сведения об этом объекте. Первый вид - мастер, второй - детализация.
  • С помощью Page-Based Application создаются приложения, имеющие несколько экранов, как страницы в книге. Следовательно, из этой заготовки создаются, например, читалки.
  • Tabbed application позволяет создавать приложения, где на каждый экран можно переключиться в любой момент, то есть у каждого экрана есть своя кнопка для его активации, на которой отображается заголовок. В качестве примера можно привести iTunes.
  • Game служит для создания заготовки игры. На выбор предлагаются четыре фреймворка для создания игры: SpriteKit, SceneKit, OpenGL ES, Metal. Вкратце рассмотрим их.
    SpriteKit представляет собой систему для двумерной визуализации и анимации текстурированных прямоугольников - спрайтов. При отображении кадров используется стандартный цикл, кадр выводится после того, как обработку пройдет все содержимое сцены.
    SceneKit - высокоуровневый фреймворк для визуализации трехмерной графики без помощи OpenGL. Он поддерживает загрузку, манипуляцию трехмерными объектами. В него включены: физический движок, генератор частиц и легкий способ скриптования.
    OpenGL ES - стандарт в области компьютерной графики. Позволяет визуализировать 2D- и 3D-сцены. Позволяет описать пайплайн для видеокарты: вершины проходят преобразование, собираются в примитивы, которые растеризуются в двумерное изображение и выводятся на экран. В пайплайн можно включить программируемые шейдеры.
    Metal - представляет собой низкоуровневый API, который позволит тебе выжать все мощности из твоего видеоадаптера. Отлаженные API вместе с предкомпилированными шейдерами и многопоточностью позволяют твоей игре подняться на новый уровень производительности и качества.
  • Sticker Pack Application - новый вид приложений, появившийся в iOS 10 и Xcode 8. Представляет собой набор простых или анимированных изображений, используемых в новом iMessage. Для своего создания не требует кодирования.
  • iMessage Application - новый вид приложений, появившийся в iOS 10 и Xcode 8. Позволяет создавать дополнения для iMessage, например для покупки и загрузки твоего пакета стикеров. Также можно, воспользовавшись API iMessage, создать свой аналог данного приложения, включая проигрывание аудио, видео, использование стикеров и другое.

Создание первого проекта

В качестве заготовки для нашего приложения выберем Single View Application. Поскольку мы не будем разрабатывать большую программу, нам хватит предоставляемой этой заготовкой средств. Нажимаем Next. На следующей странице мастера надо ввести имя проекта, к примеру ShowLab. В ниспадающем списке Language оставим выбранный по умолчанию язык - Objective-C. Далее в ниспадающем списке Devices оставим выбор Universal. Здесь определяется, для какого устройства (iPhone или iPad) создается приложение. Пункт Universal означает для обоих. Снимем флажки Include Unit Tests и Include UI Tests, нам никакие тесты не нужны. Next. Выберем папку для сохранения проекта. Теперь жми кнопку Create.

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


Сначала нам надо создать интерфейс приложения. Для этого одним кликом выбери файл Main.storyboard в списке слева (если этот файл не видно, разверни содержимое папки ShowLab). Правее списка все окно займет Interface Builder. В центре отобразится макет устройства. В правом нижнем углу окна находится панель компонентов. Перетащи оттуда на макет компоненты Label и Button. Выше панели компонентов находится список свойств. Если у тебя он отсутствует, нажми кнопку Show the Attributes Inspector, находящуюся под заголовком окна в правой части интерфейса.

Выдели в макете компонент Label и настрой его свойство Text: в ниспадающем списке оставь выбор Plain, в строку ниже введи нужную надпись, в нашем случае «Hello, World». Если текст не помещается в границы надписи, измени их, перетаскивая маркеры на краях компонента. Чтобы централизовать его по горизонтали, перейди на страницу Size Inspector, нажав на кнопку Show the Size Inspector (справа от Show the Attributes Inspector). На этой странице из ниспадающего списка Arrange выбери пункт Center Horizontally in Container.

Теперь выбери компонент Button, измени его свойство Text на желаемую метку - Switch. Отцентрировать можешь так же, как описано выше.

Создаем связь между графическими элементами и кодом

В Visual Studio (или Delphi) объект в коде создается автоматически в тот момент, когда кладешь визуальный компонент на форму. В Xcode этого не происходит, но это не создает проблем.

Открой содержимое заголовочного файла ViewController.h в отдельном окне, дважды щелкнув на нем. В этом файле находится объявление расширения класса UIViewController, помечается ключевым словом @interface. Такая возможность была добавлена во вторую версию Objective-C. Теперь выполни такой трюк: перемести курсор мыши на компонент - текстовую метку, зажми клавишу Ctrl и левую кнопку мыши. Перемести курсор в окно с кодом (файл ViewController.h), за курсором потянется синяя линия. Отпусти мышь и клавишу внутри описания интерфейса ViewController.

Появится окно создания Outlet’а.


Это свойство объекта, которое ссылается на другой объект (в данном случае визуальный компонент). Тебе надо ввести имя объекта Outlet, по нему ты будешь обращаться к визуальному компоненту, пускай будет lab. Далее выбирается тип объекта, он выбран правильно: UILabel.

Еще ниже в списке Storage выбирается тип ссылки на объект: weak или strong. Если выбрать strong, то объект, на который указывает свойство, будет существовать до тех пор, пока свойство указывает на него, в таком случае он не сможет автоматически удалиться, когда перестанет использоваться. С другой стороны, когда действует слабая ссылка (weak), объект может самоуничтожиться. Итак, выбираем тип ссылки weak и жмем кнопку Connect. В итоге в код добавится такая строка:

@property (weak, nonatomic) IBOutlet UILabel *lab;

Убеждаемся, что Outlet - это свойство.

Теперь создадим Outlet для кнопки. Алгоритм остался прежним. Только для свойства Name надо ввести другое имя, например but. В код будет добавлена строка:

@property (weak, nonatomic) IBOutlet UIButton *but;

В результате имеем два указателя на визуальные компоненты: lab и but - соответственно, надпись и кнопку. Теперь, используя указатели, мы можем манипулировать компонентами в коде.

Затем надо создать обработчик события нажатия кнопки. Для этого в отдельном окне открой файл реализации ViewController.m. Точно таким же образом, как ты перетаскивал линию в заголовочный файл для создания аутлета, от кнопки перетащи линию в файл реализации и отпусти до закрывающей командной скобки - @end. Появится окно для создания события, подобное окну создания аутлета. Видишь разницу: в заголовочном файле создается ссылка на объект, в файле реализации - метод.


Заполни поле Name, его значение представляет имя свойства - метода. Пусть будет onClick. Значение поля Type оставь по умолчанию - id. В языке Objective-C данный тип является предком для всех остальных. В ниспадающем списке Event выбрано по умолчанию событие Touch Up Inside, которое происходит в момент отпускания указателя (мыши, пальца…) над кнопкой, то есть заключительная стадия нажатия кнопки. Это то, что нам нужно. В списке Arguments оставим значение по умолчанию: Sender - это объект, отправивший данный сигнал, в нашем случае им всегда будет кнопка. Жмем кнопку Connect. В итоге будет добавлен следующий код:

- (IBAction)onClick:(id)sender { }

Минус в начале означает закрытый метод (private). Ключевым словом IBAction помечаются события (методы) визуальных компонентов из Interface Builder.

Между командными скобками напишем выполняемый при нажатии кнопки код:

Lab.hidden = !_lab.hidden;

В этой строчке кода мы инвертируем значение свойства hidden. Оно имеет тип BOOL, который располагает двумя значениями: YES - истина и NO - ложь (несколько непривычно Windows-программерам, где true и false).

Обрати внимание на символ подчеркивания, стоящий перед именем объекта - надписи (_lab). Без него компиляция завершится с ошибкой. Символ подчеркивания добавляется автоматически для объектов, содержащихся в других объектах; то есть в данном случае объект lab содержится в объекте ViewController. Раньше это было условное правило, используемое для различия объектов, объявленных в качестве членов класса, и локальных объектов. А теперь это строгое правило, реализованное в компиляторе языка.

Сейчас можно скомпилировать приложение и запустить его на симуляторе. Мы выбрали симулятор для iPhone 7, входящий в Xcode 8. Кнопка компиляции и запуска представляет собой черный прямоугольник и находится на панели вверху интерфейса.

После компиляции приложения, запуска симулятора и загрузки нашего приложения на экране симулятора отобразится его интерфейс: надпись «Hello, World» и кнопка Switch. Если нажать последнюю, надпись исчезнет, при повторном нажатии она появится вновь.

Мы сделали очень простое приложение для понимания сути разработки под iOS. Более подробные сведения о создании приложений для iOS на языке Objective-C ты можешь узнать из курса наших друзей из GeekBrains « ». В курсе два месяца отдается на изучение этого языка. Во время первого месяца - вводные темы, а на втором - реальный кодинг профессиональных приложений.

Язык Swift

В 2014 году Apple представила новый язык программирования - Swift. Он быстро стал самым обсуждаемым и наиболее динамично развивающимся языком в мире. Это надежный, безопасный, интуитивно понятный язык для разработки приложений под операционные системы macOS, iOS, tvOS и watchOS для всего парка устройств от Apple. Swift - эффективный язык программирования. Его легче изучать, чем его предшественника - Objective-C, в то же время Swift позаимствовал из него самые удачные идеи. Вместе с тем разработчики сделали языки совместимыми, то есть в одной программе может быть код как на Swift, так и на Objective-C. В мире имеются миллиарды строк кода и сотни тысяч унаследованных программ, написанные на Objective-C, поэтому от его поддержки точно не будут отказываться.

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

Алгоритм на языке Swift работает в 2,6 раза быстрее, чем такой же алгоритм на Objective-C, и в 8,4 раза быстрее, чем на Python. Использование Swift делает процесс разработки программ более гибким и удобным.

Благодаря своему экспоненциальному развитию, 3 декабря 2015 года язык Swift был передан в сообщество открытых исходников. При этом Apple строго следит за его развитием, организовав комитет для его разработки. Теперь Swift доступен не только в системах Apple, но также в Linux. Все дополнительные инструменты для работы с языком, включая отладчик, стандартную библиотеку, менеджер пакет, тоже свободные и открытые.

За этим языком будущее. Более подробные сведения о нем ты сможешь узнать из упомянутого курса от GeekBrains « », в нем целый месяц отведен на изучение данного языка программирования.

App Store

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

Итоги

Мы разработали простое приложение для мобильной операционной системы iOS, используя для этого систему программирования Xcode вместе с языком Objective-C. Протестировали готовое приложение на симуляторе iPhone 7. Мы узнали, как построить пользовательский интерфейс с помощью Interface Builder, как связать графические элементы с кодом приложения, как создать обработчики событий. Познакомились с основами Objective-C. Кроме того, мы обратили внимание на перспективный язык Swift, используемый для разработки мощных и безопасных приложений для «яблочной» экосистемы.

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

Это достойный курс: пройдя его, ты точно не потратишь время зря. Он начинается с двух подробных курсов по языку Java, затем следует изучение базового программирования под мобильную операционную систему Android. Далее курс по базам данных в общем и языку SQL в частности. Затем углубленный курс по разработке профессиональных приложений для Android. После этого вектор изучения перейдет в сторону Apple-систем: два подробных курса по языку Objective-C и полезный курс по Swift.


Лекции курса ведут профессиональные преподаватели, имеющие большой опыт в разработке программного обеспечения. Если что-то непонятно, можно, не откладывая, задать вопрос. Вообще, обучение на GeekBrains - живой процесс, можно общаться, задавать вопросы, помогать с ответами. Для проверки полученных знаний преподаватели выдают домашнее задание, которое затем проверяется. После прохождения обучения тебя ждет гарантированная стажировка в IT-компании. А дальше все зависит от тебя, если ты покажешь себя как грамотный специалист, тебя пригласят на работу.

Специальный проект с компанией