История разработки Hypnomatic

Бывают языки, программировать на которых легко и приятно с первой секунды знакомства. Так вот, Objective-C — точно не один из них! Являясь программистом с десятилетним стажем, я потратил две недели только на написание пробных приложений, чтобы худо-бедно разобраться с тем, как все это работает. Первый месяц работы меня преследовало стойкое ощущение, что всю эту платформу проектировали враждебно настроенные инопланетяне с логикой, абсолютно непохожей на человеческую.

Hypnomatic

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

Программа:

После этого, слегка затянутого вступления, позвольте представиться — меня зовут Стас, и мое первое приложение, написанное вдвоем с моим другом Антоном пару дней назад сменило статус на «Ready for Sale».

Все началось с идеи. У людей (по-крайней мере, у большинства) есть мозг. И есть наука — психофизиология, изучающая его. Те, кто когда-нибудь проходил электро-энцефалографию у невропатолога — сталкивались с этой наукой. Человеческий мозг, излучает слабые сигналы, которые позволяют судить о частоте его работы, именно их мы и видим на ЭЭГ. Частоты эти небольшие: в редких ситуациях превышают 40Гц. Но не стоит проводить аналогию между тактовой частотой процессора и мозга — каждый из миллионов нейронов работает одновременно со своими соседями, что даже при небольшой частоте работы дает гораздо большее число операций в секунду, чем любой процессор.

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

Более того, было установлено, что с помощью звуковой и визуальной стимуляции можно влиять на работу мозга в целом. Была разработана своя методология: цветные вспышки, шумы, бинауральные модуляции звуковых волн — в формате истории разработчика, я не смогу про все это рассказать — Википедия в помощь тем, кого это заинтересовало. Если заинтересовало серьезней википедийного уровня, то можете познакомиться с работами следующих авторов: Ломов, Бурешова, Хьюстон и Хэссет — дальше сами найдете, тема очень объемная.

Своим рождением наша программа обязана совмещению двух факторов:

Мы являемся ярыми приверженцами Apple.
С институтских лет мы оба интересуемся возможностью немного перенастраивать свой мозг.
Помните секретное сервисное меню в Nokia 3310? Для меня это была самая интересная часть мобильника! Именно поэтому тематика «недокументированных» возможностей мозга всегда казалась мне такой привлекательной: гипноз, смена частот.

Для персоналок под управлением Windows программ такого рода хоть отбавляй, но все их объединяет одно свойство: они абсолютно не дружественны и предполагают, что пользователь сам разбирается в тематике — способен сам настроить как звуковую, так и визуальную стимуляцию. Более того, на ПК мне приходилось использовать одновременно несколько программ — одну, генерирующую звуки, и еще две, генерирующие картинки. Под Mac я таких программ вообще не нашел.

Вот мы и решили написать user-friendly программу, в которой были бы уже готовые «сессии» для разных случаев жизни. Программу мы решили сделать бесплатной, но с возможностью качать дополнительные платные сессии. Назвали мы ее Hypnomatic — от слов hypnosis и automatic.

foto2

Разработка:

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

Прочитав все возможные отчеты людей, шедших по этому пути до нас, мы подали заявку на регистрацию в программе Apple Developer еще в процессе разработки, так что это не отняло у нас дополнительного времени. Серьезно! Я не приступал к разработке, пока не прочитал все гайдлайны Apple, и вам советую поступать так же — помогает избежать ненужных пробуксовок по времени. Если хотите, чтобы ваша программа прошла Review с первого раза, как наша, почитайте в Интернете чужой опыт и сделайте вывод из чужих ошибок.

Первый месяц я занимался разработкой самой структуры приложения и движка, который бы рендерил видео. Сейчас бы я написал это расторопнее, но первое приложение под новую платформу никогда не пишется быстро. Более того, оно еще и переписывается с нуля пару раз.

Пользуясь случаем хочу предупредить начинающих программистов от граблей, на которые я сам наступил: несмотря на всю заманчивость Storyboard-ов, не пользуйтесь ими. У этого совета есть две причины.

