Как в 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 приложение порекомендует взять с собой лопату, палатку, дождевик, спрей от комаров, теплую одежду и т. д.;
  • список предлагаемых/популярных дорожных маршрутов в районе с возможностью планировать поездку на будущее;
  • поиск компании для поездок через приложение (возможность задать начало и конец маршрута, указать время и найти людей, которые также заинтересованы в данном маршруте); также можно будет получать уведомления, когда кто-то запланирует открытую поездку по интересующему вас маршруту.
Похожие статьи:
Заснована в Україні ІТ-компанія Ciklum відкрила новий делівері-хаб у Болгарії. Центр розробки в Софії розширює присутність компанії...
Дайджест присвячений релізам популярних С++ IDE, що послідували за релізом VS2015 минулого місяця, оновленню, проблемам ручного...
Смартфон Nokia X, известный как проект Normandy, примечательный тем, что это первая модель от Nokia на базе ОС Android продеонстрировал...
Чи можуть незрячі люди навчитись програмувати та працювати в IT? Відповідь на це питання знає Роман Боренько,...
239-й выпуск подкаста “Откровенно про IT карьеризм”. В подкасте пойдет речь о литературе...
Яндекс.Метрика