Разработка кроссплатформенных мобильных приложений по почвоведению с использованием фреймворка Flutter (2022)

Авторский архив научных публикаций по почвоведению и наукам о Земле
Ответить
Аватара пользователя
Ortstein
Администратор форума
Сообщения: 84
Зарегистрирован: Сб фев 23, 2013 5:28 pm

Разработка кроссплатформенных мобильных приложений по почвоведению с использованием фреймворка Flutter (2022)

Сообщение Ortstein »

Код: Выделить всё

Рыбальский Н. Н., Долгинова В. А. Разработка кроссплатформенных мобильных приложений по почвоведению с использованием фреймворка Flutter // Использование и охрана природных ресурсов в России. — 2022. — № 2. — С. 98–102.
УДК 631.4, 004.43

РАЗРАБОТКА КРОССПЛАТФОРМЕННЫХ МОБИЛЬНЫХ ПРИЛОЖЕНИЙ ПО ПОЧВОВЕДЕНИЮ С ИСПОЛЬЗОВАНИЕМ ФРЕЙМВОРКА FLUTTER

Н.Н. Рыбальский, к.б.н., факультет почвоведения МГУ им. М.В. Ломоносова
В.А. Долгинова, к.б.н., Научно-аналитический центр "Агропрогноз"


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

Ключевые слова: почвоведение, почва, экология, программирование, мобильное приложение, апка, фреймворк, Flutter, мультиплатформенный, кроссплатформеннность, кроссплатформенный, Android, iOS, язык программирования, Dart, мобильное устройство, смартфон.


Введение

