Мобильное приложение на Flutter: плюсы и минусы для бизнеса
Ускорить разработку приложения можно с помощью кроссплатформенных фреймворков — например, React Native или Flutter. В чем их сильные стороны и ограничения? Когда нужна «кроссплатформа», а когда – нативная классика?
Делимся фактами из практики mobile.SimbirSoft — мы 13 лет создаем приложения для ритейла, образования, банков, медицины и других отраслей.
70% покупок происходит через мобильный канал
На 7% больше стало интернет-пользователей за последний год, а их общее количество в мире достигло 4,6 миллиарда, по данным We Are Social. Во время пандемии как минимум одну онлайн-покупку совершили до 80% респондентов, по оценкам Data Insight, более 70% активных покупателей оформляют заказы через смартфоны.
Мобильный канал становится все более важен для контакта с аудиторией. Сроки и стоимость разработки приложения при этом во многом зависят от выбора стека технологий: языков, фреймворков, библиотек.
Среди критериев выбора инструментов — функциональность будущего приложения, опыт команды, сроки реализации проекта и выхода на рынок, бюджет, возможность масштабирования и многое другое.
В мобильной разработке выделяют две основные группы приложений:
- Нативные (от англ. native — родной)
В таких приложениях код создают с нуля под каждую платформу, на языке этой платформы и со стандартными библиотеками SDK (software development kit). Например, для Android зачастую используют языки Java или Kotlin, а для iOS – Objective-C или Swift.
- Кроссплатформенные
Код пишут один раз и затем компилируют для iOS, Android и других платформ. Приложения будут работать и выглядеть в нескольких мобильных операционных системах идентично. Подходящих инструментов разработки много, начиная от Kotlin Multiplatform Mobile (KMM), Bitrix Mobile, Xamarin и Cordova и заканчивая Flutter, который активно продвигается Google и постепенно набирает популярность.
Мы в своей практике чаще всего используем два кроссплатформенных фреймворка:
- React Native от Facebook на основе языка JavaScript и библиотеки React.js. Анонсирован в 2015 году.
- Flutter от Google на основе языка Dart. Релиз первой стабильной версии в 2018 году.
На примере последнего фреймворка рассмотрим, в чем хороша «кроссплатформа».
Кроссплатформенная разработка: особенности
Сама технология «гибридной» разработки появилась не сегодня. Идея кроссплатформенного решения, которое позволит написать код один раз и запустить на двух платформах одновременно, существовала давно, однако немногие решались на ее реализацию. Официальный релиз Flutter в 2018 году всколыхнул индустрию мобильной разработки.
Примеры компаний, которые уже используют Flutter, можно найти, в частности, на сайте фреймворка:
- BMW — приложение My BMW для управления и проверки состояния автомобиля;
- eBay — сервис eBay Motors для продажи автомобилей;
- Alibaba — приложение Alibaba Xianyu для реализации подержанных товаров;
- Яндекс — Таксометр;
- KFC — аналитическая BPM-система для менеджеров и сотрудников ресторанов.
Создание кроссплатформенных приложений «два в одном» стабильно интересно бизнесу:
- во-первых, в качестве быстрого решения,
- во-вторых, как возможность сэкономить бюджет.
Flutter позволяет сократить состав IT-команды и частично уменьшить затраты времени на проектирование бизнес-логики и тестирование.
Мы выделили несколько ключевых плюсов и ограничений Flutter на основе оценок нашей команды.
Плюсы:
- Скорость. Вы реализуете приложение одновременно для двух платформ, переиспользуя часть кода и сокращая time-to-market (TTM) — срок выхода на рынок.
- Экономия. Flutter в среднем экономит от 5 до 20% времени разработки, хотя для каждого проекта этот показатель будет уникальным, в зависимости от сложности приложения, его UI и функций.
Усредненная «формула»: 1 Flutter-разработчик зачастую может выполнять задачи 2 нативных разработчиков (iOS, Android) в те же сроки. В свою очередь, если в приложении много нативных функций, бывает удобно сочетать нативную разработку (например, для библиотек) и Flutter (для создания единой логики и UI).
Одинаковый UI (пользовательский интерфейс) на Android- и iOS-платформах. Движок Skia от Google помогает правильно нарисовать тот или иной элемент для каждой версии, а в результате вы получаете единообразие в приложениях.
Меньше риск ошибок в бизнес-логике, поскольку iOS- и Android-версии имеют единую основу.
- Возможность компиляции приложения под desktop-платформы в дальнейшей перспективе.
В силу перечисленных преимуществ, по нашим оценкам, Flutter предпочтителен для ситуаций, когда нужно максимально ускорить разработку.
Пример: вы хотите проверить бизнес-гипотезы с помощью MVP-версии продукта, начиная с наиболее необходимых функций и расширяя их по мере его развития.
Запрос на скорость разработки появляется у бизнеса во время изменений на рынке. Пример — тренд на всеобщую цифровизацию в ритейле и фудтехе во время пандемии.
С кроссплатформой можно поэкспериментировать, когда вы внедряете что-то новое. При этом важно, чтобы у вас в команде были специалисты с высоким уровнем компетенций. В любом случае важно учитывать стоимость развития приложения, нативного или кроссплатформенного, в частности, наличие опытных разработчиков, стоимость их найма и погружения в задачи.
Ограничения:
- Высокий уровень сложности
Если в вашем приложении есть сложные вычисления, большое количество товаров, нужен доступ к аппаратным возможностям устройства (камера, файлы) – фреймворк нужно выбирать вместе с командой, которая займется разработкой приложения.
- Дефицит кадров
В отрасли пока еще мало опытных кроссплатформенных разработчиков, что усложняет подбор IT-команды, хотя комьюнити постоянно растет.
- Особенности работы работы с графикой
В некоторых гибридных приложениях могут «подтормаживать» интерфейс и графика, однако, непосредственно для Flutter эта проблема нетипична.
- Поддержка старых версий
Кроссплатформенные приложения могут потребовать дополнительных трудозатрат, если нужна поддержка старых версий iOS и Android.
- Скорость доставки фич
Допустим, вы оценили авторизацию по отпечатку пальца (fingerprint) в условные 10 часов. Если в операционной системе произойдут какие-либо изменения, в нативном проекте срок разработки зачастую останется прежним — 10 часов, тогда как в кроссплатформенном реализация может занять 10-15 часов. При этом практика показывает, что комьюнити достаточно оперативно находит способы для сокращения этого срока.
Если как минимум одно из этих ограничений критично для вашего проекта — вам стоит, помимо кроссплатформенных решений, рассмотреть альтернативу — нативные технологии.
Плюсы
- Моментальный доступ к новым функциям «родной» платформы.
Любые обновления Google или Apple можно предоставить клиентам сразу, буквально на следующий день после выхода очередной версии ОС. На Flutter и других кроссплатформенных фреймворках может потребоваться больше времени для того, чтобы начать работу с новыми функциями.
Например:
- темная тема бета-версии iOS-13 на Flutter вышла немного позже основного релиза;
- виртуальная реальность VR во Flutter на момент написания статьи представлена только на базовом уровне: можно вывести видео или изображение, а вот прогуляться по 3D-локации вряд ли получится.
- Доступно взаимодействие со специфическими функциями устройства.
Например:
· работа с высоконагруженными процессами;
· обработка видео;
· гироскоп, компас, модуль распознавания отпечатка пальца;
· функции шифрования данных в банковских технологиях.
При этом нативные модули иногда можно подключать в гибридные приложения, допустим, видеочат — на кроссплатформе, а SDK для ускорения работы видеочата на C++. Например, при помощи библиотеки dart:ffi можно интегрировать взаимодействие с С++ кодом, а для простых нагрузочных элементов можно использовать изоляты, которые позволяют выполнять высоконагруженные действия в новом процессе, избегая проблем с нагрузкой в основном изоляте.
- Нативная среда позволяет добиться максимальной производительности.
Нативный код использует меньше оперативной памяти, слабее нагружает процессор при работе с достаточно тяжелой анимацией, так как отсутствуют различные преобразования для показа изображения, которые имеются у Flutter.
Минусы
- Нативная разработка может стоить дороже.
Один Flutter-разработчик зачастую может выполнять задачи двух нативных специалистов (iOS, Android), как отмечено выше. Однако, для реализации отдельных нативных функций, для которых нет готовых плагинов, разработчику нужно будет знать и iOS, и Android – чтобы адаптировать нативные плагины к Flutter либо создать их с нуля.
Однако это не значит, что расходы автоматически увеличатся именно в 2 раза, так как затраты зависят от особенностей проекта, объема работы, квалификации сотрудников и других факторов.
- Отдельные тесты для каждой платформы.
Как и при нативной разработке, нужно предусмотреть тестирование приложения для Android и iOS. При этом возможны отличия в логике фич в разных версиях.
- Для анимаций предпочтительна кроссплатформенная разработка.
При создании различных сложных анимаций может понадобиться свой подход к каждой платформе, что увеличит трудозатраты. В свою очередь, кроссплатформенный Flutter не просто предоставляет разработчику прослойку между кодом и системными виджетами, но и помогает в их отрисовке, обеспечивая высокую скорость действий и отзывчивость интерфейса.
Кому подходит нативная разработка
- мультифункциональным проектам с высокой нагрузкой и многоступенчатой вложенностью, таким как суперприложения Тинькофф и других банков;
- крупным торговым площадкам с большим количеством контента, таким как «Озон», «Алиэкспресс», «Беру»;
- если у вас уже сформирована IT-команда, и она имеет более глубокую экспертизу в нативной разработке, чем в кроссплатформенной.
Подводя итоги
Тому, как выбрать технологический стек, чтобы оптимизировать бюджет и сроки создания продукта, мы посвятили одну из наших онлайн-трансляций с представителями бизнеса. В результате вместе с экспертами мы сформулировали несколько рекомендаций.
Кроссплатформенная разработка подходит для тех ситуаций, когда:
- Продукт еще не имеет широкой известности, пользовательский спрос не сформирован и необходимо быстро вывести на рынок MVP в качестве пилотной версии.
- Когда рынок сформирован, но бизнес хочет обогнать конкурентов и реализовать новую фичу — важна высокая скорость разработки сразу на две платформы. Не нужно много времени на написание кода, тестирование и можно сэкономить ресурсы.
При этом в Flutter уже реализовано множество необходимых библиотек, не нужно ждать выхода отдельных инструментов — они есть и работают хорошо, имеют подробную документацию.
Flutter — достаточно молодая технология, которая сейчас на хайпе, как некоторое время назад это было с React Native. Предполагалось, что React Native поборет нативную разработку. Но этого не произошло. Мобильная нативная разработка существует и развивается, крупные вендоры поддерживают свои языки. Flutter реализуют с учетом ошибок, существовавших в более ранних решениях.
В нашей практике нативные проекты составляют не менее 50%, однако есть и проекты ведущих брендов, которые активно внедряют гибридную разработку. Преимущества и недостатки есть у каждой технологии. За какой платформой будущее — покажет время. Подробнее о способах создания мобильных приложений можно узнать в нашем блоге на Хабре.
Больше кейсов и советов по разработке IT-решений — в нашем Telegram!
Комментарий недоступен
костыльных джунглей?
Нативщики после ReactNative, Xamarin, lonic, PhoneGap…. :
Начинаете как для тупых, а заканчиваете для программистов с ffi и изолятами.
Каждая статья о флаттер пестрит одной и той же проблемой - люди почему то считают, что это фреймворк для разработки кроссплатформенных приложений от А до Я. Это фреймворк для разработки кроссплатформенного UI и библиотека с виджетами. Изоляты - параллелить процессы можно, а разделять общие ресурсы нет - всё в духе интерфейсных задач. На главной странице Dart так и написано - язык для UI. Come on, вы либо будете годами ждать появления библиотеки для работы, предположим с лидаром, либо отделите зерна от плевел и будете использовать вещи по назначению. UI - самая изменчивая часть приложений, именно эту проблему решает фреймворк. И он не для того, чтобы вы на нем своим заказчикам писали приложения от и до, если конечно это не ТуДу-шки.
Стоит отметить, что Flutter позволяет создавать как UI, так и целое приложение. В случае кроссплатформенной разработки при недостатке библиотек, как правило, можно сделать отдельный плагин. В целом технологии выбирают отдельно для каждого приложения, в зависимости от его особенностей.
Миром правят деньги, где меньше расходов туда стоит смотреть. Будущее за Flutter, Скоро и Китай под везёт свою ОС.
Мы уходим от flutter на iphone 13 pro max тормозит и лагает, делали огомные оптимизации, есть еще идеи по оптимизации, но не целесообразно.