Как в KeepSolid разработали LezGo — навигатор для совместных автопутешествий

В рубрике DOU Labs мы приглашаем IT-компании делиться опытом собственных интересных разработок и внутренних технологических инициатив. Вопросы и заявки на участие присылайте на  Данный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра. .

Привет! Меня зовут Антонина, я Project Manager в компании KeepSolid. Недавно мы выпустили новое приложение LezGo — навигатор для совместных автопутешествий, который разработала команда студентов нашей IT-интернатуры. В статье я расскажу о том, как создавался проект, с какими сложностями столкнулись студенты при разработке, как решали их и что у нас в итоге получилось.

Как появилась идея создания LezGo

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

Идею придумал наш офис-менеджер 3 года назад, когда в одном из автопутешествий на четырех машинах мы постоянно синхронизировали свои действия и созванивались, чтобы узнать, кто где пропал. Уверены, многие сталкивались с подобными неудобствами и поймут, о чем речь. В то время эта проблема была очень актуальной: тогда еще не было режима навигации для нескольких человек ни в Google Maps, ни в других популярных приложениях, таких как Roadtrippers, Waze или Google Trips. Командная навигация и удобство приложения должны были стать нашим главным конкурентным преимуществом.

В результате проект LezGo стартовал трижды в разных группах студентов интернатуры. До этого все заканчивалось ничем: студенты то теряли интерес, то не могли завершить проект из-за нехватки навыков. Мы с руководством компании уже не ждали, что приложение обойдет конкурентов, и не строили коммерческих иллюзий. Нашей целью стало дойти до конца и выпустить продукт, несмотря на все сложности во время разработки. Наша третья попытка оказалась удачной.

Процесс разработки

В сентябре 2017 года после успешного прохождения основной программы летней интернатуры 6 junior-разработчиков (1 iOS, 2 Android и 3 back-end) приступили к проекту Trip Navigator (тогда LezGo назывался так). Рабочий процесс был организован просто: мы выделили для ребят рабочие места, описали продукт, и они приступили к работе.

К каждому из джунов был прикреплен ментор — более опытный разработчик из нашей компании, который проверял код, помогал студенту безболезненно погрузиться в проект и получить экспертизу. Совместными усилиями в апреле 2018 года ребята подготовили к релизу первую версию с минимальным функционалом:

  • основной экран приложения — карта, на которой отображалось текущее местоположение пользователя (с использованием GPS);
  • два режима работы — режим автора маршрута и режим участника;
  • возможность создать 2 типа маршрута: первый — от точки текущего местоположения до заданной пользователем точки, второй — из точки A в точку B (возможны и промежуточные пункты, например маршрут с 10 остановками в конкретных местах);
  • возможность пригласить на маршрут участников (доступно автору маршрута);
  • для маршрутов с участниками на карте — отображение пина автора маршрута с иконкой автора, пинов участников;
  • перестроение маршрута при отклонении от заданного;
  • синхронизация между устройствами (списка контактов, маршрутов, данных пользователя);
  • отправка писем и уведомлений об определенных событиях (например, пригласить/удалить участника, напомнить об инвайте, завершить маршрут и т. д.).

Однако в итоге было принято решение отложить релиз до лета, чтобы добавить в него новые фичи.

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

Техническая реализация

iOS-версию писали на языках Objective-C и Swift, а версию для Android — на Java и Kotlin. Для back-end использовали PHP и JavaScript, так как это достаточно быстродейственные и относительно дешевые (по стоимости внедрения и сопровождения) языки программирования. JS, конечно, уже ушел далеко вперед от PHP, но JS мы использовали только для создания сокет-серверного сервиса для постоянного общения клиентского приложения и сервера (следовательно, мы использовали не все возможности языка, а лишь конкретную библиотеку). PHP в этом списке — наш любимчик. Это основной язык нашего back-end-отдела.

В качестве фреймворков мы выбрали:

  • Firebase — для push-уведомлений (cloud messaging);
  • Socket.IO — как общую библиотеку;
  • Retrofit, Gson, AndroidX — в качестве библиотек для Android;
  • Phalcon — для back-end-разработки. Этот фреймворк позволяет быстро начать разрабатывать, поскольку имеет готовый набор методов. Выбран он был из-за своего быстродействия в сравнении с другими фреймворками (например, Yii, Laravel, Symfony). Позволяет выигрывать в производительности.

PHP и Phalcon отлично подходили для LezGo по нескольким критериям:

  1. У них низкий порог вхождения, что дало быстрый старт для разработки.
  2. Если писать на других языках, они были бы тяжелее в сопровождении другими сотрудниками, следовательно, в случае ухода сотрудника потребовалось бы больше времени на знакомство с проектом.

