Медицинское приложение для стартапа с использованием Flutter и Dart
Evrone хорош как в создании MVP для стартапов, так и в разработке масштабных систем со сложной архитектурой и большой нагрузкой. Специалисты Evrone всегда начеку: мы мониторим новые технологии, выбираем из них перспективные и добавляем в наш стек. В статье рассказываем о том, как при разработке приложения для записи бесед с врачом мы добавили в наш арсенал Flutter и язык Dart.
Задача
Клиент Evrone, Дэвид Уикли, «ветеран» Силиконовой Долины. Он имеет более чем 5-летний технический опыт работы в качестве продакт-менеджера в Google и Facebook, ментора стартапа, отмеченного наградами, а также основателя и члена совета директоров Hacker Dojo. Он придумал стартап: приложение для телефонов, улучшающее процесс коммуникации между доктором и пациентом. Идея сервиса родилась из жизненных обстоятельств.
Его отец тяжело заболел. Данных о способах и видах лечения было чересчур много. Стараясь не потеряться в них, семья делала аудиозаписи всех консультаций с медицинскими специалистами. Они были разосланы близким и родным, чтобы каждый член семьи мог участвовать в выборе метода лечения. Семья превратилась в «команду здоровья», и это помогло справиться с трудной ситуацией. И здесь наш клиент увидел возможность: оптимизировать эти процессы в мобильном приложении.
Очень сложно моментально принять решение при коммуникации с доктором, понять все термины и мелкие детали, запомнить советы и рекомендации и донести всё это до родных, ничего не перепутав. Такие трудности испытывали многие, не только наш заказчик. Наш клиент хотел помочь своей семье и каждому, кто оказался в схожей ситуации. Именно для этого и был разработан Medcorder.
Решение
Наш план состоял из трёх пунктов: концепт, дизайн, минимально жизнеспособный продукт. Вместе с клиентом решили взять за основу классические технологии Google: хостинг Google Storagе, облачные сервисы Google Cloud, распознавание речи Google Speech Recognition и бэкэнд Google Firebase. К ним добавили Google Flutter — фреймворк для создания кроссплатформенных приложений.
История версий
Первый минимально жизнеспособный продукт напоминал блокнот, где можно было записывать разговоры с врачом и получать их расшифровку, оставлять комментарии и публиковать фотографии — например, рецептов или результатов анализов.
К следующей итерации блокнот вырос до сервиса, где между собой могли коммуницировать все заинтересованные пользователи: лечащий врач, сам пациент и члены семьи. Одновременно с расширением функционала мы обновили концепцию и дизайн.
Сейчас Evrone работает над новой версией приложения.
Flutter — первые шаги
Flutter — это новый open-source фреймворк от компании Google, предназначенный для разработки кроссплатформенных приложений одновременно и под Android, и под iOS. Разработка во Flutter идёт на языке Dart. Благодаря компиляции Dart в бинарный код, написанные на нём проекты отличаются производительностью и эффективностью.
До Medcorder Evrone уже использовал кроссплатформенные платформы, а именно React Native. Поскольку для нашего клиента в приоритете был быстрый запуск MVP и доступность внесения изменений, мы решили, что этот фреймворк отлчино подойдёт.
К началу работы Flutter был в стадии начальной разработки (Pre-alpha), что могло усложнить процесс создания приложения. Но мы уже успели вдохновиться новой платформой и её возможностями, поэтому решились на риски.
Параллельно с нашей работой над Medcorder, Google развивали Flutter. Фреймворк расширялся очень быстро, и сохранять инструментарий актуальным стало дополнительным вызовом. Нам помогло то, что Google стремились облегчить вход в технологию, поэтому тщательно проработали документацию фреймворка и ресурсы для программистов.
Они подготовили отдельные руководства под самые популярные специализации: Flutter для Android и iOS-разработчиков, Flutter для веб-разработчиков, для специалистов по React Native, для работающих на Xamarin.Forms. Было легко увидеть закономерности и перестроиться на новую технологию.
За то время, что мы работали над Medcorder, Flutter развился до стадии Stable release. Это произошло в декабре 2018 года Обновляться до новых версий фреймворка было непросто. Здесь помог наш опыт разработки нативных приложений — так как часть сложностей можно было решить, лишь понимая на глубоком уровне CocoaPods для iOS и Grade для Android.
Дизайн
По умолчанию фреймворк содержит два вида интерфейса виджетов: Cupertino Widgets (в стиле Apple) и Material Design Widgets. К нашему прототипу больше подходил Material, его и взяли за основу.
Flutter позволяет создавать и собственные UI. Спустя три недели работы с Flutter мы выяснили, что реализация UI занимает очень мало времени, за исключением разве что узкоспециализированных вещей вроде кастомного скроллинга.
Приложение при этом выглядит нативным, что даёт возможность не прорабатывать повторно пользовательские сценарии. При этом в случае необходимости можно спроектировать отдельный интерфейс для iOS и отдельный для Android.
Open-source
Flutter — проект с открытым исходным кодом. Как следствие, постоянно растет число готовых модулей и дополнений, которые можно брать при разработке собственных приложений. В список расширений свою лепту внес и Evrone.
При старте разработки Medcorder во Flutter не существовало модулей для проигрывания или записи аудиофайлов. Мы написали собственный — на Objective C для iOS и Java для Android. Сегодня любой желающий может использовать наш Custom Audio Plugin.
Перспективы Flutter
Flutter будет полезен при разработке MVP для стартапов, когда нужно максимально оперативно протестировать бизнес-модель. Создать мобильное приложение на Flutter можно невероятно быстро. Стоит отметить, что хотя два встроенных набора компонентов — Material и Cupertino — не дают реализовать полностью уникальный дизайн, они позволяют легко и удобно экспериментировать с созданием интерфейса и без проблем откатываться назад при неудачах.
Вот, чем силён Flutter:
- простая интеграция с сервисами от Google;
- высокая скорость работы приложений за счет быстрого рендеринга;
- мощный инструментарий для программистов на базе Visual Studio Code и Android Studio;
- общая кодовая база, что позволяет вносить правки одновременно и в iOS и в Android;
- подробная документация;
- одинаковое отображение проекта на обеих платформах.
По задумке авторов Flutter с помощью плагинов работает со звуком, управляет bluetooth или контактами, отправляет SMS. Это специфические для iOS или Android задачи, для которых потребуется написать свой плагин или найти готовый. При этом количество нерешенных задач постоянно снижается: сообщество Flutter растёт и постоянно публикует новые инструменты.
Результат
В июне 2018, приложение было опубликовано для бесплатной загрузки и использования. Medcorder стал настолько успешным, что основатель оставил свою работу в Google, чтобы сфокусироваться на дальнейшей разработке приложения, которое получило инвестиции в размере $2.5 млн. Проблемы со здоровьем могут быть трудными для пациентов и их семей, но Medcorder облегчает эту задачу, помогая лучше понять варианты лечения и принять более взвешенные решения.
Evrone — ценный союзник для стартапов, стремящихся быстро воплотить свои идеи в жизнь. Мы используем самые эффективные технологические решения, чтобы превратить видение продукта в работающий MVP, сокращая время выхода на рынок и предоставляя возможность определить наиболее ценную аудиторию продукта.