Главная » Хабрахабр » [Из песочницы] Как убедить клиента или компанию использовать Flutter

[Из песочницы] Как убедить клиента или компанию использовать Flutter

Привет, Хабр! Представляю вашему вниманию перевод с англ. статьи Pitching Flutter to your company or client (автор Wm Leler)

Когда я писал ту статью, лишь немногие мобильные разработчики слышали о Flutter, но с тех пор многое изменилось. С момента публикации статьи What’s Revolutionary about Flutter прошло больше года (и этот материал всё ещё актуален). Разработчики открыли для себя Flutter, и они от него без ума. Сейчас я не успеваю следить за потоком новых статей и видео, которые появляются в этом активном и постоянно развивающемся сообществе. Вот пример приложения от Reflectly, созданного с помощью Flutter:

Умное приложение-дневник Reflectly
Я часто слышу от разработчиков, как сложно убедить менеджеров компании — или клиентов, если речь об агенстве или фрилансере, — попробовать Flutter. Люди, принимающие решения, не готовы переходить на новейшую технологию только потому, что она передовая. Как правило, они разбираются в вопросе, но стек технологий — только часть их работы. Им важно знать, что использование новых инструментов поможет их компании стать более успешной на рынке, например, привлечь новых потребителей или снизить риски.

Эта статья предназначена для:

  • разработчиков, которые хотят объяснить руководству компании преимущества использования Flutter. Даже если вы знакомы с этим фреймворком, вам всё равно пригодятся убедительные аргументы в его пользу;
  • разработчиков, которые думают о создании собственного продукта на Flutter.

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

Что такое Flutter?

Слоган Flutter (лаконичный и говорящий):

Создавайте эстетичные нативные приложения в рекордные сроки!

Этот слоган состоит из четырёх частей, каждая из которых должна быть рассмотрена отдельно:

  1. Создание приложения
  2. Эстетика
  3. Нативность
  4. Рекордные сроки

1. Создание приложения

Сейчас Flutter заточен под разработку мобильных приложений для iOS и Android. Но то, каким он видится в долгосрочной перспективе, сильно выделяется на фоне существующих мобильных фреймворков: Flutter — это не просто каркас, это полноценный SDK для создания приложений, использующих экран. Это значит, что во Flutter есть всё необходимое для создания пользовательского интерфейса, в том числе средство визуализации и элементы, требующие отрисовки (виджеты в терминологии Flutter).

Различие в том, что Flutter используется для построения приложений, а не игр. Flutter имеет много общего с игровыми движками, такими как Unity или Unreal, которые также предоставляют собственные средства визуализации.

Средство визуализации Flutter использует Skia, популярный open-source графический движок, применяемый на разных платформах. Тот факт, что Flutter является полноценным SDK, означает, что он может быть портирован практически на любое устройство, имеющее дисплей.

Flutter на настольном компьютере и на Raspberry Pi

Flutter применяется даже в построении пользовательских интерфейсов для Fuchsia. Пока мы в Google фокусировались на мобильных приложениях, различные компании портировали Flutter на настольные компьютеры (macOS, Windows, Linux и другие), телевизоры (здесь можно посмотреть, как работает Flutter на Nvidia Shield TV), а также на Raspberry Pi.

Привычным станет доступ к приложениям сразу на нескольких устройствах, включая домашних ассистентов (Google Home Hub, Lenovo Smart Display и т.д.), интерактивные дисплеи в автомобилях, бытовую технику (например, холодильники), аксессуары (часы, одежда) и другие IoT-устройства. Постепенно приложения будут появляться и вне мобильных телефонов.

таких устройств, а по прогнозу International Data Corporation, к 2020 году их число превысит 30 млрд (относительно 5 млрд. Уже в 2017 году онлайн было зарегистрировано 8,4 млрд. При этом многие из этих устройств будут иметь интерактивные дисплеи. мобильных телефонов). Архитектура Flutter обладает всеми ингредиентами для создания красивых и функциональных пользовательских интерфейсов для новых устройств.

Всюду экраны!

И, конечно, Flutter полностью бесплатный и имеет открытый исходный код.

2. Эстетика

