Мобильное приложение на Flutter. Стоимость, сроки, подводные камни. Часть 1

Flutter — бесплатный набор средств разработки (SDK) c открытым исходным кодом, разработанный Google для создания мобильных приложений. Другими словами, при помощи Flutter можно создать мобильное приложение для двух платформ (iOS и Android), используя один язык и общий код.

Flutter сегодня

В 2019 году в рунете стали популярны статьи о Flutter. Уже тогда обсуждалось, как быстро он исчерпает себя. Основной причиной такого внимания стало то, что это кроссплатформенный фреймворк для разработки мобильных приложений от Google, которому принадлежит платформа Android. Тогда все обратили на него внимание, кто-то попробовал, но, как часто бывает с новой технологией, быстро забыли.

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

Критерии выбора технологий

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

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

  • скорость работы на устройствах со слабым железом;
  • проблемы в реализации единого стиля навигации на iOS и Android;
  • каждая из общих функций: внутренние покупки, работа с геолокацией, работа в фоне, доступы к периферии — это сторонние библиотеки-обертки, содержащие дополнительные ошибки, что приводит к риску непредвиденных ошибок, и т.п.

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

Сколько стоит разработка приложения?

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

Популярность мобильных приложений. Когда бизнес делает мобильное приложение, то он сразу же устанавливает тесный контакт со своими клиентами. Попадая на смартфон клиента, компания попадает ему в карман.

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

Высокие зарплаты. Так как кадров на рынке мало, то за свою работу они просят много. Разработчики мобильных приложений имеют самую высокую среднюю зарплату среди всех разработчиков. Есть, конечно, исключение в виде COBOL-программистов, но в основной своей массе мобильные разработчики дороже.

Разработка для двух платформ. iOS и Android — это абсолютно независимые операционные системы, поэтому если нужно сделать приложение для обеих, по факту придется разработать два продукта с идентичным функционалом и стоимость разработки пропорционально увеличится вдвое. Представьте, что сайт может открываться на одном браузере, но чтобы он работал на втором, необходимо было бы делать новый. Возможно, это покажется диким и абсурдным, но таковы реалии в mobile dev.

Универсальные решения

Очевидно, что мысли об универсальном решении возникали у многих и не один раз. Было много попыток. Самые известные — Cordova, Ionic, Xamarin, React Native. Последний даже смог добиться неплохих успехов и на нем было написано несколько крупных приложений. Но тут тоже не все так гладко. Давайте вспомним AirBnB, которые подняли шум своей статьей с объяснением отказа от React Native.

Есть и противоположный пример, который выбивается из этого списка по многим параметрам, но отлично справляется с этой задачей: Unity — игровой движок, который работает с iOS, Android, PC, PlayStation, Xbox и даже в браузерах.

Flutter, в отличие от своих предшественников, пошел по пути Unity, что стало сильно выделять его на фоне других кроссплатформенных решений.

В чем же преимущества Flutter для бизнеса

Стоимость разработки. Выше мы написали, что при нативной разработке по факту оплата происходит за два отдельных приложения. Кроссплатформенное решение позволяет создать общую кодовую базу для двух платформ с последующей трансляцией кода на операционную систему через специальную прослойку. Это позволяет сэкономить от 30% до 50% на разработке приложения для iOS и Android.

Скорость разработки. Flutter позволяет использовать общую часть кода для разных платформ, применяя одну бизнес-логику. Остальные элементы не требуют значительной переработки. Это положительно отражается на времени разработки, сокращая сроки почти на всех этапах.

Применимость фреймворка. Наш опыт работы с Flutter показал, что с его помощью можно закрыть потребности большинства запросов на мобильную разработку. Функционал и проработанность технологии позволяют использовать ее для многих сфер. А некоторые вообще лучше делать исключительно на кроссплатформе, например, приложения для интернет-СМИ, таких как Meduza.

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

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

Дано: простейшее приложение, знакомое каждому пользователю мобильных устройств, загрузка новостной ленты и отображение ее списком. Код писался в стиле хорошего продуктового подхода, не на скорость, а с расчетом на дальнейшую поддержку и развитие. Результаты по времени получились следующие:

  • натив Android — 6 часов
  • натив iOS — 5 часов
  • Flutter — 5 часов

Вроде бы никакой разницы, но есть один важный нюанс — приложение на Flutter запускается сразу на iOS и на Android. То есть, получается 11 часов против 5 часов. Это лишь одна задача, а в мобильном приложении таких много. Именно так появляется существенная экономия при разработке.

Большинство современных мобильных приложений — тонкие клиенты, которые просто получают данные с сервера и отображают в красивом формате. Качественное кросплатформенное решение, такое как Flutter, отлично справляется с этой задачей. То есть, около 90% современных мобильных приложений могут быть успешно реализованы на Flutter. Исключение составляют приложения, очень близкие к платформе с обязательным использованием стандартных компонентов, либо приложения со сложной технической составляющей — использование аппаратных средств девайса напрямую, соединение внешними устройствами, подключение легаси библиотек и тп. Но нерешаемых с помощью Flutter задач становится все меньше.

Анатолий Пешков, Технический директор Mad Brains

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

Чтобы разобраться, почему именно Flutter, необходимо заглянуть под капот. Технический анализ позволит объяснить, почему многие эксперты мобильной разработки поменяли свое отношение к кроссплатформе, а также прояснить перспективы Flutter в ближайшие годы. Мы планируем выпустить серию из 4 статей, где рассмотрим эту технологию со всех сторон. Вторая часть уже на подходе. Stay tuned.

2424
21 комментарий

Мобильная разработка — это дорого

Было. Как раньше с сайтами.
Хотя наверно студии и сейчас впаривают.

2
Ответить

Да, рынок готовых и универсальных решений в мобайле отстает лет на 10.

1
Ответить

Окей, жду остальных частей с нетерпением. Особенно интересно, можно ли как-то сделать общие библиотеки на Flutter. Есть идея собрать плагин для Figma, который из макетов сам бы собирал базовые элементы для web и Flutter.

1
Ответить

Общие библиотеки в каком понимании? По плагину для Figma - хорошая идея! Можно пока присмотреться к вот этой штуке, что у них получилось https://medium.com/flutter/announcing-adobe-xd-support-for-flutter-4b3dd55ff40e

2
Ответить

Гугл ещё в начале 2019 выделил отдельную команду, или она изначально была, никак не вчера она появилась.
На Флаттер очень сильно повлияет судьба Фуксии, если говорить про будущее...

1
Ответить

Если быть точнее, то трудиться над Flutter начали еще в 2014 или 2015 году (первая превьюшка была представлена в 2015-ом). Здесь же речь шла об отдельной команде для подготовки видео на YouTube, она начала выкладывать видео как раз в начале 2019-го
Fuchsia бесспорно повлияет на будущее всей мобильной разработки, но будущее Flutter уже сейчас вполне себе безоблачно

1
Ответить

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

1
Ответить