[Разработка мобильных приложений, Дизайн мобильных приложений, Управление продуктом, Изучение языков, Визуальное программирование] Запуск топ-приложения в одиночку, бесплатно и без кодинга (ну почти)

Автор Сообщение
news_bot ®

Стаж: 6 лет 3 месяца
Сообщений: 27286

Создавать темы news_bot ® написал(а)
16-Фев-2021 22:32


Как выучить неправильные глаголы английского, если ты продуктовый менеджер? Очевидно, сделать продукт для их изучения.Так я и поступил. Пилил приложение в одиночку, по вечерам, после основной работы. Путь от сырой идеи до релиза занял месяц. Еще месяц ушел на то, чтобы вывести приложение на первые места стора по всем ключевым запросам.Как это было, с чем столкнулся и какие выводы сделал – читайте под катом.Содержание
ИдеяВообще-то мне хотелось просто подучить неправильные глаголы.Но, установив десяток приложений из топа стора, я так и не нашел ничего подходящего. Приложения были перегружены рекламой, неудобными интерфейсами и мудреными механиками. Многие сразу требовали заплатить им денег.Посмотрев на все это безобразие, я невольно задумался – а что мешает сделать простейшее приложение самому? Механика несложная, а популярных irregular verbs всего штук 100…Думаю, когда появляется интересная идея, – важно не убить ее сразу, представив все возможные проблемы и сложности. Лучше, наоборот, позволить себе немного пофантазировать: «Каким было бы приложение моей мечты?».Поэтому я взялся за ручку-блокнот и сделал черновой набросок основных экранов приложения. Получалось симпатично.
Так приложение выглядело на бумагеОграниченияЯ старый солдат и знаю, что когда придумал продукт мечты – важно отсечь лишнее и оставить только ключевой функционал. Иначе есть риск попросту не закончить проект. Особенно если делаешь его в одиночку.
Классика инди-проектовПоэтому в первую версию я заложил всего 2 фичи:
  • список глаголов, чтобы познакомиться с ними;
  • тренировки глаголов, чтобы закрепить их в памяти.
Кроме того, я решил, что приложение будет:
  • бесплатным;
  • без рекламы;
  • только под Android;
  • без адаптации под планшеты;
  • без подстройки экрана под разворот телефона;
  • работать без сервера.
В дальнейшем я неоднократно сказал себе «спасибо» за эти ограничения. Впрочем, все мы грешны. Поэтому в финальной версии были уже и пуш-уведомления, и геймификация, и статистика обучения... Но давайте обо всем по порядку.ВарфреймыСкетчи на бумажке — это хорошо, но нужно детально продумать путь пользователя в приложении. Какие у него будут задачи и как он их решит?Например, список слов. Что там будет? Только 3 формы неправильных глаголов? Но люди, которые учат глаголы, наверняка не знают всех переводов. А нужна ли им транскрипция? А озвучка? А прогресс изучения каждого слова? А возможность скрывать изученные глаголы?Тут легко нагородить лишних механик или, наоборот, упустить что-то необходимое. Поэтому важно иметь вижн продукта.Мой вижн звучал примерно так:
Приложение ориентировано на начинашек и должно полностью закрывать их потребность в изучении неправильных глаголов. Но делать это предельно просто и без занудства.
Не вдаваясь в детали, расскажу про 2 инсайта, которые я поймал в процессе прототипирования:1.      Горизонтальная ориентацияИзначально я представлял вертикальное приложение. Это же привычно, плюс можно держать телефон одной рукой. Но особенность неправильных глаголов в том, что нужно отображать три их формы. А еще перевод, прогресс, озвучка… В вертикальном формате получалась какая-то каша.Зато в ширину всё помещалось без проблем. Поэтому пришлось переделать все варфреймы под горизонтальную ориентацию.
Варфрейм достаточно точно отображает будущий интерфейсЯ думаю, это хорошая практика – не делать слепо «как у всех» или «как принято». А, наоборот, учесть особенности своего продукта. Так список глаголов мог бы быть слабой частью моего приложения, но стал преимуществом.2.      Отказ от клавиатурыЯ планировал, что в одной из тренировок будет ввод с клавиатуры. Надо же студенту запомнить, как пишутся глаголы, верно?Но клавиатура ломала пользовательский опыт:
  • остальные тренировки сводились просто к выбору варианта, а тут такое усложнение;
  • в клавиатуре слишком много отвлекающего: переключение языков, знаки, цифры;
  • при выезде клавиатуры нужно как-то смещать или перекрывать контент.