Можно ли гарантировать успех вашего мобильного приложения, если оно конкурирует с 3,8 млн. приложений в Google Play Store и 2 млн. в Apple App Store? Даже если вам удастся убедить пользователя скачать ваше приложение, шанс того, что он будет активно его использовать 30 дней спустя, равен всего 3%! Консалтинговая компания Gartner Inc. заявила, что лишь 0,01% всех опубликованных приложений становится финансово успешными. В такой ситуации помощь не будет лишней.

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

Alibaba (слева) и Topline (справа)

2Dimensions

Сверху в качестве примеров Flutter-приложений представлены приложения компании Alibaba (крупнейшей в сфере интернет-коммерции в мире), приложение для записи звука Topline от Abbey Road Studios, а также демо-версия потрясающего приложения для создания анимаций в реальном времени от 2Dimensions.

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

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

Среди них вы найдёте приложение для ведения дневника Reflectly, которое я приводил в качестве примера в начале статьи. Другие примеры вы можете найти на официальном сайте Flutter, а также на сайте It’s All Widgets. Также обязательно почитайте статью про их опыт перехода на Flutter. Я рекомендую вам самим ознакомиться с этим необычным приложением, скачав его на ваш Android или Apple смартфон из магазина приложений.

3. Нативность

Должно быть, этот пункт вызовет недоумение у мобильных разработчиков. В мобильной разработке термин «нативное приложение» часто используется в отношении приложения, которое обращается напрямую к API платформы, используя конкретные языки. И, чтобы окончательно всех запутать, в таких фреймворках как React Native и Xamarin термин «нативный» означает, что они могут использовать виджеты платформы.

К примеру, вы можете установить Linux на компьютеры под управлением Windows или macOS (и многие другие), но вы не назовёте Windows или macOS «нативной», а Linux «кросс-платформенной» или «гибридной» операционной системой. В других областях разработки этот термин не применяется так, как в мобильной. Мы воспринимаем Linux такой же нативной, как Windows или macOS, потому что так оно и есть.

Более точное определение «нативности» в разработке выглядит так:

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

Flutter-приложения компилируются в нативный машинный (ARM) код сразу на iOS и Android.

Более того, нативные приложения дают разработчику больше контроля над поведением его приложения. Преимуществ использования нативных приложений более чем достаточно: они быстрее запускаются и, самое главное, работают стабильнее и реже страдают от лагов или торможений (подвисания — это некрасиво).

Зачастую над такими проектами приходится работать двум обособленным командам разработчиков, которые вынуждены координироваться с друг другом. Чтобы получить все преимущества нативных приложений, мобильные разработчики, как правило, писали два отдельных приложения, используя отдельные наборы инструментов и языков. Flutter же позволяет разработчикам объединить усилия в написании единой кодовой базы, объединить команды разработчиков, снизить риски и ускорить момент выпуска приложения на рынок, — и всё это в сочетании с преимуществами нативного приложения. Такой подход значительно увеличивает расходы на разработку, повышает риски и отодвигает срок выпуска продукта.

Какое из этих приложений нативное? Оба!

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

Несмотря на незначительные отличия на пиксельном уровне, Flutter серьёзно упрощает создание экранов, которые выглядят и ощущаются как нативные. На GIF-анимации сверху показано, как выглядит окно настроек, написанное на iOS в сравнении с аналогичным интерфейсом, написанным на Flutter.

По сути, Flutter и не нужно быть «pixel perfect». Нельзя забывать, что даже нативное приложение обычно выглядит по-разному в зависимости от версии ОС.

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

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

Например, вот это Flutter-приложение, запущенное на телефоне с операционной системой Android Jelly Bean (4. Использование Flutter позволяет отказаться от использования библиотек поддержки. 2), использует виджеты из материального дизайна, хотя сам телефон был выпущен за два года до его появления. 1. Как бы то ни было, ваше Flutter-приложение будет работать так же, как на более современном устройстве, и будет выглядеть потрясающе. Само собой, в телефоне нет встроенных виджетов материального дизайна.

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