Расставляя мышкой связи между экранами своего приложения, вы так и не разберетесь во внутренних механизмах, которые заставляют все это работать.
Приложения, написанные с использованием данной технологии будут работать только на устройствах с пятой версией операционки, а таких (в мае 2012 года) примерно 75 % от общего числа пользователей. Вы же не хотите сходу потерять 25 % потенциальных пользователей?
Антон в течение первого месяца рисовал необходимую графику (иконки, картинки для запуска, аватарки для сессий), писал описания к сессиям и собирал статьи для раздела «Наука».

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

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

foto4

К концу второго месяца мы были уверены, что программа уже готова и осталась самая малость: перевести ее на разные языки. Господи, как мы ошибались!

Перевод стоит недешево.
Перевод статей научной тематики это «недешево» в квадрате.
Перевод занимает не один день.
Вставить переводы в программу — огромный труд, крайне нудный, однообразный и требующий постоянной концентрации внимания.
Третий месяц разработки был полностью посвящен текстам: сначала мы отправили русские тексты на корректуру и редактуру. С редакторами нам очень повезло — недорого, быстро и очень качественно. В текстах не осталось опечаток, с крайней въедливостью были переформулированны все абзацы, где встречались однокоренные слова, все знаки дефиса заменены на тире, убраны лишние вводные конструкции. Не стану вставлять рекламу в эту статью, но если кому-то нужны подобные услуги можете спросить у нас по адресу info@hypnomaticapp.com — дадим на них ссылку.

К локализации мы подошли со всей серьезностью. Выбрали следующие языки: русский, английский, немецкий, французский, испанский, португальский и китайский. С переводчиками нам повезло не так сильно, как с редакторами. Во-первых, они затянули сроки, которые сами же и назначили. Во-вторых, когда мы нашли в «Фэйсбуке» людей, говорящих на этих языках, и попросили их проверить качество переводов — обнаружилось огромное количество опечаток и ошибок, из-за чего нам пришлось переверстывать и перевставлять все тексты, как в программе, так и на сайте. Так и подмывает оставить здесь ссылку на них, но не хочу создавать им PR ни в каком виде. Если вы — разработчик, и сейчас выбираете кому заказать перевод своего приложения — напишите нам на e-mail, мы готовы проконсультировать.

Отдельный привет хочется передать девушке, по имени Sofy, которая откликнулась «ВКонтакте» и безвозмездно помогла нам перевести несколько слов на китайский. Спасибо!

aproved

Заключение:

Итак, разработка вместе с тестированием длились примерно 100 дней. Если бы мы имели больше опыта c Objective-C и догадались, что тексты надо писать и отправлять на перевод еще до начала разработки программы — было бы реально успеть и за 60 дней. А если отказаться от свободного времени, личной жизни и гражданской позиции — то, вероятно, и за 50.

Напоследок несколько советов, которые сэкономили бы очень много времени и нервов, если бы мне их кто-то дал в свое время:

Не пренебрегай девелоперскими форумами на сайте Apple.
Иногда тестовый сервер In-App purchases просто падает или глючит. Если твоя программа не работает, а ты уже все перепроверил два раза, не спеши рвать волосы — зайди на те же самые девелоперские форумы, вероятно, какой-то бедолага вроде тебя уже создал там тему с названием «Sandbox server is down again?». Если так, то просто подожди — Apple поднимет тестовый сервер в течение дня.
Не используй Storyboard-ы, они не работают в iOS 4.
Если собираешься локализовать программу — займись этим в первую очередь, еще до разработки.
Не стану скрывать, что публикуя здесь эту статью, я надеюсь, что некоторые из вас скачают нашу программу. Но так же я надеюсь, что смог кого-то заинтересовать темой, которой увлекаюсь я сам. Так же я хотел бы думать, что эта история станет полезной для тех, кто только собирается писать свою первую программу.

Итак, всего два дня назад напротив иконки нашей программы загорелась зеленая лампочка и появилась надпись «Ready for Sale», завершив для нас этап разработки. За эти два дня произошло невероятное количество интересных вещей, приложение уже поднялось в Топ-5 бесплатных приложений в категории «Здоровье и фитнес». Как мы добились такого эффекта мы обязательно расскажем во второй части этой истории разработки.

foto123

Ссылка на приложение