Кейс из России: Как за 3 месяца стать iOS-разработчиком и попасть в топ App Store Статьи редакции

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

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

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

Как это возможно? На vc.ru часто всплывают заголовки вроде «Если вы хотите научиться программировать, будьте готовы потратить на это 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.

Форма просьбы так далеко спрятана на сайте скорее всего для того, чтобы ей пользовалось меньше разработчиков. Причиной просьбы выбираем Time-Sensitive Event и пишем, что «у нас, вообще-то, уже началась запланированная рекламная компания, и мы тут деньги теряем!». Если вы отправляете не новое приложение, а обновляете старое — советую писать, что исправили критический баг и не хотите, чтобы люди его видели.

Итоги

Время

От начала до конца ушло два с чем-то месяца, и если бы периодически меня не заставал «паралич» воли, всё получилось бы несколько быстрее.

Вложения

1 тысяча рублей – подписка на уроки по Swift, 10 тысяч — на все иллюстрации и столько же на вывод приложения в топ App Store с помощью мотивированных закачек.

Показатели

5 тысяч скачиваний за месяц, и больше 1000 долларов «чистыми» за вычетом комиссии и налогов. Средняя оценка — 4,5 балла (причём, это уже вторая версия приложения). Попадание в топ-1 категории «Здоровье и фитнес» и топ-3 отечественного App Store по платным приложениям.

По факту, приложение полностью окупило все вложения и вышло на прибыль уже в первую неделю после публикации.

Планы

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

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

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

wtf am I reading?

Ответить
Развернуть ветку
Иван Метелёв

Автор просто не зарабатывал версткой

Ответить
Развернуть ветку
1 комментарий
Mikhail Zhygarev

Дружище, в Xcode есть кнопочка Assistant editor (по-любому пользовался), и в ней есть функция Preview, она показывает как будет выглядеть твое приложение на экране устройства без запуска приложения. И в ней можно добавлять несколько экранов, чтобы оценить как оно работает на разных диагоналях.

Ответить
Развернуть ветку
Yaroslav Morgachyov

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

Ответить
Развернуть ветку
theLastLetters

"опыт в программировании под iOS был равен «0»". А какой опыт уже имелся? Интересует ЯП.

Ответить
Развернуть ветку
Yaroslav Morgachyov

Был очень скромный опыт в вебе, PHP и JS.

Ответить
Развернуть ветку
4 комментария
Артём Лисовский

Html это не язык программирования

Ответить
Развернуть ветку
Yaroslav Morgachyov

Но ведь я не разу не сказал что HTML это язык программирования. :)

Ответить
Развернуть ветку

Комментарий удален модератором

Развернуть ветку
ilya
а средний срок проверки приложений, как я понял – неделя или две.

давно не так, сейчас средний срок проверки — 1.5-2 дня

Пишите специальную просьбу быстро проверить приложение в Apple

писать можно не чаще чем раз в полгода, и то если есть действительно СЕРЬЁЗНАЯ на то причина. а то могут обидеться.

и не вижу твоего приложения ни по одному релевантному запросу, кроме, собственно "домашние тренировки". поработай над этим :)

а так, супер-круто, конечно.

Ответить
Развернуть ветку
Yaroslav Morgachyov

Огромное спасибо за совет! А писал я им несколько раз подряд. Знаю что так делать нельзя, но вроде не обиделись.

Ответить
Развернуть ветку
Dima Zakharov

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

Ответить
Развернуть ветку
Dima Zakharov

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

Ответить
Развернуть ветку
Yaroslav Morgachyov

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

Ответить
Развернуть ветку
slugge

что будешь делать когда настанет осень?

Ответить
Развернуть ветку
Альберт Галлямов

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

Ответить
Развернуть ветку
1 комментарий
Yaroslav Morgachyov

Извиняюсь за то, что отвечаю вопросом на вопрос... Что такого случится осенью помимо iOS10?

Ответить
Развернуть ветку
3 комментария
Денис Семенов

