Как сэкономить на создании мобильного приложения с помощью мультиплатформы Kotlin

Привет! Меня зовут Алексей Гладков. Я являюсь техническим архитектором «Леруа Мерлен».

Когда в «Леруа Мерлен» встала задача доработать флагманское мобильное приложение для iOS и Android, мы стали искать кроссплатформенное решение, которое не только сделало бы их простыми в управлении и использовании, но и потребовало бы минимальных временных и финансовых затрат.

Проведя исследования, остановились на решении Kotlin Multiplatform Mobile, которое позволило существенно снизить расходы на разработку и поддержку. За счет чего это произошло, расскажем в статье.

Экономия времени, денег и большой рынок найма

Хотя идентичная логика на iOS и Android позволяет избегать значительного расхождения, мы изначально дублировали бизнес-логику и по-разному реализовывали функции на каждой из двух платформ. Это периодически приводило к разного рода проблемам.

Например, приложение для iOS вышло раньше, чем для Android. Случалось, что добавляли изменения в логику iOS, забывая внести то же самое в Android, и наоборот. Из-за отсутствия универсального кроссплатформенного решения приходилось латать дыры то там, то здесь.

Проблема была решена, когда появилась Kotlin Multiplatform Mobile. Теперь любые изменения происходят одновременно на обеих платформах. Правда, теперь нужно внимательнее следить за ошибками, потому что они также всплывают сразу на iOS и на Android.

Kotlin — мультиплатформенный язык программирования, который легко взаимодействует с родными языками разных платформ. KMM позволяет писать единый код для iOS и Android, который можно без проблем изменять и редактировать в дальнейшем. Существенно упрощается тестирование, так как можно один раз создать общий тест и запускать его на всех платформах. Это также удешевляет поддержку и сопровождение.

Благодаря KMM время на создание приложения сокращается примерно на 50%. Мы разделяем логику между платформами и используем собственный код для каждого пользовательского интерфейса. Этот подход обеспечивает максимальную производительность при минимальном количестве шаблонного кода.

Для Kotlin легко найти специалистов, потому что язык является родным для Android и каждый разработчик платформы с ним знаком. А из-за родственности с JVM-языками работать с Kotlin и Kotlin Multiplatform теоретически может практически любой backend-специалист.

Так как разработка, внедрение и проверка кроссплатформенного решения проходит в несколько раз быстрее, мы можем написать и запустить приложения в короткие сроки и существенно сэкономить время и деньги.

Мультиплатформенная технология позволяет использовать единый код, поэтому нет необходимости привлекать и оплачивать труд большой команды специалистов. Благодаря KMM с написанием приложения для iOS и Android справится один разработчик.

Для более сложного проекта создать единый код и бизнес-логику может разработчик Android, а специалисту по iOS нужно будет только подключить библиотеку и UI.

Советы по внедрению Kotlin Multiplatform

Если у вас в команде есть разработчики iOS и вы сомневаетесь, смогут ли они работать на Kotlin, адаптируйте их постепенно, тогда не будет проблем с внедрением KMM.

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

Не забудьте объяснить разработчикам, что выбор KMM не связан с приоритетностью Android. Внедрение Kotlin Multiplatform не означает, что разработчики iOS перестанут работать с экосистемой Swift или Apple. У нас в команде есть специалисты, которые не работают с KMM.

Важно правильно донести до команды, что Kotlin — это общее решение, чтобы iOS-программисты спокойно приняли этот подход.

Для iOS может возникнуть еще одна проблема — это поставка готового артефакта из KMM в iOS проект. Изначально мы просто собрали KMM проект и закидывали готовый framework в проект, подключая его руками.

Таким образом, растет сложность и время сборки проектов, что влияет на разработчиков iOS, которые не хотят работать с мультиплатформой. Решить эту проблему удалось путем изменения файла Cocoapods Podspec. Мы изменили источник нашей библиотеки Kotlin с Git на URL с готовым к производству zip-архивом с Apple Framework. И теперь специалисты iOS работают с KMM как с любой другой предварительно созданной зависимостью Cocoapods.

