Найти тему

Как предложить Flutter компании или клиенту

Оглавление

Перевод статьи. Оригинал здесь.

Прошло больше года с момента публикации статьи "Что революционного во Flutter" (она по-прежнему является хорошим введением). Когда я писал ту статью, мало кто из мобильных разработчиков слышал о Flutter, но с тех пор все прошло долгий путь. Сейчас я не успеваю следить за всеми статьями и видеороликами о Flutter, которые создает активное, живое, даже взрывное сообщество. Разработчики открыли для себя Flutter, и он им нравится. Вот анимированный GIF одного из замечательных приложений, созданных с помощью Flutter, от компании Reflectly:

Приложение для интеллектуального журналирования Reflectly Flutter
Приложение для интеллектуального журналирования Reflectly Flutter

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

Эта статья предназначена для двух групп:

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

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

Что такое Flutter?

Слоган Flutter (своего рода письменный лифтинг) звучит так

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

Давайте разделим этот слоган на четыре части и обсудим их по очереди:

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

1. Создавайте

В настоящее время Flutter ориентирован на создание мобильных приложений для iOS и Android.

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

Во многих отношениях Flutter похож на игровые движки, такие как Unity или Unreal, которые также поставляют свой собственный рендерер и объекты для рендеринга (и другое программное обеспечение). Но вместо того, чтобы создавать игры, Flutter создает приложения.

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

-2

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

Все чаще приложения будут выходить за пределы мобильных телефонов. Доступ к приложениям будет осуществляться на различных устройствах, включая домашние помощники (Google Home Hub, Lenovo Smart Display и т.д.), интерактивные дисплеи в автомобилях, бытовую технику (холодильники), носимые устройства (часы, одежда) и другие IoT-устройства. В 2017 году в сети было 8,4 млрд таких устройств. К 2020 году (менее чем через два года), по оценкам IDC, их будет более 30 миллиардов (по сравнению с 5 миллиардами мобильных телефонов). Многие из этих устройств будут иметь интерактивные экраны. Архитектура Flutter обладает всеми составляющими для создания мощных и красивых пользовательских интерфейсов для этих новых устройств.

экраны повсюду
экраны повсюду

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

2. Красивые

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

Alibaba (слева) и Topline (справа)
Alibaba (слева) и Topline (справа)
 2D-измерения
2D-измерения

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

Вот лишь несколько примеров: приложения Flutter, показанные слева, включают приложения от Alibaba (крупнейшей компании электронной коммерции в мире), приложение Topline для звукозаписи от Abbey Road Studios и демонстрационное приложение удивительной анимации в реальном времени от 2D-измерения.

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

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

Вы можете увидеть больше приложений Flutter на витрине Flutter (и сотни других на сайте It's All Widgets). В их число входит прекрасное приложение для ведения дневников Reflectly, показанное в начале этой статьи с помощью анимированного GIF, но вы должны установить его из магазинов приложений на свой телефон Android или Apple. Обязательно прочитайте об опыте перехода их приложения на Flutter.

3. Нативные приложения

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

В других областях вычислительной техники термин "нативный" не используется так, как в мобильной. Например, вы можете установить Linux на компьютеры с Windows и macOS (и многие другие виды), но вы не станете называть Windows или macOS "родными", а Linux - "кроссплатформенным" или "гибридным" решением. Люди считают Linux таким же родным, как Windows или macOS, потому что это так.

Более точное определение понятия "родной" для вычислительной техники следующее:

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

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

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

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

Какой из них "нативный"? Оба!
Какой из них "нативный"? Оба!

Что насчет виджетов? Поскольку Flutter предоставляет собственные виджеты, вы можете опасаться, что приложения Flutter будут выглядеть или ощущаться совершенно иначе, чем приложения, разработанные с использованием виджетов и инструментов платформы.

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

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

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

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

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

-7

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

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

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

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

И последнее, но, конечно, не менее важное: Flutter позволяет разрабатывать лучшие приложения быстрее. Самая популярная (и даже разрекламированная) функция Flutter - это горячая перезагрузка с учетом состояния. Мало того, что она удивительно быстрая (обычно это субсекунда), она еще и stateful, что означает, что если вы измените какой-то код в глубине вашего приложения, то после перекомпиляции вам не придется возвращаться в то же место или вручную воссоздавать состояние, чтобы увидеть эффект от изменений.

Перезагрузка с учётом состояния. Stateful hot reload.
Перезагрузка с учётом состояния. Stateful hot reload.

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

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

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

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

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

 Hamilton, приложение
Hamilton, приложение

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

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

-10

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

Однако, когда Apple анонсировала новый iPhone X с вырезом, Flutter смог добавить поддержку выреза еще до выхода самого телефона.

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

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

Как начать работу

Когда вы будете готовы попробовать Flutter, вот несколько полезных вещей:

  1. https://flutter.io/get-started/ - это руководство поможет вам установить Flutter, настроить редактор, пройти тест-драйв и написать свое первое приложение.
  2. Посмотрите несколько видеороликов о Flutter на YouTube
  3. Есть набор руководств для разработчиков, которые знакомы с одним (или несколькими) из следующих: Android, iOS, React Native, Xamarin.
  4. Или если вы новичок в мобильной разработке, есть также учебники, такие как: Построение макетов во Flutter, Добавление интерактивности и Экскурсия по Flutter Widget Framework (включая принципы реактивности, если вы с ними не знакомы).
  5. Ценным ресурсом является кулинарная книга Flutter. Также каталог виджетов и FAQ.
  6. Аналогично, посмотрите приложения в It's All Widgets. Многие из них с открытым исходным кодом, поэтому вы можете посмотреть код опубликованных приложений. А когда вы напишете собственные приложения для Flutter, не забудьте их опубликовать.
  7. Чтобы каждую неделю получать список лучших статей о Flutter на свой почтовый ящик, подпишитесь на Flutter Weekly.
  8. Для Flutter существует множество прекрасных коделейбов, а если этого недостаточно, есть бесплатный онлайн-видеокурс по Flutter от Udacity.

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

Выводы

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

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

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

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