Помимо преимуществ нативных приложений, Flutter обладает и другими достоинствами:

  • Приложения, написанные на Flutter, будут запускаться и на старших версиях ОС любой платформы. В частности, если вы тестируете своё Flutter-приложение на новой версии Android, на старших версиях оно будет выглядеть точно так же. Это позволяет таким приложениям нормально работать на старых телефонах и экономит время при тестировании.
  • Новые релизы операционных систем не смогут поломать ваше приложение (такое встречается крайне редко, и, как правило, дело в баге внутри Flutter, а не в вашем приложении).
  • Ваше приложение не будет подвержено изменениям из-за модификаций ОС со стороны производителя или провайдера (наиболее частый пример — изменение шрифта по умолчанию).
  • Самое главное то, что Flutter даёт вам полный контроль над тем, как выглядит ваше приложение на всех платформах и ОС, вплоть до последнего пикселя.
  • При желании вы можете специально сделать так, чтобы ваше Flutter-приложение выглядело по-разному на iOS и Android. Даже если вы этого не сделаете, виджеты Flutter сами подстроятся под принципы проектирования для каждой платформы.

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

4. Рекордные сроки

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

Перезагрузка с сохранением состояния!

Такая перезагрузка стала возможной благодаря расширенной технологии компиляции (разработанной создателями компиляторов V8 для JavaScript и Strongtalk для Smalltalk), а также благодаря тому, что Flutter является нативным и построен на реактивно обновляемых представлениях.

Наряду с ускорением процессов многие разработчики отмечают, что Flutter серьёзно меняет их стиль работы: они могут создавать новые макеты в два счёта и вносить требуемые изменения прямо в присутствии заказчиков.

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

Также вы можете поучаствовать в хакатоне, чтобы убедиться в том, как быстро можно выучить Flutter и построить на нём рабочее приложение. Чтобы узнать больше о том, как происходит работа с Flutter, посмотрите эту запись разработки приложения, которая велась в реальном времени.

Вот что говорит JD.com о своём опыте с Flutter:
Как уже говорилось в предыдущем пункте, Flutter-приложения требуют меньшего количества тестов, а это значит, что вы можете добавлять новый функционал намного быстрее.

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

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

Приложение Hamilton

В приложении Hamilton разработчики внесли серьёзное изменение вечером накануне релиза без тени сомнения в его стабильности! Кстати о рекордах. Кроме того, Flutter существенно облегчает регулярное добавление новых функций, чтобы подогревать интерес пользователей. И это приложение, написанное за каких-то три месяца, было представлено в обоих магазинах приложений.

Так и создаётся успешное мобильное приложение.

Flutter позволяет обновлять виджеты так же быстро и легко, как создавать и изменять приложения. Мы часто слышим опасения, что Flutter будет сложно поспевать за обновлениями виджетов платформ. Тем не менее, когда Apple анонсировала их новый iPhone X с его знаменитым вырезом в экране, Flutter удалось добавить поддержку этого выреза ещё до начала продаж.

К тому моменту, когда Google анонсировала существенно переработанный материальный дизайн на I/O 2018, Flutter уже получил обновление для полноценного воплощения новых идей. И это касается не только iOS. Именно способность Flutter к быстрой кастомизации сделала это возможным.

Мы регулярно получаем отзывы от разработчиков, которые утверждают, что благодаря Flutter они стали работать в 2-3 раза эффективнее, а их приложения в целом стали более успешны.

Риски и ограничения

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

До недавних пор минимальный размер Flutter-приложения составлял 6. В связи с тем, что Flutter-приложения содержат в себе виджеты Flutter и собственное средство визуализации, они имеют несколько больший размер, чем приложения, использующие инструменты, встроенные в платформу. Мы планируем проводить дальнейшую оптимизацию в будущем. 7МБ, но уже сейчас размер был уменьшен до 4МБ.

Тем не менее, существуют приложения, завязанные на конкретной платформе или исполняющие роль обёртки для представления, предоставленного платформой. Одно из важнейших достоинств Flutter — возможность использования единой кодовой базы при разработке приложений для обеих мобильных платформ (Flutter также подходит для создания приложений для одной платформы). Такие приложения тоже могут быть написаны на Flutter, но особенных преимуществ это не даст. Примером может служить приложение, работающее в фоновом потоке для отображения уведомлений.

Есть множество причин, почему мы уверенно заявляем: да. Нас часто спрашивают, удержится ли Flutter на рынке. Google всецело поддерживает Flutter и делает всё для того, чтобы он стал успешным. Во-первых, сама Google является преданным пользователем Flutter, как в разработке потребительских приложений, так и программ внутреннего пользования, в частности, недавно выпущенное мобильное приложение Google Ads (прежнее название — AdWords) было написано на Flutter.

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