Реальный и виртуальный мир все более плотно переплетаются благодаря развитию цифровых технологий и ежегодному росту доступности интернета. В развитых странах уже сейчас средняя скорость стационарного подключения возросла до 100 Мбит/с, а скорость мобильного интернета — до 60 Мбит/с, что дает возможность получать необходимую информацию в любом месте в любое время [1]. Русскоязычный сегмент интернета сильно развит: Россия входит в топ-10 стран по количеству интернет-пользователей (80% от общей численности населения в возрасте старше 12 лет [2]. В среднем человек проводит в интернете около 7 часов в день; в России и мире этот показатель ежегодно растет [3].

Сегодня большую часть времени люди заходят в интернет через мобильные устройства — смартфоны и планшеты. Крупнейшие компании создают свои собственные приложения, а научные и образовательные организации дают возможность пользователям получать доступ к своим сервисам буквально касанием пальца по экрану мобильного устройства; в частности доступны приложения МГУ, МГИМО, МГТУ им. Н.Э. Баумана, а также многих других научно-образовательных учреждений. Активно появляются приложения по почвоведению — по классификации, картированию, физико-химическим анализам и даже несколько игр (Save Soil, Soil Puzzle и др.).


Актуальность исследования

В ноябре 2016 года в мире произошел качественный переход от приоритета использования стационарных компьютеров к мобильным устройствам (рис. 1). Есть все предпосылки предполагать, что данная динамика сохранится и к 2025 году более 70% всех пользователей интернета будут выходить «в онлайн» с мобильных устройств.

pc-vs-mobile.png
pc-vs-mobile.png (36.49 КБ) 3292 просмотра
Рис. 1. Динамика доли рынка стационарных компьютеров и мобильных устройств в мире с 2009 по 2022 гг. (%; по данным Statcounter [4])

Но почему люди просто не используют веб-сайты вместо мобильных приложений? Ведь там точно также можно наверстать любой пользовательский интерфейс (т.е. элементы внешнего вида программы — окошки, кнопки, элементы дизайна и проч.) и предоставить доступ к разнообразным веб-сервисам. Изначальная популярность мобильных приложений по сравнению с программами для настольных компьютеров во многом достигалась за счет того, что при запуске приложений на мобильных устройствах используется виртуализация, т.е. каждое приложение работает в своем «контейнере», что исключает возможность самопроизвольного запуска вредоносного кода, если, конечно, пользователь сам не даст доступ приложению к критически важным компонентам системы. Мобильные устройства в отличие от компьютеров изначально работают по принципу магазина приложений — используя единый каталог проверенных безопасных программ, откуда можно скачивать и устанавливать необходимые приложения в один клик, что существенно снизило «порог вхождения» для новых пользователей. Есть и множество других причин: персонализация и адаптация приложения под конкретного пользователя, использование сенсоров и встроенных компонентов мобильного устройства (камера, GPS, гироскоп и др.), возможность работы оффлайн и проч.

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

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


Цель и задачи исследования

Цель исследования — разработка алгоритма создания мобильных приложений по почвоведению.

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


Объекты и методы

Фреймворк — структурированная программная среда разработки, созданная для упрощения ИТ-разработки. По сути является «каркасом»; набором готовых программных средств, которые позволяют не «изобретать велосипед», а использовать стек (набор) технологий в рамках единого API (набора компонентов для взаимодействия одной программы с другой). На сегодняшний момент создано множество фреймворков для решения разнообразных задач программирования, например, Spark (большие данные); Angular, Django и Flask (веб-приложения); React Native и Flutter (мобильные приложения) и др.

Flutter — бесплатный фреймворк с открытым исходным кодом, появившийся в 2017 году с целью упростить разработку мобильных приложений и сделать удобную кроссплатформенную (т. е. доступную сразу на нескольких платформах, например, на Android, iOS, Windows и Linux) интеграцию из единой базы программного кода. Написан на C, C++ и Dart; для вывода графики использует Skia (быстрая open-source кроссплатформенная 2D библиотека, которая применяется, например, в Google Chrome и LibreOffice).

Dart — это объектно-ориентированный язык программирования с Си-подобным синтаксисом, использующийся во фреймворке Flutter; появился в 2011 году.

Фреймворк Flutter включает следующие компоненты:
— «платформа» на основе виртуальной машины Dart, использующая динамическую JIT-компиляцию; важным преимуществом платформы является возможность обновления приложения «на лету», без необходимости его перезапуска;
— «движок» Flutter (на основе Skia) — среда выполнения, обеспечивающая отрисовку графики, интерфейсы ввода-вывода, поддержку плагинов и проч.
DevTools (инструменты разработчика) для диагностики и отладки приложений, повышения их производительности и поиска ошибок;
виджеты и библиотека Foundation — базовые классы и функции для работы с виджетами — программными компонентами из которых, как из «кирпичиков» выстраивается приложение; удобство виджетов в том, что они имеют возможность создания вложенной структуры и каждый виджет может обновлять свой контент по необходимости, обособленно.

Для работы с Flutter удобно использовать IDE (интегрированная среда разработки); официально поддерживаются Visual Studio Code, Android Studio, Emacs и IntelliJ IDEA. Но также можно использовать интерфейс командной строки, который позволяет разрабатывать приложения даже на устаревших компьютерах. Также удобно использовать удалённый проигрыватель кода dartpad.dev.
В исследовании использовалась версия фреймворка Flutter 3.0.5-stable и язык программирования Dart версии 2.17.6 (2022 г.).


Обзор технологий

Важно понимать, что Flutter используется в первую очередь для frontend-разработки (т.е. создания «клиента», интерфейса пользователя). При разработке сетевых приложений, которые используют удаленное подключение к серверу, отдельно необходимо создание «серверной» (backend) части приложения. Причина, по которой Flutter плохо подойдет для сервера кроется в том, что язык Dart сильно проигрывает по производительности большинству других компилируемых языков. Изначально язык Dart создавался как альтернатива JavaScript, который сегодня является самым популярным языком программирования в мире [5]. Помимо того, что практически любой веб-сайт содержит JavaScript, этот язык еще является и универсальным — на нем пишут и клиент и сервер (Node.js). Flutter же изначально был сфокусирован на максимально эффективном создании интерфейса приложений; при этом обеспечивая высокую совместимость с различными серверными API.

Кроме того, Flutter можно использовать не только для разработки мобильных приложений, но и для проектирования любых интерфейсов, например, веб-сайтов; хотя на этом поле Flutter проигрывает в быстродействии традиционной связке HTML/CSS/JS. Это не особо заметно на небольших сайтах, однако существенно замедляет работу масштабных проектов, а также существенно снижает эргономичность. Проблема в том, что Flutter «отрисовывает» веб-страницу фактически попиксельно (код на Dart в данном случае транслируется в JavaScript), не используя HTML. У данного способа есть свои преимущества, но быстродействие и эргономика в них не входит.

Стоит заметить, что Flutter — далеко не единственный фреймворк, облегчающий разработку кроссплатформенных приложений. Значительной популярностью пользуется React Native; также есть и другие решения — Xamarin, Ionic, PhoneGap и т.д.; но их используют несколько реже (рис. 2).

mobile-frameworks.png
mobile-frameworks.png (35.44 КБ) 3291 просмотр
Рис. 2. Динамика частоты поисковых запросов кроссплатформенных фреймворков за 2017-2022 гг. (по данным Google Trends [6])

Распространенность использования React Native во многом обусловлена тем, что там используется самый популярный язык программирования JavaScript, поэтому для ИТ-профессионалов порог входа в данный фреймворк довольно низкий. Однако уже сейчас Flutter по многим параметрам обходит React; это видно и на вполне объективных показателях — в опросе на Stackoverflow в 2019 г. React выбрали 10.8% разработчиков, а Flutter 3.2%; в 2022 г. ситуация коренным образом изменилась — React 12.57% против Flutter 12.64% [7]. Другой пример — рейтинг на Github, где у Flutter 143.000 звёзд, тогда как у React (который появился на 2 года раньше) 104.000. Подобная динамика показывает, что сегодня Flutter является наиболее универсальным и удобным инструментом для создания мобильных приложений.


Нативность vs кроссплатформенность

Разработка кроссплатформенных приложений имеет ряд недостатков перед разработкой более традиционных «нативных» приложений. Нативные приложения — разрабатываются под конкретную операционную систему; к примеру, чтобы сделать ваше нативное приложение на двух платформах, то для Android вы его пишите сначала на Java или Kotlin; а потом переписываете заново для iOS уже на Swift или Objective-C.

Безусловно нативные приложения будут иметь лучшую производительность и обеспечат более грамотный доступ к различным функциям устройства (например, к геолокации или камере), чем универсальные кроссплатформенные приложения, где разработчик пишет единый код, который затем автоматически транслируется под каждую архитектуру. Соответственно, нативная разработка стоит гораздо дороже, ведь как минимум нужно чтобы над приложением работало как минимум по одному отдельному разработчику под каждую платформу. Эту проблему порой можно обойти, если заранее знать, какие устройства в основном использует ваша аудитория. К примеру, если абсолютное большинство пользователей будущего приложения пользуются Android, разработку iOS можно отложить до лучших времен. Но потерять даже 10% аудитории — зачастую может оказаться слишком высокой платой за прирост производительности приложения.

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


Анализ фреймворка Flutter

На примере собственного прототипа приложения были исследованы возможности Flutter и выявлены следующие ключевые преимущества данного фреймворка:

— мобильное приложение создается в режиме одного проекта, а готовый результат портируется сразу на все платформы и корректно отображается при любом размере экрана пользователя;
— код пишется на языке программирования Dart и компилируется в бинарный код, в итоге готовые приложения в большинстве случаев работают практически также быстро, как если бы они были сделаны нативно при использовании высокопроизводительных языков программирования;
— близкий к нативному доступ к открытым интерфейсам платформы (файловой системе, камере, GPS, прочим интерфейсам и сенсорами);
— большое количество плагинов и инструментов взаимодействия с популярными сервисами через API;
— аппаратное ускорение графики (hardware-accelerated graphics) и наличие многочисленных готовых виджетов позволяет делать красивые быстро работающие приложения без глубоких знаний в области визуализации данных.

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

Главный недостаток разработки приложений в среде Flutter — относительно низкая популярность языка программирования Dart, на котором нужно писать код (индекс TIOBE составляет всего 0.31%, что соответствует 32-му месту по результатам анализа поисковых запросов). Несмотря на уверенный восходящий тренд [рис. 3] с момента запуска фреймворка Flutter, язык программирования Dart все еще не слишком популярен. Но так как Flutter является проектом с открытым исходным кодом, можно быть уверенными, что если даже официальные разработчики (Google) прекратят финансирование проекта, сообщество продолжит поддерживать фреймворк самостоятельно.

dart-flutter.jpg
dart-flutter.jpg (247.75 КБ) 3291 просмотр
Рис. 3. Динамика индекса TIOBE популярности языка программирования Dart [8]

Другая проблема Flutter в том, что среди готовых библиотек и виджетов порой встречаются недоработки, которые приходится исправлять вручную (например, настройка разрешений пользователя). Также, не смотря на то, что кроссплатформенный фреймворк обещает автоматически создать приложение сразу для всех платформ, на практике оказывается, что иногда все же разработчикам приходится вручную адаптировать небольшие фрагменты кода под некоторые платформы. Важным ограничением является более медленная работа 3D-графики и других средств продвинутой визуализации, чем при разработке нативных приложений. Кроме того, мобильное приложение, созданное на базе фреймворка, занимает больше места, чем нативное (в первую очередь за счет виртуальной машины Dart), но это сегодня малосущественно.

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


Алгоритм создания приложений

Сформулирован алгоритм разработки мобильного приложения по почвоведению:

1. Идея (цель приложения, какую функцию выполняет, какую проблему решает);
2. Анализ предметной области (возможно, подобное приложение уже есть; или же можно вдохновиться приложениями из смежных предметных областей);
3. Изучение аудитории (социальные параметры и анализ технических устройств, которыми пользуются потенциальные пользователи);
4. Оценка функционала проекта (насколько трудоемкой будет реализация тех или иных «фич» — особенностей приложения; если там будет 3D графика или требуется нестандартное использование компонентов устройства, возможно, стоит делать не кроссплатформенное, а нативное приложение);
5. Оценка доступных ресурсов (если вы делаете ваше первое приложение, возможно, для начала стоит подойти более минималистично к своим задумкам);
6. Логика (что пользователь может «нажать» и что должен получить в ответ; на этом этапе имеет смысл составить документ — «техническое задание»);
7. Дизайн-макет (как выглядит, какие элементы и сцены, объем информации и графических материалов и др.);
8. Инструментарий (выбор фреймворка, библиотек, инструментов разработки);
9. Разработка архитектуры (поиск конкретных технологических решений в рамках вашего инструментария для реализации необходимого функционала; обычно любую задачу в программировании можно решить множеством способов; вам необходимо рассмотреть все варианты решения и выбрать оптимальный);
10. Прототипирование (создание тестовой версии с минимальным функционалом);
11. Приложение (интеграция компонентов с внешними API; на выходе должна быть готовая версия с большей частью запланированного функционала);
12. Тестирование (отладка, проверка функционала и поиск ошибок);
13. Разработка документации (обучающие материалы для конечных пользователей);
14. Публикация в магазинах приложений (регистрация в магазинах приложений, вывод «билдов» — сборок под каждую платформу, загрузка файлов);
15. Продвижение (посты на сайтах и в социальных сетях; донести потенциальным пользователям информацию о приложении, как его скачать и как им пользоваться);
16. Обратная связь (изучение отзывов пользователей, выявление недочетов);
17. Поддержка (обновление, исправление ошибок и добавление новых функций).


Выводы

Если еще недавно наиболее актуальным способом онлайн-взаимодействия были веб-сайты, то сегодня благодаря доступности мобильных устройств, на первое место выходят сервисы, поставляемые с помощью мобильных приложений. В настоящий момент существует немало приложений, которые доступны только на одной платформе (чаще всего Android), в то время как пользователи другой платформы лишены возможности его использовать. Из этого следует, что почвоведам важно создавать мультиплатформенные приложения, которые возможно использовать на устройствах с разными операционными системами (например, Android, iOS, Windows, Linux и др.) и использующими любой форм-фактор устройств ввода-вывода.

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

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

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


Литература

1. Долгинова В. А., Рыбальский Н. Н. YouTube как источник информации по почвоведению // Использование и охрана природных ресурсов в России. — 2022. — № 1. — С. 72–75.
2. Mediascope Cross Web Desktop & Mobile – Медиапотребление за Апрель, 2022, URL: https://mediascope.net/upload/iblock/fd ... blenie.pdf
3. Digital 2022: Global Statshot Report, URL: https://datareportal.com/
4. Statcounter Globalstats – Desktop vs Mobile Market Share Worldwide, 2009-2022, URL: https://gs.statcounter.com/platform-mar ... 901-202206
5. Developer Economics – State of the Developer Nation 19th Edition, 2020, URL: https://slashdata-website-cms.s3.amazon ... uKCL1Q.pdf
6. Google Trends – Explore Worldwide Websearch, URL: https://trends.google.com/trends/explore
7. Stackoverflow - Developer Survey, 2022, URL: https://survey.stackoverflow.co/2022/
8. TIOBE Index, July 2022, URL: https://tiobe.com/tiobe-index/


Код: Выделить всё

Рыбальский Н. Н., Долгинова В. А. Разработка кроссплатформенных мобильных приложений по почвоведению с использованием фреймворка Flutter // Использование и охрана природных ресурсов в России. — 2022. — № 2. — С. 98–102.

Development of cross-platform mobile applications for soil science using the Flutter framework
N.N. Rybalskiy, PhD in Biology, Senior Researcher at Soil geography department, Faculty of soil science Lomonosov Moscow State University
V.A. Dolginova, PhD in Biology, Research Centre “Agroprognoz”

The article shows the transition from the priority of software development for desktop computers — to mobile applications. The results of the study of the functionality of modern tools for creating mobile applications are presented. Features of native and cross-platform development are presented. The analysis of cross-platform application development by the example of framework Flutter and programming language Dart is performed. An algorithm for creating mobile soil science applications is developed.

Keywords: soil science, soil, ecology, programming, mobile application, mobile app, framework, Flutter, multi-platform, cross-platform, Android, iOS, programming language, Dart, mobile device, smartphone.
Ответить