17% скидка на размещение рекламы на площадках devby — до 20 ноября. Клац!
Support us

«Всё кричит о том, что это «Ягуар». Как белорусская команда работает над приложением для Jaguar Land Rover

5 комментариев
«Всё кричит о том, что это «Ягуар». Как белорусская команда работает над приложением для Jaguar Land Rover

В мае Jaguar Land Rover впервые за 9 лет полностью обновил iOS-приложение для своих авто. Пока оно доступно только для жителей Великобритании. Дизайном, а также разработкой сервиса под iOS и Android занималась минская команда из Bamboo Apps. У ребят есть опыт сотрудничества с автопроизводителями: они делали софт для Skoda Auto, занимались разработкой HMI и «подключённых функций» для швейцарской Rinspeed.

dev.by встретился с разработчиками, чтобы подробнее узнать о том, как разрабатывается приложение для JLR.

«Пилотным стал R&D проект по разработке приложения для тест-драйва без представителя дилера»

В Bamboo Apps отмечают, что с JLR они работают на протяжении почти двух лет. Пилотным стал R&D проект по разработке приложения для тест-драйва авто без участия представителя дилера.

— У менеджеров компании была идея автоматизировать тест-драйвы, — говорит СТО минской компании Сергей Мищенко. — Мы сделали тестовую версию, и концепт очень понравился. Сервис проверили в Гейдене, где находится R&D-центр JLR, а спустя полгода в США — с реальными юзерами.

В результате клиент остался доволен сотрудничеством, решили сделать на базе версии от Bamboo Apps полноценное приложение. «Но пока оно ещё в процессе разработки, — добавляет СОО Анатолий Спирков. — Проект очень трудоёмкий».

«В машинах появляются новые фичи, и их нужно как-то реализовать в приложении»

— Приложение, над которым сейчас работает команда, — вторая версия существующего сервиса, написанного ещё в 2010 году, — рассказывает Сергей. — Оно позволяет удалённо управлять системами автомобиля: открывать/закрывать двери, управлять климатической установкой, отслеживать технического состояние и местоположение автомобиля.

Разработчики «полностью переосмыслили его» и сделали редизайн. Вся работа заняла 1,5 года.

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

Прежде чем начать работу над новой версией, ребята из Bamboo Apps в течение 8-9 месяцев занимались усовершенствованием её предшественницы — изучали, вникали в детали. Говорят, было непросто. На добавление чего-то нового к старому коду требовалось очень много времени. Периодически возникали проблемы, а попытки их исправить порождали «снежный ком» из других, потому что между модулями существовали зависимости.

— Когда мы пришли на проект, значительная часть автоматизированных тестов не работала, потому что при добавлении новых фич старые тесты просто не переписывались. Ты исправляешь самый маленький баг — и надеешься, что не сломается что-то ещё, более серьёзное, — отмечает Сергей.

— Плюс морально устарел дизайн, — добавляют его коллеги. — Так что JLR постепенно созрели к тому, чтобы выпустить новое приложение, которое:

  • во-первых, соответствует современным техническим требованиям автомобилей;
  • во-вторых, отвечает запросам пользователя.

«Например, вы хотите, чтобы автомобиль заряжался с 2:00 ночи до 7:00 утра, а в 8:00 запустил климат-контроль»

— Когда было принято решение передать нам новую версию, её разработка уже велась другой компанией в течение трёх месяцев, — говорит Анатолий.

Какие-то вещи уже были запланированы:

— Из must have фич — режимы зарядки электроавтомобиля, режимы запуска климата, а также установки времени зарядки.

Если, например, вы хотите, чтобы автомобиль заряжался с 2:00 ночи до 7:00 утра, а в 8:00 запустил климат-контроль и подогрел машину, всё это можно сделать удалённо из приложения, — рассказывает Сергей.

— Вообще первостепенная задача второй версии — выпустить всё тот же набор функционала, что был в первой, но с небольшими отличиями, которые соответствуют современным запросам: а-ля вход в приложение с помощью Touch ID и Face ID для iPhone и для Android. А в последующем — без проблем добавлять новый функционал, которого ранее не было, с учётом запросов бизнеса и пользователей. Задача для дизайнеров — выполнить редизайн, — добавляет Александр Антонюк, менеджер проекта.

Александр

Александр

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

— После, когда приложение начало обретать финальные черты, мы подключили к бета-версии обычных пользователей — но очень ограниченный круг, 100+ человек.

«Когда выбирали технологии, Kotlin был „тёмной лошадкой“. Но задел для перехода есть»

Сравнивая версии и рассказывая о том, что изменилось, Сергей отмечает, что изначально для iOS использовали Objective C, теперь Swift.

— В Android-версии, к сожалению, так и осталась Java: когда выбирали технологии, Kotlin всё ещё был «тёмной лошадкой» — в JLR сомневались, и в итоге решили не рисковать, — говорит собеседник dev.by.

Тем не менее команда «сделала задел для перехода» на Kotlin:

— Вопрос миграции поднимался несколько раз, и сейчас мы активно обсуждаем переход. Мы думаем, что проще всего будет начать с тестов, — рассказывает Сергей.

Говоря о тестах, СТО Bamboo Apps отмечает, что команда добавила в приложении UI-, BDD- и Unit-тесты. «Мы стараемся со всех сторон обезопасить себя от необдуманного рефакторинга, а также от проблем с UI».   

Разработчики рассказывают, что придерживались так называемой чистой архитектуры.

— Бизнес-логика у нас одинакова и для iOS-, и для Android-, и она не зависит ни от фреймворков, ни от платформы, ни от чего бы то ни было ещё.

«Во время ремонта автомобиля вы не будете получать уведомления, что с него сняли аккумулятор»

