ТЕКСТ: ДАНИЛ ЯКОВЛЕВ Хочу поделиться своей историей разработки программы. Хотя я давно пользуюсь Mac, идея создания программы пришла нескоро. Уже не помню как, но в декабре 2011 года я наткнулся на Apple Developer Program. Меня сразу же привлекло то, что я могу самостоятельно начать разработку программы всего за 100 долларов. В добавку это стало отличным поводом обновить макбук (на белые макбуки нельзя установить систему новее, чем Leopard).
Буквально в течение недели появился целый список идей о возможных разработках. Идеи возникали на пустом месте, спонтанно. Затем последовал заказ ноутбука (новая модель как раз вышла в конце ноября 2011) и регистрация в программе разработчиков. Наступила самая нелюбимая часть дела: ожидание. К счастью, я присоединился к Apple Developer Program уже через 3-4 дня, виной всему были выходные. А ноутбук пришел уже ближе к Новому году.
Как только запустил макбук, я сразу стал скачивать Xcode – программу для разработки под iOS. После открытия программы меня настигло огромное разочарование. Я смотрел в монитор, как баран на новые ворота – настолько непонятным казался интерфейс Xcode. Желание создавать что-либо моментально пропало. Только после первых дней новогодних праздников я открыл Xcode снова.
Разработка
Я не буду сейчас говорить, какую программу я выбрал и почему, потому что хочу рассказать именно о процессе разработки и о своих ощущениях, которые были бы одинаковыми вне зависимости от моего выбора. Всё дело в том, что я практически не имел дела с языками программирования (если только Лого и Pascal на факультативах информатики в школе). Но я не унывал, потому что точно так же я начинал создавать свой первый сайт. Мои навыки html и php до сих пор не так велики, но своей цели я достиг. Побродив по интернету, я нашел и скачал очень полезную книгу для начинающих разработчиков (Стефан Кочан «Программирование в Objective-C»), да простят меня борцы с пиратством. Последнее издание было только на английском, а перевод на русский старых изданий показался некачественным. В итоге я почувствовал огромную гордость за себя, когда осилил около 500 страниц английского текста, полного компьютерной терминологии. Кстати, после прочтения книги я совсем не «прозрел» и стал писать программу, а лишь понял, что из себя представляет язык Objective-C.
Еще немного поисков в интернете, и, о чудо, передо мной предстает stackoverflow.com (это крупное сообщество разработчиков, готовых в любую минуту помочь коллегам решить трудную задачу при написании программы). Если бы не этот сайт, не писал бы я сейчас свою историю успеха. Большую часть новогодних праздников я, полный энтузиазма, сидел с ноутбуком дома и открывал для себя всё новые и новые возможности Xcode. Он, наконец, поддался, и я понял, что всё, оказывается, не так уж сложно.
В январе 2012 года мне исполнилось 18, я был учеником 11 класса (спасибо, кстати, моим родителям за поддержку и решение проблем с регистрацией в Apple Developer Program). Поэтому сразу же после новогодних праздников, а в моем случае – каникул, в процесс разработки вмешалась учеба. Однако я быстро привык к этому, а мои приоритеты неуклонно двигались в сторону программирования.
Сначала были долгие, около нескольких дней, попытки разобраться с каждой возникающей на пути проблемой, будь то создание хоть какого-то начального интерфейса или простейшая смена окон при нажатии кнопки. Каждая маленькая победа приносила невероятное удовлетворение, заставляя радоваться практически из-за мелочей.
Через несколько месяцев, ближе к апрелю, «скелет» программы был готов. Наверняка была возможность ускорить процесс, но отсутствие опыта и желание устранить все возможные недостатки и ошибки существенно увеличило время разработки. Я взял паузу длиной в месяц – нужно было готовиться к всероссийской олимпиаде. В процессе подготовки папка «Документы» была по каким-то причинам удалена, а впоследствии очищена Корзина. К сожалению, вся программа лежала именно в этой папке. Я был глубоко удивлен, когда уже в начале мая я решил продолжить разработку и Xcode сообщил, что моего проекта не существует. Очень страшно было осознавать, что 4 месяца написания программы ушли коту под хвост. Через пару часов я вызволял файлы из пустой Корзины с помощью замысловатой программы (многие знают, но на заметку: после очищения корзины файлы каким-то образом еще сохраняются в памяти на некоторое время). К счастью, мне удалось восстановить большую их часть. Вздохнул с облегчением.
Казалось, уже можно скоро заканчивать, но основная часть работы только была впереди. Нужен был дизайн, а я человек совсем не творческий. Вдохновившись парой программ, решил сделать всё по минимуму. Никакой графики, только подходящая цветовая гамма.
Дальнейший рассказ требует сообщить о том, что я создавал будильник, который будет задавать вам вопросы, когда вы проснетесь.
Первоначальная версия названия – Question Alarm. В дальнейшем оно показалось мне недостаточно подходящим. Приложение Logos quiz принесло идею – Quiz Alarm. По моему мнению, коротко и ясно. До сих пор не знаю, о чем думают носители английского языка при встрече с моей программой.
Отличие этого будильника от подобных состоит в том, что кроме арифметических вопросов в программе есть и вопросы с картинками. Нужно было придумать вопросы и найти картинки. С картинками проблема – большинство сайтов продают их за деньги, а лицензии очень разнообразные и весьма не понятные, потому что больше говорится об их использовании в СМИ, чем в разработке софта. Я нашел практически бесплатный стоковый сайт и скачал оттуда более сотни подходящих картинок, которые, оказывается, не так уж и просто подобрать.
Как и любой будильник, мой должен был иметь приятные мелодии звонка. После тщательного выбора я выбрал 20 мелодий (из них мне до сих пор нравятся только две – Acoustic и Orchestral, увидите при знакомстве с программой), лучшее из доступного.
Ну и, конечно же, иконка. Идея появилась чуть ли не вместе с идеей о будильнике, но её создание я постоянно откладывал на потом. Нарисована была в фотошопе за десять минут, сам не ожидал, что она будет выглядеть достаточно прилично. А в иконке всего лишь знак вопроса, восклицательный знак, два круга, наложенных один на другой, и аккуратно подрисованные звонки.
Дело близилось к концу, я уже успел закончить школу. Для как можно большего охвата аудитории заказал переводы на несколько языков. Приводил программу в товарный вид, тестировал, устранял ошибки. Вдруг на одном сайте увидел сообщение о лимите в 20 мегабайт, а из-за картинок (в формате png, который так любит Apple) и мелодий программа еле укладывалась в 100! Решение – сократил количество мелодий до 12, сэкономил на качестве и картинок, и звуков. Около 18! И опять я вздохнул с облегчением. Позже, как выяснилось, лимит повысили до 50 МБ, но я решил ничего не менять.
И вот я отправляю на рассмотрение свою программу. Опять моя нелюбимая часть: ожидание. Оно было достаточно долгим, около полутора недель программа находилась в очереди на проверку. В один прекрасный день, в час ночи я получаю сообщение о том, что мою программу начали проверять. Через 2 часа она уже была в App Store. Это подвело конец всем, если так можно сказать, мучениям.
Мораль: создание программы – крайне интересное дело. Не важно, умеете вы это делать или нет, попробовать всегда стоит. Даже ради удивленных возгласов знакомых: «Да? Это действительно твоё имя в App Store? Как тебе это удалось?» На протяжении полугода я никому не рассказывал о том, чем я занимаюсь. И это того стоило. Несмотря на коммерческую составляющую, я бесконечно рад тому, что решил заняться разработкой. Надеюсь, что это не последняя моя программа.
Что же это за будильник?
Давно уже пора начать рассказывать о своей программе. Quiz Alarm – очень простой в использовании будильник. Достаточно установить 5 параметров для того, чтобы будильник сработал корректно. Видел некоторые отзывы к другим будильникам, есть жалобы на то, что он иногда не срабатывает. В моей программе, скорее всего, такого не встретится, потому что я отказался от использования различных уловок для расширения функционала, которые не приветствует Apple.
А вот как вам придется отвечать на вопросы:
Хочу заметить, что вы можете изменить типы вопросов и сложность вопросов.
Легкие арифметические вопросы – это примеры только на сложение и вычитание. К средним и сложным добавляется умножение и деление соответственно. Что касается вопросов с картинками, легкие вопросы – что-то вроде теста с одним правильным вариантом ответа. Средние – ответ будет сразу после вопроса, но часть букв скрыта. А вот на сложные вопросы придется отвечать самому.
Также можно поменять и количество вопросов, которые вам будут заданы. Советую ставить побольше, потому что 1-2 вопросов мало для того, чтобы заставить еще спящий мозг работать. Проверено на себе, будильник достаточно часто помогает проснуться (или, во всяком случае, привести к состоянию бодрости).
Конечно же, для предотвращения тупиковых ситуаций существует возможность получить подсказку. Придется только немного подождать, поэтому не пугайтесь при возникновении окна с обратным отсчетом.
Вот таким получился мой дебют в App Store.
Затем вышла версия для iPad, из-за картинок размер программы подобрался к 50 мегабайтам. Надеюсь, что это не станет существенной преградой для покупателей. Также улучшено качество мелодий и картинок. В планах создание бесплатной версии с ограничением некоторых функций.
Рад выслушать все ваши пожелания и ответить на ваши вопросы.
iPhone + iPad: $0.99 [iTunes link]
Данная история опубликована в рамках рубрики Developer Story, где разработчики делятся секретами своей внутренней кухни.
Источник: