примеров из практики: Leroy Merlin | Kotlin Многоплатформенный мобильный
Leroy Merlin ↗ помогает людям во всем мире улучшить условия жизни и образ жизни, помогая им проектировать дома их мечты и воплощать их в жизнь.
Мобильное приложение Leroy Merlin помогает покупателям искать товары, совершать покупки в Интернете и находить ближайший магазин. Российский филиал «Леруа Мерлен» имеет магазины в 64 городах, ежемесячно мобильным приложением пользуются 1,5 млн человек.
Решение использовать Kotlin
До 2018 года у Leroy Merlin уже были мобильные приложения для iOS и Android для клиентов. Оба приложения имели нативную реализацию с дублированием доменной логики и очень старый унаследованный код с огромными затратами на управление. Чтобы сделать их более управляемыми, гибкими и экономичными, компания решила их переписать.
Наши приложения были практически идентичны, и ответственность за их переписывание была возложена на мобильную команду, состоящую из 6 инженеров iOS и Android, которые в то время мало делились друг с другом своим опытом, и технического руководителя, который управлял всем фрагментарный процесс. Это был не масштабируемый поток. Более того, у нас было меньше инженеров, чем у типичной команды разработчиков мобильных приложений, а это означало, что нам потребовалось больше времени для внедрения изменений
У нас было 2 варианта, которые могли бы помочь нам ускорить процесс: во-первых, просто нанять больше людей, а во-вторых, использовать технологию, которая позволила бы нам обмениваться знаниями и опытом между командами iOS и Android. Мы выбрали второй вариант и начали искать подходящую технологию, помня, что безопасность, качество и стабильность наших приложений имеют первостепенное значение.
Нам потребовалось некоторое время, чтобы найти кроссплатформенное решение с интеграцией пользовательского интерфейса. Это был критический момент, потому что мы хотели использовать полностью общий подход. Мы рассматривали как Flutter, так и React Native. Это был май 2019 годаа КММ не был широко известен, поэтому мы его пока не рассматривали.
У нас также есть еще одна команда инженеров, которые разрабатывают внутреннее мобильное приложение для сотрудников компании. Они используют React Native в производстве, так что это была первая технология, на которую мы обратили внимание. Но React Native не оправдал наших ожиданий из-за качества кода. При масштабировании приложения React Native теряет качество, поэтому этот вариант мы не учитывали.
Конечно, мы могли бы создать приложение с помощью Flutter, но когда мы углубились в эту технологию, мы обнаружили, что у этого подхода есть две основные проблемы. Первая проблема была с наймом, потому что мало кто знает Dart. Это означало, что проект не будет масштабируемым, потому что у нас возникнут проблемы, если нам понадобится написать какой-то нативный код.
Вторая проблема, которая в конечном счете более опасна, заключается в том, что и для Android, и для iOS постоянно появляются новые выпуски, новые версии и новые шаблоны проектирования, и более чем вероятно, что между нативным выпуском и его реализацией во Flutter будет разрыв. . Это нормально для использования во внутренних приложениях, но мы не можем использовать этот подход для флагманского приложения, ориентированного на клиента.
Некоторые дальнейшие исследования показали, что было бы лучше не использовать пользовательский интерфейс между мобильными платформами. Android и iOS имеют разные рекомендации по пользовательскому интерфейсу, и поддержка этой разницы занимает больше времени, чем просто разработка пользовательских интерфейсов по отдельности.
Мы поняли преимущества кросс-платформенного подхода, и было важно его использовать, поскольку другие команды уже создавали внутренние приложения с общей кодовой базой, и наша команда намеревалась обменяться с ними идеями. Поэтому мы искали подходящее кроссплатформенное решение.
Впервые услышав о КММ, мы поняли, что это именно тот подход, который мы искали. Он исключает дублирование бизнес-логики, обеспечивая при этом производительность и безопасность собственного пользовательского интерфейса.
Наконец, у нас появилась технология, которая позволила нам совместно использовать бизнес-логику, создавать пользовательские интерфейсы для конкретных платформ в соответствии с рекомендациями и одновременно обеспечивать скорость и качество нативных форм. И это можно написать на языке Kotlin, родном для платформы Android. Мы поняли, что это именно то, что нам нужно для нашего проекта.
Как KMM использовался в продукте
Учитывая, что KMM была новой технологией, мы начали тестировать ее с теми частями приложения, которые использовались реже, такими как соглашения с клиентами и страницы поддержки, чтобы выявить проблемы, связанные с библиотекой. возник бы. В нашем приложении есть два типа запросов, с авторизацией и без. Запросы, требующие авторизации, — самая сложная часть, поэтому мы начали экспериментировать с запросами, не требующими ни авторизации, ни места в кеше. В процессе перезаписи модулей на KMM мы с самого начала разрабатывали новые пользовательские сценарии с KMM, но существующие сценарии переносились на KMM, когда их нужно было рефакторить.
Прежде чем писать многоплатформенный код, приложения для iOS и Android должны иметь одинаковую архитектуру с модулями или слоями, имеющими одинаковую логику. В наших приложениях было похожее разделение слоев:
- UI (презентация)
- Домен (уровень бизнес-логики)
- Данные (уровень источника данных)
Сначала мы переместили только уровень данных, но затем мы изменили наш процесс и начали перемещать все остальное, включая варианты использования домена. Единственные части KMM, которые мы не используем, — это пользовательский интерфейс и функции, специфичные для платформы, такие как Apple и Google Pay.
Внутри библиотеки мы используем Ktor, Kotlin Serialization и Coroutines. Мы используем оболочку Rx для адаптации платформы, потому что наши платформы используют Rx, но в будущем мы планируем использовать только Coroutines на Android.
Чтобы улучшить работу функционала корзины пользователя, нам необходимо сделать ее полностью независимой без какой-либо синхронизации с сайтом. Это означает, что с кешем предстоит много работы. Поэтому, чтобы хорошо выполнить эту задачу, мы начали использовать библиотеку SQLDelight для кэширования API. Как только мы закончим эту задачу, мы перенесем больше основных функций приложения в KMM.
Плюсы и минусы
Проблемы, которые мы обнаружили при использовании Kotlin Multiplatform Mobile:
- Наши разработчики iOS обнаружили, что необходимо потратить значительное количество времени на ознакомление и приобретение навыков работы с Gradle, средой разработки и функциями языка .
- Тестировать на устройстве сложнее, и процесс контроля качества обычно сложнее.
- iOS Interop, который в настоящее время является Obj-C.
Прибыль:
- До KMM основные функции, такие как корзина пользователя, требовали примерно 40–60 часов работы для каждой платформы (80–120 часов для обеих), не считая тестирования. С KMM мы можем сократить сроки до 50-70 часов для обеих платформ. Таким образом, используя KMM, мы ожидаем значительного сокращения времени разработки.
- Производительность и качество нативных форм. Мы разделяем только бизнес-логику между платформами и используем собственный код для каждого пользовательского интерфейса. Этот подход дает нам наибольшую производительность с минимальным количеством шаблонного кода.
Простота найма и поддержки. KMM работает на Kotlin, и найти разработчиков для Kotlin очень легко, потому что почти каждый Android-разработчик уже знает его. А благодаря близости к JVM-языкам почти каждый бэкенд-разработчик может работать и с Kotlin, и с KMM.
Идентичная логика на обеих платформах значительно снижает расхождения. На самом деле у нас изначально была проблема в дополнение к дублированию бизнес-логики. Иногда у нас были разные реализации функции на каждой из двух платформ. Мы выпустили наши версии для iOS раньше версий для Android. Иногда мы решали внести некоторые исправления в логику после выхода iOS, и иногда это приводило к тому, что мы внедряли эти исправления только в Android и забывали об iOS. Конечно, это не было правилом, но время от времени случалось. KMM помогает нам избежать этих проблем, потому что если вы что-то исправляете, вы исправляете это на обеих платформах одновременно. Но будьте осторожны: это также означает, что ошибки появятся на обеих платформах.
Предложения, советы и рекомендации.
Допустим, вы решили использовать КММ (хороший выбор). Но в вашей команде есть iOS-разработчики, которые не знакомы с Kotlin и не умеют им пользоваться. Вам обязательно нужно будет помочь им адаптироваться к новому языку. Мы обнаружили, что создание базы знаний Kotlin и KMM значительно облегчает этот процесс. Каждый раз, когда вы сталкиваетесь с проблемой в чем-то (развертывании, добавлении библиотек и т. д.), создавайте документацию и делитесь ею со всеми разработчиками, тогда они смогут обратиться к ней позже и решить, как что-то делать.
Важный момент — не навязывать КММ командам, особенно команде iOS. Нужно объяснить, что с KMM разработчики iOS не перестанут работать с экосистемой Swift или Apple. У нас есть разработчики, которые работают с KMM, и разработчики, которые этого не делают. Важно объяснить, что Kotlin не означает, что вы предпочитаете Android. Это общее решение. Эти пояснения важны, потому что, если вы не проясните эти моменты для разработчиков iOS, они могут отвергнуть этот подход.
Еще одна проблема с iOS — локальная среда Kotlin. Если вы хотите добавить зависимость от вашего локального модуля KMM в качестве модуля через интеграцию с Cocoapods, это означает, что вам необходимо создать собственный код Kotlin для этого модуля. Это усложняет сборку проектов, влияет на разработчиков iOS, которые не хотят работать с мультиплатформой, и увеличивает время сборки проекта. Мы исправили эту проблему, изменив файл Cocoapods Podspec. Мы изменили источник нашей библиотеки Kotlin с Git на URL-адрес с готовым к работе zip-архивом с Apple Framework. И теперь разработчики iOS работают с KMM так же, как и с любой другой предварительно созданной зависимостью Cocoapods.
Пожалуй, самый важный совет, который мы даем людям, заключается в том, что они не должны бояться быть в числе первых, потому что без риска нет награды. KMM — очень стабильная технология с огромным сообществом, поэтому, если вы хотите сэкономить время и упростить разработку приложений, попробуйте Kotlin. Но помните, что надежность и безопасность являются главными приоритетами, поэтому старайтесь вносить изменения постепенно и начинайте с тех частей вашего приложения, которые не являются критическими.
Контакты
Алексей Гладков, Архитектор мобильных технологий, Leroy Merlin aleksey. [email protected]
Слава Корниенко, Старший разработчик Android в Leroy Merlin [email protected]
Leroy Merlin выбирает Voltalia для обеспечения солнечной энергией своего
Французская
Leroy Merlin, ведущая французская компания по благоустройству дома розничной торговли , и Voltalia (Euronext Paris, код ISIN: FR0011995588), международный игрок в области возобновляемых источников энергии, объявили о подписании договора купли-продажи на производство новая солнечная электростанция мощностью 30 мегаватт, расположенная в регионе Центр-Валь-де-Луар.
Leroy Merlin и Voltalia подписали CPPA 1 на изготовление дополнительной солнечной электростанции мощностью 30 МВт, специально построенной для Leroy Merlin. Это соглашение заключено по заранее установленной цене минимум на 15 лет (с возможностью продления) и позволит Leroy Merlin получать около 15% потребляемой электроэнергии за счет возобновляемых источников энергии.
Ввод в эксплуатацию солнечной электростанции запланирован на 2025 год.
Этот договор купли-продажи является частью глобального партнерства с ADEO, ведущим международным игроком в области благоустройства дома, которое объединяет десять специализированных брендов, включая Leroy Merlin.
Себастьян Клерк, генеральный директор Voltalia, сказал: «С заключением этого первого CPPA Voltalia гордится тем, что благодаря этому проекту выполняет конкретные действия в пользу u r окружающей среды и способствует принести ing конкурентоспособную энергию своему партнеру.
Жером Патернотт, директор по развитию Leroy Merlin Франция: “Очевидно, что Leroy Merlin играет свою роль в переходе к энергетике. Мы поддерживаем жителей в этом процессе и, конечно же, принимаем меры в наших собственных зданиях. Мы ремонтируем их, чтобы потреблять меньше, как раз то, что необходимо. В период с 2018 по 2021 год мы уже зафиксировали снижение на 13 % 90 123 90 122 90 123 90 122 90 123 90 122 углеродного воздействия их энергопотребления. Сегодня вместе с Voltalia мы повышаем уровень потребления благодаря использованию возобновляемых источников энергии. Наша траектория ясна: к 2025 году магазины будут на 100 % обеспечиваться экологически чистой энергией, при этом часть продукции будет производиться непосредственно на месте».
Далее на повестке дня: Первый HAL F 2022 Результаты , 28 сентября 2022 года (до открытия на рынке)
Облизости Merlin | 61616166166166166166166166166166166166166166166161616161616161616161616161616166161616161616161616161616161616161616166 . Adeo Group сегодня является ведущим брендом во Франции во всех каналах сбыта товаров для дома и окружающей среды. Специализируясь на продаже продуктов, проектов и услуг, Leroy Merlin France ставит перед собой цель построить вместе с каждым новый образ жизни для лучшего будущего и ставит удовлетворенность клиентов в центр своего бизнеса. 28 000 сотрудников в 143 магазинах во Франции теперь привержены этой идее. |
. Группа производит и продает электроэнергию, полученную от ветряных, солнечных, гидравлических, биомассовых и аккумулирующих мощностей, которыми она владеет и управляет. Voltalia имеет действующие и строящиеся генерирующие мощности более 2 ГВт, а также портфель разрабатываемых проектов общей мощностью 11,1 ГВт. Voltalia также является поставщиком услуг и поддерживает своих клиентов-инвесторов в проектах по возобновляемым источникам энергии на всех этапах, от проектирования до эксплуатации и технического обслуживания. Являясь пионером на корпоративном рынке, Voltalia предлагает частным компаниям глобальные предложения, начиная от поставок «зеленой» электроэнергии и услуг по повышению энергоэффективности и заканчивая местным производством собственной электроэнергии. Группа насчитывает более 1400 сотрудников, представлена в 20 странах на 3 континентах и может действовать от имени своих клиентов по всему миру. |