Естественно, Flutter понадобится какое-то время для создания необходимых инструментов, расширения функционала и развития сообщества. Есть и другая потенциальная проблема: Flutter — относительно новый фреймворк. В то же время Google постоянно работает над добавлением во Flutter новых функций. На сегодняшний день платформы имеют функционал, который Flutter ещё только предстоит реализовать.

Вы также можете ознакомиться с результатами нашего последнего опроса пользователей Flutter. Если вы желаете углубиться в изучение Flutter, вам пригодятся статьи What’s Revolutionary about Flutter и Why Flutter uses Dart.

С чего начать

Если вы решили попробовать Flutter, вот несколько полезных советов:

  1. Это руководство поможет вам установить Flutter, настроить редактор и сделать первое тестовое приложение.
  2. Посмотрите эти видео, посвящённые Flutter.
  3. Здесь вы найдёте руководства для разработчиков, имеющих опыт с Android, iOS, React Native или Xamarin.
  4. Если у вас нет опыта в мобильной разработке, вам будут полезны эти руководства: Building Layouts in Flutter, Add Interactivity, а также A Tour of the Flutter Widget Framework (включает материал о принципах реактивного программирования).
  5. Ценными источниками являются кулинарная книга Flutter, этот каталог виджетов и FAQ.
  6. Также вы можете посмотреть приложения в каталоге It’s All Widgets. Многие из них имеют открытый код, доступный для просмотра. Вы также можете добавлять сюда собственные Flutter-приложения.
  7. Чтобы получать еженедельную подборку лучших статей о Flutter, подпишитесь на Flutter Weekly.
  8. Google Codelabs предоставляет множество отличных материалов по Flutter, но, если этого мало, вы можете пройти бесплатный видеокурс по Flutter от Udacity.
  9. Другая полезная документация доступна по этой ссылке.

Присоединяйтесь к сообществу Flutter на Twitter, Gitter и Stack Overflow. Рекомендую подписаться на рассылку Flutter Dev. Кроме того, вы можете найти местный Flutter Meetup или Study Jam и узнать, не проходят ли поблизости хакатоны по мобильной разработке, в которых вы могли бы поучаствовать.

Заключение

Итак, Flutter делает возможной высокоскоростную разработку приложений, что увеличивает вашу продуктивность и помогает создавать приложения лучшего качества. Это выразительный, необычайно гибкий и настраиваемый набор инструментов, который даёт разработчику полный контроль над его продуктом. Flutter создаёт быстрые и стабильные нативные приложения для iOS и Android с помощью единой кодовой базы.

Он бесплатный и имеет открытый код. Flutter экономит ваши деньги и уменьшает риски. Это возможно потому, что вы входите сразу на два рынка: Android и iOS-приложений, и создаёте более качественные приложения за меньшее время. При этом Flutter помогает вам зарабатывать больше денег.

Это потрясающе: 92% разработчиков, использующих Flutter, говорят, что он полностью удовлетворяет их запросам. Пожалуй, самый лестный отзыв от разработчиков — то, что мобильная разработка с Flutter доставляет удовольствие! 0, и число довольных пользователей постоянно растёт! Не забывайте, что этот опрос проводился ещё до релиза версии 1.

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


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

SAP HANA: где и как эффективно использовать big data и машинное обучение

На парковке аэропорта установлены 20 шлагбаумов для въезда. Рассмотрим конкретный кейс. Зима. Чтобы отслеживать нарушителей, камера распознавания номерных знаков строго фиксирует номер автомобиля, и только после этого открывается шлагбаум. Все номера автомобилей в снегу. Ухудшение погодных условий. Как итог — ...

[Из песочницы] Haiku β1 — сделаем /b/ OS великой снова

Совсем недавно (почти 4 месяца назад) вышла новая Haiku (далее — просто BeOS, ибо проект гораздо удачнее ReactOS — настолько, что разница между Haiku и BeOS уже пренебрежимо мала). Да и недавно прочитанный киберпанк-роман Александра Чубарьяна давал понять, что BeOS ...