Як в KeepSolid розробили LezGo — навігатор для спільних автоподорожей

У рубриці DOU Labs ми запрошуємо IT-компанії ділитися досвідом власних цікавих розробок і внутрішніх технологічних ініціатив. Питання і заявки на участь надсилайте на editors@dou.ua .

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

Як з'явилася ідея створення LezGo

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

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

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

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

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

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

Однак у підсумку було прийнято рішення відкласти реліз до літа, щоб додати в нього нові фічі.

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

Технічна реалізація

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

Як фреймворків ми вибрали:

PHP і Phalcon відмінно підходили для LezGo за кількома критеріями:

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

Також для роботи ми використовували:

На iOS:

На Android:

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 і повністю змінили логіку переходів. У фінальній версії ми також додали/реалізували новий функціонал:

Як працює підсумкова версія LezGo

LezGo відмінно підійде любителям автоподорожей. Вони є нашою головною цільовою аудиторією. Додаток призначений як для індивідуальних, так і для спільних поїздок на двох-п'яти-семи (і навіть більше) автомобілях.

Працює LezGo за такою схемою:

Реліз в App Store і плани на майбутнє

Незважаючи на високі вимоги і ряд перешкод в ході розробки, кілька тижнів тому додаток LezGo з'явився в App Store . Для нас це підтвердження того, що з рішенням набирати і навчати студентів ми не схибили, а для інтернів це стало шансом реалізувати себе.

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

Над геймификацией ми теж думаємо. Нам цікаво додати в додаток елемент змагання. Хто проїхав більше кілометрів? У кого був самий насичений маршрут? Чиї фото з поїздки зібрали найбільше лайків? Як буде працювати система заохочень, бонусів і булочок для найактивніших користувачів, поки не обговорювали. Але це в планах.

До того ж ми хочемо реалізувати в додатку ряд функцій:

Опубліковано: 20/06/19 @ 10:00
Розділ Різне

Рекомендуємо:

SAP Commerce Cloud: що вам треба знати про роботу з платформою
Що має знаті Senior Java Developer. Результати аналізу вакансій в Україні та Каліфорнії
Як спілкуватися з іноземними замовниками: поради українським розробникам
Реаліті: інфо-сайт, звіт #3
Android дайджест #34: CameraX, Flutter 1.5, cold flows і hot channels в Kotlin