Конечно, можно было сделать собственную, сокращенную клавиатуру. Но мне хотелось предельной простоты управления. Поэтому клавиатурную тренировку я заменил другой, похожей: собрать глагол из букв, перемешанных в случайном порядке.
Тренировка "Собери глагол по буквам"РеализацияИтак, у меня было 2 пакетика варфреймов, пинта чистого энтузиазма и персональная лицензия на Construct 2. Не то чтобы это был необходимый запас для создания приложения, но выбирать не приходилось – ведь я не разработчик и современным языкам программирования не обучен.Вообще Construct – это конструктор игр, позволяющий делать игры условно «без программирования». Вся логика строится на интерактивных объектах и событиях «если …, то …». По итогу в моем проекте получилось 322 таких события (это около двух тысяч строчек кода).Но главная фишка Construct – возможность экспортировать готовый проект на множество платформ, в том числе на Android и iOS.Уточню, что я неплохо знаком с этим конструктором. Собственно, персональную лицензию я получил, заняв призовое место в конкурсе игровых разработчиков Construct 2.Немного о конструктореКонечно, возможность делать игры «без программирования» – не более чем маркетинговая замануха. Ничего серьезного так сделать не получится.Но если с алгоритмическим мышлением у вас все в порядке, то Construct дает комфортную среду разработки. Здесь и переменные, и функции, и циклы, и массивы, и всякое такое прочее. Думаю, ближе всего это к визуальному программированию.
Пример кода, который отвечает за переключатели на экране настроекЕсли стандартных возможностей конструктора не хватает – можно использовать JS-вставки. Например, я так делал для определения дня года.
Функция Construct на основе JS-кодаЕще один момент, который сильно облегчил и ускорил разработку, – возможность в реальном времени проверять результат. Это происходит так: я запускаю проект на компьютере, захожу на локальный хост из мобильного браузера и сразу вижу полноценное рабочее приложение на экране смартфона. Очень удобно.Организация проектаПостараюсь не углубляться в специфику Construct, но расскажу вкратце, как устроен проект.Он состоит из лейаутов и списков событий. Для каждого экрана приложения я использовал собственный лейаут и список событий. Плюс в отдельном списке событий вел документацию по массивам, чтобы не забыть – что где лежит.
Структура проектаБазу данных с глаголами, переводами и транскрипциями хранил в обычной табличке Excel. Загружал ее как JSON при запуске приложения. В самом приложении были массивы, отвечающие за статистику обучения и пользовательские настройки. Все изменения массивов сохранял в Local Storage смартфона.Интересно, что бэклог проекта я вел просто в текстовом файле. И то, занялся этим в самом конце разработки – просто чтобы ничего не упустить. Большую же часть приложения сделал вообще «из головы». Это один из примеров запуска продукта без ТЗ, о которых обещал рассказать в прошлой статье.Уточню, что код я достаточно подробно комментировал, иначе сам бы в нем быстро запутался.ДизайнЧасто при запуске нового продукта UX важнее UI.То есть продукт должен быть, прежде всего, удобным. А красоту можно и позже навести.Но, конечно, мне хотелось, чтобы приложение выглядело более-менее прилично и современно. Поэтому начал я со стандартного варианта: минимализм, flat design, бледно-голубые оттенки, вот это всё. Учитывая, что сам я не дизайнер, – это беспроигрышный вариант.Но, поработав над приложением какое-то время, я задумался: «Какого черта? Я же делаю некоммерческий продукт для души. Зачем мне очередной клон Facebook с гаммой хирургического кабинета?». И перекрасил все в теплые ламповые цвета. А войдя в кураж, добавил ещё и лиса в шляпе, чтобы у приложения было узнаваемое лицо.Учитывая, что Construct – все-таки игровой движок, я не удержался и сделал в главном меню анимированный фон с эффектом параллакса. Это не типично для обучающих приложений, поэтому должно было вызвать небольшой вау-эффект.
Стартовый экран с эффектом параллаксаДизайн готовил в Adobe Illustrator – где-то с нуля, где-то на основе бесплатных векторных стоков. Векторная графика удобна, когда не умеешь рисовать: можно тягать точки, пока результат тебя не устроит. Таким макаром, например, я сделал заглавную иллюстрацию для этой статьи.Сборка билдаСборка билда под стор – тот еще головняк. Конечно, потом привыкаешь и делаешь все на автомате. Но в первый раз хотелось всё бросить.Вот обобщенный порядок действий:
  • экспортировать готовый проект из Construct в формат Cordova;
  • с помощью Adapter сбилдить проект Cordova в apk-файл;
  • сгенерировать уникальную подпись разработчика;
  • с помощью Apk-signer подписать apk-файл;
  • с помощью Apk-signer верифицировать и выровнять apk-файл (что бы это ни значило);
  • залить готовый билд в стор;
  • а в первый раз нужно ещё установить и настроить все эти программы и библиотеки.