Для нас важно, что Kotlin Multiplatform Mobile — стабильная кроссплатформенная технология с огромным сообществом, которая позволила значительно упростить создание приложений и сделать их удобными как для разработчиков, так и для клиентов.

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

0
10 комментариев
Написать комментарий...
Yaro Best

Почему не флаттер? Вроде бы он в трендах сейчас) с КММ я еще не знаком, к сожалению. Интересно, какие плюсы и минусы относительно флаттера.

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Yaro Best

я тож) флаттер - это чистый кайф. Но хочу про КММ узнать подробнее. Жаль, руки не пока доходят.

Ответить
Развернуть ветку
Алексей Гладков
Автор

У меня есть несколько роликов на эту тему - 
https://youtu.be/kVg1ZEwovz0
https://youtu.be/G2jCMHvL6Bk

И еще ряд по этой теме на канале

Ответить
Развернуть ветку
Алексей Гладков
Автор

Флаттер тоже рассматривали, но отказались по нескольким причинам. Это не значит, что Флаттер хуже, просто они для разных задач подходят

Приведу список причин:
1. У нас немного, но все же отличается интерфейс для андроид и иос и в будущем планируем только увеличивать разницу
2. У нас все разработчики нативные и мы не можем просто уволить всех разработчиков разом и нанять флаттер, а переучиваться процесс долгий и не все захотят
3. Постоянно выходят новые версии ОС и там появляются инструменты, которые далеко не сразу появляются во Флаттере, поскольку это все же не натив в прямом понимании слова, это компоненты, которые близкие к нативным визуально, но фактически они заново отрисованы на Скии

Вот как-то так

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Алексей Гладков
Автор

А откуда вы знаете, что у нас нет правильно выстроенных процессов, в частности стандартизации дизайн-системы и постановки задач разработчикам? :)

Дизайн-система у нас есть, называется Фронтон и с ней работают все команды в компании. Да и на процессы вроде никто не жаловался. Понятно, что нет пределов совершенству, но у нас есть и перфоманс ревью и внутренний менторинг и скрам. 

Насчет разработчиков вы тоже не угадали. Все iOS разработчики с большим интересом восприняли КММ, да далеко не сразу и нужно было много объяснять, но с этим у нас проблем, слава богу, нет, поэтому посмотрим как сбудется ваше предсказание, пока что вообще не сбывается, так как iOS разработчики занимаются логикой на Котлине наравне со всеми

А уж если ты хороший инженер, то понять котлин, зная Swift, вообще не сложно

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Алексей Гладков
Автор

Да, все так, есть библиотека компонентов в том числе (Android, iOS, Web) из которых собирается дизайн конкретных экранов уже. Помимо гайдлайнов и прочего :) Не понял как тут цитаты делать

При этом существуют некоторые разные реализации компонентов для iOS и для Android, ну, например, пикер. 

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

У нас с Java backend такая ситуация, что половина где-то на Котлине пишет, а половина на Java. Desktop, учитывая кроссплатформенный Compose, мы уже делаем на нем. 

В целом, согласен, что хардкорных iOS разрабов это, наверное, отпугнет, но из всех кто мне попадался на жизненном пути я только одного такого встретил, остальным интересно )

Рад, что подписались, постараюсь писать, что-нибудь еще по теме)

Ответить
Развернуть ветку
Просто Светличный

Сейчас на рынке уже 7 год работает мобильный агрегатор ( глобально) UDS. Локально же это собственное мобильное приложение или маркетинговый инструмент для работы с клиентской базой. Тут более 35 инструментов( мой любимый это отцифрованный сарафан).
Цена 900 выкуп и 300 баксов в год подписка ( обновление андроида, иоса, хоноров, поддержка работоспособности , саппорт, обратная связь)
такое с нуля ни одна компания в мире не предложит.
Есть одна компания , типо конкурент , но у них тоже самое стоит 2300 ! + подписка ( хз сколько , но и не важно)
Кому интересно узнать о продукте детально пишите @italiy_uds

Ответить
Развернуть ветку
7 комментариев
Раскрывать всегда