Команда из «выжла» пришла с идеей приложения, которое предлагает места на основе интересов юзера. Дизайн-концепция уже была готова. От нас требовалось подключиться к проекту и помочь с технической реализацией визуальных решений. А самое главное — совместно разработать механизм, который бы безошибочно понимал пользователя.
При входе в «иду» юзер отмечает, что ему нравится, а что нет. И сообщает, чем бы хотел заняться, например, сходить в бар или погулять. Алгоритм анализирует интересы и подбирает места. В результате происходит мэтч пользовательских ожиданий и параметров заведений. Это та самая магия, которая спрятана под капотом приложения.
Концептуально визуальные решения были на команде из «выжла». Ребята продумали пользовательские сценарии и айдентику приложения. Подготовили нетиповой и при этом понятный дизайн с живыми эмоциональными маскотами.
Мы выступали в роли технических экспертов и ревьюили макеты. Совместно с ребятами из «выжла» обсуждали реализацию фич, анимаций и градиентов. Следили за тем, чтобы дизайн соответствовал требованиям iOS-платформы, а в итоговой версии приложения всё корректно отображалось и работало.
В «иду» есть баблы, с помощью которых пользователь сообщает, что ему нравится. Он может выбрать один бабл или несколько, например, «винтаж», «винные дегустации» и «искусство». Так алгоритм поймёт, что предлагать.
Дальше юзер отмечает, чем он хочет заняться, например, «поесть» и «погулять». И указывает стартовую точку. Алгоритм подбирает подходящие места поблизости. Чтобы добавить заведение в маршрут, пользователь делает свайп вправо. Если вариант не заинтересовал — влево.
Свайпать пользователь может достаточно быстро. Было важно обеспечить высокую скорость работы бэкенда, чтобы во время листинга ленты не было видно подгрузок, а алгоритм молниеносно находил подходящие локации.
Для более быстрого поиска и подбора мы индексировали все места. А затем выбирали те, что соответствуют интересам и местоположению юзера. Если геопозиция менялась, мы учитывали это — перестраивали маршрут и продолжали искать места поблизости.
Своими действиями пользователь корректирует алгоритмическую систему и настраивает её под себя. Вполне может быть, что на онбординге человек указывает одни интересы, а спустя месяц активного использования приложения они меняются на другие. В этом прелесть «иду» — приложение всегда адаптируется под юзера.
В «иду» мы выполнили дополнительную группировку интересов с помощью тегов. Она объединяет интересы по ассоциативному ряду. Если алгоритм не может подобрать для пользователя места напрямую, он использует дополнительные группы по тегам.
Например, юзер указал всего один интерес «авторская кухня» и бабл «погулять». Но мест, которые были бы связаны баблом «погулять» и интересом «авторская кухня», нет. Тогда мы смотрим, какие интересы в системе связаны тегами с «авторской кухней», и подбираем места.
В «иду» мы используем поиск с автодополнением, когда при наборе текста в выпадающем списке показываются похожие результаты. Сложность реализации фичи заключалась в том, что места и гиды (готовые подборки мест от редакторов) предстояло искать и по тегам, и по названию. Чтобы быстро и корректно обрабатывать большое количество информации, развернули специальную поисковую систему Elasticsearch.
На главном экране приложения живут баблы. Они могут отличаться друг от друга по размеру и тексту внутри. Встречаются и маленькие баблы с длинным текстом, и большие с надписью буквально из трёх букв. Нужно было сделать так, чтобы контент всегда отображался корректно. Для этого внедрили специальную систему, которая подбирает размер шрифта под каждый бабл.
Изначально конечным действием юзера считался переход в «Яндекс Карты», чтобы узнать, как добраться до места. Мы передавали сервису точки, а он строил маршрут. Для упрощения жизни пользователя и увеличения времени, которое он проводит в приложении, мы работаем над встроенным навигатором. После релиза этой фичи человек получит все нужные функции в одном окне, и ему больше не придётся покидать «иду».
Для дальнейшего развития продукта важно понимать, как ведут себя пользователи и посещают ли они предложенные алгоритмом места. Мы реализовали возможность следить за процентом «доходимости» по маршрутам через админ-панель. Даже если юзер придёт на место, когда приложение будет работать в фоновом режиме, мы всё равно узнаем об этом.
Чтобы удостовериться, что всё работает корректно, наши QA-инженеры организовывали тестовые прогулки. Сначала по-настоящему — составляли маршрут из нескольких мест рядом с офисом и отправлялись к ним пешком. А затем делегировали эту задачу Xcode. С помощью эмулятора задавали геолокацию, имитировали хождение и оценивали, насколько корректно передаются данные.
На «иду» мы достаточно часто выпускаем обновления. И за всё время существования приложения в App Store ни разу не столкнулись с серьёзными багами. Секрет в комплексном тестировании, которое помогает обнаружить все потенциальные проблемы и не допустить, чтобы с ними столкнулись реальные пользователи.
На проекте применяем функциональное, нефункциональное и смоук-тестирование. Следим, чтобы даже на специфичных девайсах не возникало ошибок. Для этого закупили в парк тестовых устройств iPhone SE — у него нестандартное разрешение экрана, и было важно убедиться, что контент отображается корректно. Параллельно внедряем инструменты для оптимизации и ускорения релизов. Например, для работы с базами данных используем DBeaver.
На текущий момент у «иду» 14 тысяч установок. Каждый месяц мы добавляем новые фичи. Балансируем между достижением бизнес-целей продукта и упрощением жизни юзеров.
Активно следим за ключевыми метриками приложения. Анализируем действия пользователей — как они собирают маршруты и доходят ли до конечной точки. Например, конверсия основной воронки от установки до открытия маршрута составляет 22%. TimeSpent — 8 минут. За это время человек как раз успевает совершить целевое действие и составить маршрут с крутыми местами по интересам.