Портретный объектив – оптическая магия

:

В рамках проекта DevStory хочу рассказать о своем первом опыте разработки под ОС Android - приложении «Портретный объектив». Программирование не является моей основной профессиональной деятельностью, скорее хобби. Что касается разработки программ для мобильных устройств, то единственным опытом была программа под Windows Mobile, которая умерла естественной смертью вместе с этой операционкой.

С чего все началось

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

С самого начала я не ставил целью сделать обычный редактор фотографий, коих на маркете сотни. Мне хотелось сделать приложение, которое позволит фотографиям, сделанным встроенными камерами смартфонов выглядеть похожими на снимки сделанные профессиональной техникой. Раньше, глядя на снимки, сделанные еще пленочным Зенитом, я удивлялся тому ощущению объемности фотографий, которое полностью отсутствовало на цифровых мыльницах, не говоря уже о смартфонах. Теперь я знал, как этого достичь.

 

Начало разработки

Разработку приложения я начал с Фотошопа. Это не то, о чем вы, наверное, подумали – к дизайну это не относится. Я просто открыл в нем одну из фотографий, сделанных на цифровую мыльницу и попытался добиться от снимка ощущения объемности. Спустя час мне это удалось и, сделав три различных варианта, я сохранил их на диск. Забегая немного вперед - примерно через полгода я повторил этот эксперимент именно с этим же снимком, используя свое, уже готовое приложение. Заняло это минут через 5 – 7, результаты были очень похожими.

Естественно, освоение любого нового инструмента начинается с обучения. Потратив несколько недель на чтение книг по разработке под Android, я с удивлением понял, что не продвинулся ни на шаг. Нет, основные теоретические знания я приобрел, но чувство готовности сесть за компьютер и писать «Hello, world» напрочь отсутствовало. Озадаченный, я почти наполовину прочитал знаменитую «Философия Java», результат не изменился. И только после того, как мне попались на глаза замечательные уроки с сайта startandroid.ru, ситуация разительно изменилась в лучшую сторону. Подача материала живым разговорным языком, не стесняясь упоминать о собственных пробелах в знаниях, вселяет удивительную уверенность в свои силы.

 

Концепция или как я видел свое приложение

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

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

Вернусь к дизайну. К этому моменту я прочитал книгу Greg-а Nudelman-а “Android Design Patterns. Interaction Design solutions for Developers”. Мне она понравилась своим минималистическим отношением к дизайну Android – приложений. То, что надо! – подумал я – Черно-белый интерфейс с незамысловатыми общепринятыми иконками. К тому же этот интерфейс будет оттенять сами снимки, ничто не будет отвлекать пользователя от редактирования фотографии.

Портретный объектив – оптическая магия Портретный объектив – оптическая магия Портретный объектив – оптическая магия

Эту концепцию дизайна я сохранил до настоящего времени. Возможно, в будущем обращусь к дизайнеру для перерисовки иконок приложения. Тем более, моя тогдашняя глубоко запрятанная мечта осуществилась – увидеть свою корявую, вручную нарисованную кистью в фотошопе иконку рядом с красивыми иконками известных приложений на одной из главных страниц маркета (об этом чуть ниже).

 

Процесс разработки приложения

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

Много времени ушло на оптимизацию расчетов как по быстродействию, так и по уменьшению памяти, потребляемой приложением. К примеру, первоначальный алгоритм расчета полупрозрачной границы между предметом съемки и задним планом занимал от 8 до 12 секунд для 5-ти мегапиксельного снимка. После перевода некоторых функций на С++ (с применением NDK) время уменьшилось до 200 – 300 миллисекунд.

 

Отладка приложения