Также для работы мы использовали:

На iOS:

  • Cocoa Pods — менеджер зависимостей для проектов на Swift и Objective-C;
  • Xcode — для работы со сторибордами.

На Android:

  • Gradle — как инструмент сборки проекта;
  • Android Studio — IDE от Google.

Back-end:

  • PhpStorm — IDE oт JetBrains. Используется для back-end-разработки всех наших проектов.

Общение с сервером происходит через REST, WebSocket. Для архитектуры проектирования мы взяли MVC, Apple MVC и Android MVP.

Наш QA-отдел тестировал приложение с помощью manual testing, но часть функционала LezGo также покрыта unit-тестами.

Сложности при разработке

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

Главной сложностью/препятствием в разработке LezGo стало изменение ценовой политики сервиса Google Maps. Изначально мы планировали использовать Google Place API для поиска мест и Google Directions для построения маршрута. Но в июне 2018 года нас ждал неприятный сюрприз: компания Google подняла цены на коммерческое использование своих карт в 14 раз и уменьшила лимит бесплатного использования почти в 30 раз. Это было слишком дорого, и команда была вынуждена искать альтернативное решение. Большую часть приложения пришлось переписывать.

После тщательного изучения конкурентов и ресерча мы остановились на HERE Maps. Среди его главных преимуществ — возможность полноценно использовать пошаговую навигацию в режиме офлайн и большое количество карт разных регионов.

Под формат данных HERE Maps пришлось переписать большую часть приложения: мы применили другую логику работы с картами в клиентах, переделали back-end и полностью изменили логику навигации. В финальной версии мы также добавили/реализовали новый функционал:

  • еще один режим Follow me — следование за автором маршрута;
  • ограниченный режим без авторизации (доступен только просмотр карты и маршрута);
  • типы остановок для участников маршрута (заправка, обед, техническая неисправность и т. д.);
  • выбор мест по траектории маршрута: вдоль выбранного маршрута пользователь может отмечать отели, АЗС, кафе, интересные места/достопримечательности.

Как работает итоговая версия LezGo

LezGo отлично подойдет любителям автопутешествий. Они являются нашей главной целевой аудиторией. Приложение предназначено как для индивидуальных, так и для совместных поездок на двух-пяти-семи (и даже больше) автомобилях.

Работает LezGo по такой схеме:

Релиз в App Store и планы на будущее

Несмотря на высокие требования и ряд препятствий в ходе разработки, несколько недель назад приложение LezGo появилось в App Store. Для нас это подтверждение того, что с решением набирать и учить студентов мы не промахнулись, а для интернов это стало шансом реализовать себя.

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

Над геймификацией мы тоже думаем. Нам интересно добавить в приложение элемент соревнования. Кто проехал больше километров? У кого был самый насыщенный маршрут? Чьи фото из поездки собрали больше всего лайков? Как будет работать система поощрений, бонусов и плюшек для самых активных пользователей, пока не обсуждали. Но это в планах.

Вдобавок мы хотим реализовать в приложении ряд функций:

  • возможность создавать маршрут поездки онлайн в веб-версии приложения;
  • чек-лист вещей, которые нужно взять в дорогу, а также рекомендации, которые варьируются в зависимости от места поездки. Например, путешествующим в район N приложение порекомендует взять с собой лопату, палатку, дождевик, спрей от комаров, теплую одежду и т. д.;
  • список предлагаемых/популярных дорожных маршрутов в районе с возможностью планировать поездку на будущее;
  • поиск компании для поездок через приложение (возможность задать начало и конец маршрута, указать время и найти людей, которые также заинтересованы в данном маршруте); также можно будет получать уведомления, когда кто-то запланирует открытую поездку по интересующему вас маршруту.
Похожие статьи:
Протягом останньої доби через війну в Україні ще низка світових технологічних компаній припинили співпрацю з росіянами та йдуть...
В выпуске: TypeScript 3.0, новый фреймворк от Uber, как инженеры Airbnb искали дзен в мобильной разработке, зачем нам нужен WebAssembly и немного...
Компания FiiO вслед за выпуском своей флагманской модели Hi-Fi аудиоплеера FiiO X7 анонсировала для российского рынка младшую модель...
У свіжому дайджесті DOU News обговорюємо, чи запрацювало електронне бронювання, що відбувається з податками, як зламати 8,5...
  На днях компания Google сделала заявление касающиеся своей гарнитуры Google Glass, которую часто используют находясь за рулем....
Яндекс.Метрика