У приложения всего 27 оценок, я что-то пропустил? Как приложение с такой низкой популярностью выбилось в ТОП?
Это было бы интересней.

Ответить
Развернуть ветку
Денис Семенов

А вообще - есть мысль, что автор продвигается статьей на VC. Тогда - респект.

Ответить
Развернуть ветку
Oleksandr Fisun

Видимо по количеству скачиваний, а не по числу оценок!

Ответить
Развернуть ветку
Alexey Yurkevich

HTML язык программирования? Оо

(сори за троллинг =)

хотя вообще да, молодец парень
А команда где?
один все делал?

Ответить
Развернуть ветку
Yaroslav Morgachyov

Не говорю что HTML язык программирования. А делал всё один, за исключением иллюстраций, их рисовал фрилансер.

Ответить
Развернуть ветку
2 комментария
Kirill Malyshev

Подскажи, пожалуйста, через кого генерил мотивированные закачки?

Ответить
Развернуть ветку
Yaroslav Morgachyov

За этим лучше в Telegram, думаю. @morgachev

Ответить
Развернуть ветку
Msha Balashinoba

Молодец ! На самом деле то же самое по обучению кодить и в уневере,только гугл.Какая прибыль со встроенных покупок?

Ответить
Развернуть ветку
Yaroslav Morgachyov

Сейчас единственную встроенную покупку купили 409 раз ($329). Как я считаю, встроенная покупка "окупилась" благодаря своему названию, ибо в обратной связи не раз фигурировали фразы вроде "Так желанный "Метаболизм"".

Ответить
Развернуть ветку
3 комментария
Evgeny Golanov

Круто! Тоже сейчас учу Swift на swiftbook.ru. Не подскажешь какой-нибудь подробный гайд по изучению интерфейса и функционалу Xcode?

Ответить
Развернуть ветку
Yaroslav Morgachyov

Вот если честно я сам так и не нашел никакого гайда именно по интерфейсу. Поэтому считаю что лучший вариант это подсматривать как обращаются с Xcode в видео-уроках.

Ответить
Развернуть ветку
2 комментария
Sergey Snegirev
приложение прошло четыре проверки за пять дней, а средний срок проверки приложений, как я понял – неделя или две

Время проверки и его тренд легко проверить на, например, http://appreviewtimes.com/ - сейчас это 1-2 дня. Максимум, что я видел - это 9 дней, весна 2015 года, только что вышел Apple Watch и служба проверки завалена проверкой апдейтов и новых апп. Поэтому, если сроки критичны, подумайте, не выпускает ли Эппл чего-то нового в эти дни - будут очереди на проверку.

Ответить
Развернуть ветку
Yaroslav Morgachyov

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

Ответить
Развернуть ветку
Зови меня Крым

Пожалуй куплю, поддержу разработчика. Да и мне не помешает такое приложение :-D

Ответить
Развернуть ветку
Алексей Тарасов

Разве в Крыму работают платежи?

Ответить
Развернуть ветку
2 комментария
Oleg Snopov

Вложения

1 тысяча рублей – подписка на уроки по Swift, 10 тысяч — на все иллюстрации и столько же на вывод приложения в топ App Store с помощью мотивированных закачек.

А как же лицензия разработчика?
У Вас Макбук?

Хорошая статья, хоть и не достаёт пару моментов. Спасибо

Ответить
Развернуть ветку
Yaroslav Morgachyov

Лицензию разработчика я упустил, потому-что считаю что это затраты не на приложение, а на работу в целом. Я мог бы написать что затраты на лицензию составили 7 тысяч, но через месяц я выпускаю еще одно приложение, и значит ли это что теперь затраты на лицензию в каждом приложении 3500?

У меня MacBook и iMac. Работаю с iMac.

Ответить
Развернуть ветку
Евгений Онянов

10 тыр на вывод в топ AppStore? Серьезно? Не верю. Приложение ни в одном топе не видел. Статья фэйк.

Ответить
Развернуть ветку
Евгений Онянов
Ответить
Развернуть ветку
2 комментария
Юрий Другач

Круто, спасибо за статью