Самое забавное, что это – простой способ. Он считается аморальным. Есть еще «правильная сборка», которая предполагает древние языческие ритуалы и компиляцию через консольные команды. Кому интересно – вот видеоинструкция.
Когда делаешь приложение в конструкторе игрКонечно, для меня это всё – темный лес. Я же продакт, у меня лапки!Как пользователь Construct я хотел бы, чтобы компиляция делалось одной кнопкой «Превратить проект в готовый apk-файл». Наверное, тут Construct сильно уступает «настоящим» средам разработки? Или там такая же морока? Кто в теме, напишите в комментариях, пожалуйста.ТестированиеПроверялось приложение вручную. Для этого я:
  • собирал билд и прокликивал его на телефоне;
  • открывал проект в окне браузера на ПК и тестировал приложение на основных мобильных разрешениях;
  • сбрасывал тестовый билд друзьям для проверки на других устройствах;
  • добавил в настройках возможность полного сброса прогресса.
Релиз в Google PlayДолжен признаться, Google, я разочарован.Я привык, что продукты Google для широкой аудитории (почта, поиск, карты, переводчик, гуглдоки) – шикарны. Но когда речь заходит о профессиональных инструментах – все очень-очень плохо.Достаточно сравнить Google Analytics и Amplitude, чтобы понять, насколько отстал Google.
Google уже не тортТа же история и с Google Play Console для разработчиков. Кажется, ее делали с похмелья какие-то джуны. Я не понимаю, как компания с неограниченным бюджетом может делать настолько запутанные и нелогичные интерфейсы. А почитайте, что пишут в отзывах про их приложение. Жуть.Не буду утомлять вас деталями, но благодаря «великолепно» спроектированной Google Play Console я зарелизил свое приложение… случайно! Причем Google не позволяет отменить релиз. Позже я выяснил, что многие столкнулись с такой же проблемой. Повезло, что мое приложение было в приличном виде на момент релиза.
Исторический моментВ общем, тут совет такой: будьте осторожны при заливке билда через Google Console, а лучше потренируйтесь сначала на тестовом приложении.ПроблемыКак говорят в народе: «Скоро статья пишется, да не скоро билд эпрувится». И действительно, в процессе работы над приложением я столкнулся с рядом проблем. Вот самые неприятные из них:1.      Адаптивность дизайнаЧтобы приложение смотрелось адекватно на любых экранах, приходилось:
  • масштабировать интерфейс согласно разрешению;
  • закреплять элементы относительно края экрана;
  • рассчитывать позицию кнопок на основе ширины и высоты видимой области;
  • проверять все изменения адаптивности на десятке ключевых разрешений.
И это всё равно не решает вопрос на 100%. Впрочем, результатом я горжусь – приложение смотрится адекватно даже на телефонах, которых ещё не существовало на момент релиза.2.      Работа без аналитикиКак продуктовому менеджеру, мне очень некомфортно работать без аналитики. Может и есть какой-то способ ее подключить к проекту Construct, но простого решения я не нашел. Поэтому пришлось делать приложение фактически вслепую, полагаясь только на свой вижн и экспертизу.3.      Отсутствие сервераВ принципе, Construct позволяет взаимодействовать с сервером. Но для этого нужен бэкенд-разработчик и хост. Так что решение делать игру без сервера было верным. Тем более, это позволило приложению запускаться локально на смартфоне и работать офлайн.Но проблема в том, что без сервера нельзя организовать взаимодействие между пользователями или собрать общую статистику по ним. Ну и при чистке Local Storage весь прогресс обучения потеряется.4.      Неполный контрольКонструктор упрощает разработку, это правда. Но обратная сторона этого решения – невозможность исправить низкоуровневую техническую проблему, если таковая возникнет.Например, несколько пользователей пожаловались, что в приложении нет озвучки. Причем после перезагрузки она появилась. Я догадался, что звуки просто не успевают прогрузиться. И все, что я смог сделать, – это искусственно увеличить время загрузки приложения. Хорошо, что это помогло. Иначе у меня не осталось бы инструментов, чтобы исправить проблему.5.      ПланшетыКак у разработчика у меня может быть 100500 причин, почему я не хочу делать поддержку планшетов. Например:
  • моя целевая аудитория не использует планшеты;
  • мой продукт не подразумевает использование на планшете;
  • у меня маленькая команда и нет ресурса на планшетную версию;
  • я хочу обкатать продукт на мобайле, а потом уже делать версию для планшета.