Рассказывая о трудностях в работе над проектом, Сергей не скрывает, что немало проблем было у команды с нотификациями по Service и Transport Mode.

— Эти секьюрити-фичи нужны для того, чтобы во время ремонта автомобиля или путешествия на пароме, к примеру, тебе на телефон не приходили уведомления, что с машиной что-то не так — угнали, сняли аккумулятор и так далее.

Вроде бы всё просто, но мы столкнулись со множеством проблем на бэкенде: статус «активировано» после включения Service или Transport Mode спустя секунду-другую сменялся — и в нём уже не было указано, что функция включена.

Мы долго бились над решением, пытались сделать что-то на стороне мобильного приложения. В итоге через 6 месяцев обновили бэкенд — и только тогда  смогли добавить эту функцию.

Непросто шла работа по локализации сервиса:

— Когда у тебя больше 40 языков — для всех это боль: весь текст вроде бы перевели, но тут начинается — его либо очень много, либо мало, и это некрасиво. Где-то слова не переносятся, всё торчит в разные стороны. Дизайнерам приходится думать, как выставить правила, чтобы текст был красивым на всех языках. Потому что делать отдельную вёрстку для каждого языка — это так себе подход.

Что ещё — разработчикам пришлось написать 2 варианта сервиса под Android: одну версию для Европы и США, другую — для Китая, потому что там не работают установленные в сервисе Google-карты.

«Старый дизайн не в последнюю очередь причина того, что предыдущая версия зашла в тупик»

Дизайн приложения серьёзно изменился по сравнению с версией 2010 года.

— Картинка значительно посветлела: если раньше сервис был выполнен в серой гамме, то сейчас — с использованием белого.

В то же время акцент сделан на использование большого количества брендовых элементов — цветов, шрифтов, элементов: водитель сразу понимает, что использует функционал, который относится именно к Jaguar Land Rover. Всё «кричит» о том, что это «ягуар», — отмечает арт-директор Игнат Плотников.

Игнат

Игнат

Он рассказывает, что у нового приложения с точки зрения дизайна «более простая архитектура, чем у предыдущего».

— Старый дизайн — вот что не в последнюю очередь виной тому, что предыдущая версия зашла в тупик. Функционал добавлялся и добавлялся — архитектура сервиса становилась всё более непонятной. В приложении было огромное, странное меню, которым было тяжело пользоваться. Поэтому первое, с чего началась переработка — с создания новой архитектуры: чтобы можно было открыть-закрыть что-то при помощи нажатия одной кнопки.

Игнат отмечает, что не все решения дизайнеров были интуитивно понятны пользователям:

— Работая над изменением экрана настроек машины, мы осознали, что хоть он и выглядит симпатично, но юзеры не понимают, как им пользоваться. Некоторые водители не могли дойти до того, как поменять имя машины — и задать вместо Jaguar F Type, например, «моя ласточка».

Получилось так, что мы реализовали функционал, но затем нам пришлось его обновлять.

— Но в этом и плюс того Agile-подхода, которого придерживается JLR: участие пользователей в тестировании, ещё до релиза, позволило нам проявлять гибкость — и менять многие вещи ещё в процессе разработки, — добавляет Александр.

«Считаем правильным решение использовать чистую архитектуру с разбиением»

Предмет особой гордости команды, «то, что было сделано безупречно с первого раза — экраны: мы сделали их сразу, и больше ничего не добавляли, и не меняли», — отмечает Сергей

Собеседник dev.by вспоминает, что удачной идеей было также сделать детализацию ошибок — почему не удалось запустить какой-то функционал: «например, потому что села батарейка или ещё что-то». Раньше сервис просто выдавал ошибку, не уточняя, в чём её причина. До этого пользователь должен был доходить своим умом.

— Что ещё мы считаем правильным — решение использовать чистую архитектуру с разбиением: сейчас это помогает нам добавлять новые фичи без жёсткого связывания.

— Я вспомнил ещё одну штуку: у нас есть разработчик Сергей Никитенко, в начале работы на этом проекте он копался в коде и обнаружил библиотеку, которую когда-то написал и запаблишил на GitHub. И эту его «либу» использовали в приложении для JLR. Было приятно об этом узнать.

Разработчики говорят, что они делали приложение совместно с двумя командами JLR — в Манчестере и в Гейдене.

Однако Анатолий призывает не делить их по локальному признаку, и говорит что «по сути все находятся в одной лодке» — как одна большая команда.

— Когда во время совещаний принимаются решения, абсолютно любой участник может высказать свою точку зрения, и её примут к рассмотрению, — таковы наши Agile-процессы.

Читайте также
В ГАИ рассказали про «всевидящее око», которое следит за порядком на дорогах
В ГАИ рассказали про «всевидящее око», которое следит за порядком на дорогах
В ГАИ рассказали про «всевидящее око», которое следит за порядком на дорогах
Беларусскую систему мгновенных платежей будут интегрировать с российской
Беларусскую систему мгновенных платежей будут интегрировать с российской
Беларусскую систему мгновенных платежей будут интегрировать с российской
9 комментариев
Беларусы будут платить налог на электромобили со следующего года
Беларусы будут платить налог на электромобили со следующего года
Беларусы будут платить налог на электромобили со следующего года
Польские власти подозревают Беларусь и Россию в атаках на местную систему быстрых платежей
Польские власти подозревают Беларусь и Россию в атаках на местную систему быстрых платежей
Польские власти подозревают Беларусь и Россию в атаках на местную систему быстрых платежей

Хотите сообщить важную новость? Пишите в Telegram-бот

Главные события и полезные ссылки в нашем Telegram-канале

Обсуждение
Комментируйте без ограничений

Релоцировались? Теперь вы можете комментировать без верификации аккаунта.

Комментариев пока нет.