Разработка
SimbirSoft

Мобильное приложение на 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).

Андрей, тимлид и Flutter-разработчик SimbirSoft
  • Одинаковый 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!

0
9 комментариев
Написать комментарий...
Аккаунт удален

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

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

костыльных джунглей?

Ответить
Развернуть ветку
Михаил Сметанников

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

Ответить
Развернуть ветку
ruras dalgard

Нативщики после ReactNative, Xamarin, lonic, PhoneGap…. :

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

Начинаете как для тупых, а заканчиваете для программистов с ffi и изолятами.

Каждая статья о флаттер пестрит одной и той же проблемой - люди почему то считают, что это фреймворк для разработки кроссплатформенных приложений от А до Я. Это фреймворк для разработки кроссплатформенного UI и библиотека с виджетами. Изоляты - параллелить процессы можно, а разделять общие ресурсы нет - всё в духе интерфейсных задач. На главной странице Dart так и написано - язык для UI. Come on, вы либо будете годами ждать появления библиотеки для работы, предположим с лидаром, либо отделите зерна от плевел и будете использовать вещи по назначению. UI - самая изменчивая часть приложений, именно эту проблему решает фреймворк. И он не для того, чтобы вы на нем своим заказчикам писали приложения от и до, если конечно это не ТуДу-шки.

Ответить
Развернуть ветку
SimbirSoft
Автор

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

Ответить
Развернуть ветку
Дмитрий Шепелёв

Миром правят деньги, где меньше расходов туда стоит смотреть. Будущее за Flutter, Скоро и Китай под везёт свою ОС. 

Ответить
Развернуть ветку
Wonabeez Doratie

Услышал слово Битрикс мобайл и охренел

Ответить
Развернуть ветку
Кирилл Загоскин

Хочу сказать огромное не спасибо яндеху за флаттер в таксометре 

Тупит все просто анриал, заказы не доходят, если связь пропадает или перезагрузил приложение 

Ну яндех кароче 

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

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

Развернуть ветку
Читать все 9 комментариев
null