Но Google не позволяет отсечь планшеты – ни при установке приложения, ни в рекламе.Результат предсказуем – владельцы планшетов качают приложение, разочаровываются, ставят низкие оценки. Спасибо, Google.ПродвижениеИтак, спустя месяц разработки, я зарелизил приложение.Жду день, жду второй… В выдаче стора оно не появляется. Почитал на форумах, что индексироваться может до недели. Ну что поделать, жду неделю. Ни-че-го.Google, само собой, даже не пытается сделать этот процесс прозрачнее для разработчика.Наконец, спустя 10 дней, приложение появляется в выдаче… на 143 позиции!
Первая реакция на появление приложения в выдачеДелать нечего, пришлось заняться продвижением:
  • прошу друзей установить приложение и поставить ему 5 звезд;
  • полностью переписываю ASO-текст, включая туда максимум релевантных ключевых слов;
  • перерисовываю скриншоты для стора, делая их симпатичнее;
  • размещаю ссылку на приложение на нескольких ресурсах вроде 4PDA;
  • отвечаю на все комментарии пользователей, иногда использую ключевики в ответах;
  • делаю пробную закупку рекламы Google Ads (получилось недорого, порядка 5 центов за установку, всего потратил около 20$);
  • правлю баги и выкатываю новые версии – чтобы стор видел, что приложение живое и дорабатывается;
  • в самом приложении делаю страничку с просьбой оставлять оценки-отзывы.
Чтобы отслеживать позиции приложения по разным ключевикам – регистрируюсь в сервисах AppFollow и ASODesk. Первый дает больше бесплатных возможностей, второй шлет письма с отчетами о позициях приложения.Итоги всей этой движухи спустя примерно месяц:
Отчет ASODeskЭто не все релевантные запросы, там их был примерно десяток. И по всем приложение выдавалось на первом экране поиска. Честно говоря, я не ожидал, что это будет так просто. Зачем тогда вообще нужны ASO-специалисты, если любой дилетант может просто прописать ключевики?На самом деле, я вижу ряд причин, почему так получилось:
  • Ниша специфическая. Приложений, заточенных под изучение неправильных глаголов, не так много. То есть конкуренция не большая.
  • Я выбрал довольно удачное название – в него удалось впихнуть важные ключевые слова.
  • Первое время рейтинг приложения зашкаливал – там были сплошные пятерки, несколько четверок и ни одной оценки ниже.
  • Рекламная кампания была небольшой, зато своевременной – показала стору хорошую динамику скачиваний.
  • Приложение достаточно удобное, бесплатное, работает офлайн, в нем нет рекламы – думаю, это положительно сказалось на поведении пользователей и их оценках.
Удержание пользователейНасколько знаю, на позиции в сторе влияет Retention продукта. Да и просто по-человечески хочется, чтобы приложение не забрасывали в первый же день. Чтобы пользовались им какое-то время и успевали чему-то научиться.Так как аналитики у меня не было – пришлось полагаться на свой опыт. Для удержания пользователей я решил использовать геймификацию и пуш-уведомления.ГеймификацияПроблема всех образовательных продуктов – мотивация студента. Поэтому нужно было дать студенту какую-то понятную ежедневную цель. А в идеале – еще и причину, чтобы вернуться завтра.Вот что я сделал:
  • Каждый день генерировал «цель дня»: пройти Х упражнений, дать Х правильных ответов... Если брать все сочетания, то возможны 15 различных целей дня. Плюс в настройках можно выбрать их сложность.
  • Ввел понятие «ударный темп». Это количество дней подряд, когда цель дня выполнялась. Если пропустить день – ударный темп обнуляется.
  • В процессе выполнения упражнений отображается прогресс цели дня, а иногда выскакивает лис и дает мотивирующие комментарии.