Ответить
Развернуть ветку
Роман Горбачёв

Красавец, что еще сказать. Удачи!

Ответить
Развернуть ветку
Богдан Боярский

Спасибо за статью! Вдохновился самостоятельно изучать Swift :)

Ответить
Развернуть ветку
Oleksandr Fisun

А я свое первое приложение писал около 6 месяцев (но это больше из-за того, что работал над ним ~10 часов в неделю). И тоже без знаний программирования под iOS. Правда у него нет таких впечатляющих результатов. С февраля месяца - около 10 загрузок в месяц: https://otherf.com/shoptracker/
Сейчас делаю вторую версию с большей функциональностью и измененным дизайном.
Правда тоже, трачу на нее мало времени :(

Ответить
Развернуть ветку
Yaroslav Morgachyov

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

Ответить
Развернуть ветку
Marat

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

Ответить
Развернуть ветку
Alex Maslou

Придумывать все умеют, голая идея ничего не стоит, а вот начать что-то делать для реализации - это плюс. Просто начни

Ответить
Развернуть ветку
8 комментариев
Maksym Kholod

Молодец!) есть предложение, maxkholod@mail.ru

Ответить
Развернуть ветку
Yaroslav Morgachyov

Написал.

Ответить
Развернуть ветку
Амин Бенариеб

Супер, купил приложение, кстати формой для ускоренной проверки наскоко помню можно только один раз (или оч редко) воспользоваться, ты сколько раз отправлял?

Ответить
Развернуть ветку
Yaroslav Morgachyov

Я её отправлял 4 или 5 раз кажется. Apple так делать настоятельно не рекомендует, но на меня вроде-бы не обиделись. Сначала писал что у меня запланированная рекламная кампания, а потом оставшиеся проверки что "рекламная кампания уже идет и деньги уходят в никуда".

Ответить
Развернуть ветку
Максим Ваганов

закачки и топы это конечно круто
но как там retention rate, active users? какая часть скачавших действительно пользуется приложением?

Ответить
Развернуть ветку
Yaroslav Morgachyov

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

Ответить
Развернуть ветку
Александр Милихин

Интересно! Я на год старше, но в свои 21, изучил андроид за пол года и имею по 10к$ в месяц и 2 млн инсталов за пол года, может мне тоже отправить статью?)))

Ответить
Развернуть ветку
Yaroslav Morgachyov

Да! Было бы очень интересно почитать.

Ответить
Развернуть ветку
Амин Бенариеб

Напиши :)

Ответить
Развернуть ветку
Павел Николаев

Скачал

Ответить
Развернуть ветку
Иван Гнатюк

Насчёт view помню тоже когда то столкнулся. И даже сохранил ответ:
   Not a day goes by that I don't see some version of this question. This is due to auto layout. If you set the frames of any objects you created in the storyboard or xib (with auto layout on), they will revert to their size and positions defined by their constraints whenever the view needs to be redrawn.

Менять frame у view, созданного в IB нет смысла, только transform или layer

Ответить
Развернуть ветку
Philip Vasilchenko

Менять view руками не стоит, только если используется AutoLayout. Не важно, из кода интерфейс создаётся или из IB.

Ответить
Развернуть ветку
2 комментария
Дмитрий Самородинов

Отлично. Вы молодец. Есть что обсудить. samorodinov@gmail.com

Ответить
Развернуть ветку
Grigoriy Malyshev

хм. ни слова про приложение "seven", в народе "семь минут"

Ответить
Развернуть ветку
Artem B

Хорошая статья. Сейчас сам собираюсь воплотить в жизнь один сервис, правда веб и благодаря твоей статье уже знаю на чем писать для него приложение под iOS.

Кстати, на Swift можно писать, есть твой ПК на windows?

Ответить
Развернуть ветку
Dmitriy Bondarenko

Hackintosh можно поставить.

Под iOS разработку нужен MacOS с Xcode

Ответить
Развернуть ветку
Andrey Petrosyan

Молодца

Ответить
Развернуть ветку
Читать все 89 комментариев
null