Mad Brains
СТАТЬИ ТЕХНОЛОГИИ

Какие технологии выбрать для своего мобильного приложения

Статья для тех, кто выбирает технологии
для своего мобильного приложения. Колонка технического директора Mad Brains Анатолия Пешкова

Опубликовано: 1 августа 2024 г.

Время чтения: 4 мин.

Поделиться: VK Telegram WhatsApp
Какие технологии выбрать для своего мобильного приложения

С чего начинается выбор технологий

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

Прежде чем сравнивать конкретные языки и SDK, полезно ответить себе на несколько вопросов:

  • Какую задачу решает приложение — это MVP для проверки гипотезы или продукт на годы вперёд?
  • На какие платформы нужно попасть в первую очередь: только iOS, только Android или обе сразу?
  • Насколько глубоко приложению нужно работать с возможностями устройства — камерой, геолокацией, Bluetooth, платежами, биометрией?
  • Какой бюджет и срок заложены на первый релиз и на дальнейшую поддержку?
  • Есть ли уже команда с опытом в конкретном стеке, или разработчиков предстоит нанимать под проект?

Ответы на эти вопросы почти всегда сужают выбор до двух-трёх разумных вариантов ещё до того, как разговор доходит до конкретных фреймворков.

Из чего вообще складывается технологический стек

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

  1. Язык программирования — то, на чём пишется логика приложения.
  2. Фреймворк или платформа разработки — инструмент, который берёт на себя рендеринг интерфейса, работу с памятью, доступ к API устройства.
  3. Среда разработки (IDE) и сопутствующая инфраструктура — от неё зависит скорость работы команды, удобство отладки, доступность готовых библиотек.
  4. Целевая платформа — iOS, Android или обе сразу, а иногда ещё и веб или десктоп в рамках одного продукта.

Эти уровни связаны между собой: язык диктует, какие фреймворки доступны, фреймворк — какие IDE удобно использовать, а платформа — какие ограничения накладывает магазин приложений и операционная система. Разумно проектировать стек сверху вниз: сначала определить бизнес-требования, затем платформу, и только потом — конкретные инструменты.

Нативная разработка или кроссплатформенная — в двух словах

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

  • Нативная разработка (Swift для iOS, Kotlin для Android) даёт максимальный контроль над производительностью и доступ ко всем возможностям платформы без задержек. Плата за это — два независимых проекта, две команды или два набора компетенций, соответственно выше стоимость и дольше сроки.
  • Кроссплатформенная разработка (Flutter, React Native и их аналоги) позволяет вести одну кодовую базу для iOS и Android одновременно, что сокращает бюджет и время выхода на рынок. Компромисс — часть логики всё равно приходится писать нативно для сложных интеграций, а обновления SDK платформ иногда требуют доработки самого фреймворка.

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

На что смотреть при выборе конкретного инструмента

Когда платформенная стратегия определена, стоит сверить конкретный фреймворк или язык с практическими критериями:

  • Зрелость экосистемы. Много ли готовых библиотек под нужные интеграции — платежи, аналитику, push-уведомления, карты. Чем зрелее экосистема, тем меньше велосипедов придётся изобретать.
  • Поддержка со стороны вендора. Развивается ли технология активно, кто её сопровождает — крупная компания (как Google в случае Flutter) снижает риск того, что инструмент останется без обновлений.
  • Доступность разработчиков на рынке труда. Даже самый удачный технологически стек бесполезен, если под него сложно нанять или переобучить команду в разумные сроки.
  • Стоимость дальнейшей поддержки. Разработка — это не только первый релиз, но и годы доработок. Стоит заранее прикинуть, во сколько обойдётся расширение функциональности и миграция на новые версии SDK.
  • Требования к производительности и UX. Игры, приложения с интенсивной графикой или сложной анимацией часто выигрывают от нативного подхода даже там, где остальной функционал вполне можно закрыть кроссплатформенно.

Итог

Универсального «правильного» стека не существует — есть стек, который подходит конкретному продукту на конкретном этапе. Мы в Mad Brains обычно начинаем с бизнес-требований и только потом спускаемся к технологиям: сначала считаем экономику и сроки, затем смотрим на функциональные требования к приложению, и только в конце выбираем конкретный язык и фреймворк. Такой порядок избавляет от ситуации, когда красивое техническое решение не отвечает задачам бизнеса — а именно это чаще всего и стоит компаниям лишних месяцев разработки и перерасходованного бюджета.