Акцент на прогрессе цели дняУведомленияИзначально казалось, что подключить пуши не получится.Но в результате, с помощью стороннего плагина Construct, сервиса OneSignal и такой-то матери – я их все же прикрутил.Пуш-уведомления дают возможность вернуть студентов, которые пару дней не открывали приложение. А еще удобно уведомлять старых пользователей о выходе новой версии.Из интересного – я не стал делать безликие триггерные пуши в духе «Пора заниматься!». Вместо этого рассылал уведомления вручную, каждый раз выбирая время и инфоповод.
Пуш на 14 февраля
Пуш в начале пандемииОт 8 до 20% студентов, получавших такие уведомления, – тут же открывали приложение.Оценки и отзывыКогда делаешь коммерческое приложение в рамках работы – относишься к оценкам как к одной из многих метрик продукта. Но когда делаешь приложение «для души» – отзывы превращаются в значимый эмоциональный фактор. Они действительно могут мотивировать работать дальше.
Душевные отзывыНу или демотивировать.
Первая единицаПотому что даже одна единица сразу сбивает рейтинг приложения. И тогда думаешь: «Зачем мне это всё? Можно ведь вечер и лучше провести, а не возиться с вот этим всем».Пару оценок удалось исправить, отвечая пользователям. Но в целом не стоит рассчитывать на объективность – люди могут пользоваться приложением и написать радостный отзыв, но при этом поставить тройку, потому что «могло бы быть и получше».ВыводыВ статье было много практичных мыслей, поэтому позвольте теперь поделиться общими впечатлениями.
В который раз я убедился, что лучший способ чему-то научиться – попробовать сделать это на практике. Пройти путь от начала до конца, пусть даже «на минималках».К примеру, когда нужно объяснить правила настольной игры новичку – можно долго про них рассказывать, пока вообще не перехочется играть. Или просто начать играть, разбираясь по ходу дела.С приложением (да и с жизнью в целом, наверное) – такая же история. Если выяснять все возможные проблемы и подводные камни, то начинать что-то делать страшно. Но если позволить себе чуть-чуть пофантазировать, немного изучить вопрос, сделать небольшой прототип… можно очнуться, когда все уже получилось.Еще хочу сказать, что это большое удовольствие – делать что-то в одиночку. На работе мне достаточно написать задачу – и целая команада профессиональных разработчиков воплотит ее в лучшем виде: учтет все кейсы, архитектуру, адаптивность, секьюрность, нагрузку... Но когда работаешь в одиночку, то вообще не нужно писать задач, ждать конца спринта, что-то кому-то объяснять. Просто воплощаешь свой вижн – напрямую, непосредственно. Это увлекает. Думаю, что-то подобное чувствует художник, работая над картиной.Спустя годПрошло уже больше года с момента релиза приложения. Сейчас у него около 12 000 установок и средняя оценка «4,6». Какое-то время я еще занимался приложением: рассылал пуши, правил баги, добавил несколько фич по просьбе студентов.Но потом забросил и только иногда отвечаю на отзывы.В начале пандемии был пик скачиваний, но из-за отсутствия обновлений – приложение потихоньку теряет позиции, а с ними и количество ежемесячных установок.
Ежемесячные установки за весь период жизни приложенияВ общем-то, можно было бы и дальше работать над ним, но без аналитики непонятно куда двигаться и как влияют доработки. Конечно, есть и очевидные улучшения. Например, можно записать качественную озвучку с профессиональным диктором, носителем языка. Или нанять хорошего UI-дизайнера. Но и то, и другое будет стоить по несколько тысяч долларов. Не совсем понятно, зачем этим сейчас заниматься.Поэтому я довольствуюсь тем, что получил ценный опыт и сделал что-то полезное для людей. Может быть, когда-нибудь появится вдохновение, и я продолжу эту историю.
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_razrabotka_mobilnyh_prilozhenij (Разработка мобильных приложений), #_dizajn_mobilnyh_prilozhenij (Дизайн мобильных приложений), #_upravlenie_produktom (Управление продуктом), #_izuchenie_jazykov (Изучение языков), #_vizualnoe_programmirovanie (Визуальное программирование), #_construct_2, #_android, #_indirazrabotka (инди-разработка), #_anglijskij_jazyk (английский язык), #_vizualnoe_programmirovanie (визуальное программирование), #_prilozhenie (приложение), #_mobile_development, #_english, #_razrabotka_mobilnyh_prilozhenij (
Разработка мобильных приложений
)
, #_dizajn_mobilnyh_prilozhenij (
Дизайн мобильных приложений
)
, #_upravlenie_produktom (
Управление продуктом
)
, #_izuchenie_jazykov (
Изучение языков
)
, #_vizualnoe_programmirovanie (
Визуальное программирование
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 19-Май 18:30
Часовой пояс: UTC + 5