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

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

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

sbqhl1uma2eud2fpfafvdo3w8ny.gif


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

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

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


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

Что такое Flutter?


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

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


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

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


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


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

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

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

ivilohrjfqo8v5og72lj-g6me-s.png


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

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

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

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

p2gcvij4z6v4u1yvyizbr1bwjlq.png


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

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

2. Эстетика


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

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

f-ryllmynyymborc8na5gnmum2m.jpeg


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

vnzg0s23dpfdniehzwib6s56yqc.gif


2Dimensions

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

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

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

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

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


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

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

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

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

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

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

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

1xl2za7xaeb8poqjsadhx2k5tzq.gif


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

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

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

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

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

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

btefntkadkwkwh0_4gxkxhrodei.png

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

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

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

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

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

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


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

zb1scveylghlghsbpdu_2ftblpq.gif


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

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

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

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

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

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

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


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

3y-bu9ezlcn62of9r4txwu9gecm.png


Приложение Hamilton

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

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

gyv0jlh4egrvekxjaco7ue0i39o.jpeg


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

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

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

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


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

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

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

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

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

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

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

С чего начать


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

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

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

© Habrahabr.ru