К концу лета приложение, как мне казалось, было готово к выходу в свет. Не к выкладыванию в Google Play, конечно, а к бета – тестированию. Итак, опробовав его на своих устройствах и на немногочисленных устройствах приятелей и коллег, я выложил его на форум 4pda, приготовившись к воплям восторга. Не тут то было – первые же реплики показали ошибочность моего оптимизма. Только к этому моменту я понял выражение «зоопарк Android–устройств». Чтобы сделать приложение достаточно стабильным для большинства устройств, мне пришлось два раза заново, практически начисто, переписывать приложение. Я отказался почти от всех сторонних библиотек, от части фунций официального SDK. И, через 8 недель активного тестирования, с помощью активных форумчан, а также команды Tester Team первая версия приложения «Портретный объектив» была опубликована в Google Play. Конечно, ошибки посыпались с новой силой, ведь количество модификаций устройств возросло до 3600. Но они уже не так сильно запечатлелись в памяти, так как самые грубые были исправлены в процессе бета - тестирования. Кроме того, помогли отчеты об ошибках, регулярно приходящие к разработчикам. С их помощью достаточно легко локализовать место и причину ошибок.

 

Пара советов разработчикам приложений

Опубликовав информацию о приложении на нескольких русско - и англоязычных сайтах, посещаемость которых достаточно большая, я пришел к выводу, что наибольшая отдача в плане тестирования, все-таки, у форума 4pda. Даже на xda-developers в разы меньше, по крайней мере, в моем случае. Любое серьезное обновление перед выкладыванием на маркет я тестирую несколько дней на форуме.

Следующие свои Android-приложения я опубликую на Google Play в разделе альфа и/или бета – тестирования. Приходящие разработчикам отчеты об ошибках несут много полезной информации.

 

Локализация и продвижение приложения

Локализацию приложения на английский язык поручил агенству IvanPR, они же сделали рассылку пресс-релиза по англоязычным ресурсам, все это за совсем небольшую сумму. Со своей задачей они справились, я считаю, неплохо. В следующий раз, скорее всего, обращусь к ним же. Самому же удалось опубликовать информацию о приложении на главной странице довольно посещаемого сайта nnm.me, причем совершенно бесплатно. Что касается зарубежных СМИ, то, наверное, самой большой удачей была заметка на главной странице xda-developers.com. Просто создал ветку о приложении на форуме и отправил редакторам заявку на опубликование. После этой заметки появились перепечатки, в частности, на ixbt.com. Много пользователей появилось после публикации на chip.de.

Опубликовал несколько строчек на reddit.com в паре тематических веток. Радует то, что уже без моего участия там появляются ссылки на мое приложение.

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

Портретный объектив – оптическая магия

Видеоролик для Google Play тоже делал самостоятельно с помощью Screencast Video Recorder. К моменту написания заметки у ролика только прямых просмотров с Youtube более 10 000.

 

Результаты продвижения на Google Play

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

Вначале результатов практически не было. В разделе “Фотография”, правда, появилось, поднялось до 100-го места и рухнуло на несколько сотен вниз. И только после значительного роста установок начало медленно подниматься вверх. Сейчас держится стабильно в первой тридцатке фотоприложений. При этом число ежедневных установок превышает полторы тысячи.

Портретный объектив – оптическая магия

Чуть больше недели назад, пролистывая главную страницу приложений на Google Play, заметил знакомую корявую иконку. Проведя небольшое расследование, убедился, что ее видят пользователи еще в 4 странах. Днем позже приложение было видно в семи странах, на момент написания заметки – в 9.

Портретный объектив – оптическая магия

 

Поддержка пользователей

Здесь я вижу два аспекта:

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

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

 

Затраты на разработку и монетизация приложения

Общие затраты на разработку составили менее 15 000 рублей, а именно:

  • перевод на английский язык и рассылка англоязычных пресс-релизов – 6 500 руб.;
  • статья на 4pda.ru – 8 000 руб.;
  • Screencast Video Recorder – 150 руб.

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

 

Планы на будущее

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

Свои будущие приложения, вероятнее всего, тоже буду делать с применением библиотеки компьютерного зрения OpenCV. Задумки есть, но о них еще рано говорить.

Как я уже упоминал, приложение «Портретный объектив» бесплатно. Установить его можно по этой ссылке.