И когда нативной разработки не избежать
Разработка кроссплатформенного мобильного приложения — когда это оправдано?
Сибирикс

Разработка кроссплатформенного мобильного приложения — когда это оправдано?

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

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

Кроссплатформенная разработка — быстрый старт с небольшими инвестициями

Кроссплатформенность означает, что готовое приложение можно будет использовать на нескольких платформах. Чаще всего кроссплатформенными называют приложения, которые разрабатываются сразу для двух платформ — iOs и Android. На первый взгляд такое решение кажется оптимальным для бизнеса — ведь если есть возможность разработать одно приложение для всех пользователей, а не заказывать разработку отдельно под каждую платформу, почему бы так не сделать?

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

У кроссплатформенной разработки есть и минусы:
  • У вас не получится «отработать на максимум» в дизайне — у каждой платформы есть свои принципы взаимодействия с пользователем. Те же жесты для Andriod и iOS различаются. Поэтому для кроссплатформенного приложения придется использовать унифицированный дизайн, в котором не используются уникальные для платформы пользовательские сценарии.
  • Фреймворки для разработки кросс-платформенных приложений поддерживают не все функции устройств — в некоторых случаях в приложении придется дописывать код на нативных языках для каждой платформы или подключать дополнительные модули. Например, популярный кроссплатформенный фреймворк React Native не поддерживает обращение к датчикам смартфона или проигрывание медиа. Также может возникнуть проблема со встроенными покупками, потому что у каждой операционной системы этот процесс отличается.
  • Необходимо оперативно проверять приложение после выхода свежей версии каждой системы. Скорее всего, под свежей операционкой что-то перестанет работать как задумывалось, придется оперативно это чинить. Благо — эти обновления обычно происходят не синхронно. Таким образом, за время своего существования кроссплатформенное приложение потребует в среднем вдвое больше обновлений, чем нативное.
  • Есть недоказанная теория, что в AppStore и Google Play лучше продвигаются нативные приложения. Ведь популярные платформы все время соперничают друг с другом, поэтому логично, что они будут больше поддерживать «своих» разработчиков, чем универсальных.
  • Еще небольшой нюанс — кроссплатформенное приложение скорее всего будет весить больше, чем нативное. Многие пользователи обращают на это внимание и при прочих равных выберут более «компактное» приложение.
Существует несколько популярных кроссплатформенных фреймворков, и постоянно появляются новые. Для своего приложения хочется использовать самые современные технологии, чтобы оно дольше не устарело. Но вот беда — не ясно, станет ли модная технология действительно популярной. Например, если ваше приложение написано на Xamarin, то для его доработки нужно искать специалиста, который Xamarin умеет. А их не так много. Сейчас проще и дешевле найти разработчика на Flutter.

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

Когда имеет смысл разработка кроссплатформенного приложения

  • При создании MVP или тестировании гипотезы. Если для вас главную роль играет стоимость и скорость разработки, то нанимать две команды под каждую операционную систему не имеет смысла. Сроки в итоге все равно окажутся больше, даже если разработка пойдет параллельно. Так что проще выпустить кроссплатформенное приложение.
  • В приложении нет сложной логики. Пользователи iOS и Android по-разному взаимодействуют с приложениями из-за различного интерфейса систем. В приложениях со сложной логикой это особенно заметно. Но если вы разрабатываете что-то относительно типовое — например, интернет-магазин — то и взаимодействия будут стандартными.
  • Дизайн приложения максимально простой. В некоторых приложениях — например, для медитации или творчества, оформление играет особую роль. Пользователи хотят видеть звуковые, визуальные и тактильные отклики на свои действия. В кроссплатформенном приложении такое сложно реализовать — все равно придется писать свой код под каждую платформу. Если же в вашем проекте таких спецэффектов не надо — стоит рассмотреть кроссплатформенную разработку.
  • Вы хотите охватить как можно больше пользователей сразу. Кроссплатформенная разработка позволяет охватить сразу всех пользователей смартфонов, в то время как нативное приложение, как правило, сначала появляется на одной из платформ.
  • Важно, чтобы ваше приложение было абсолютно одинаковым для пользователя любой платформы. Если перед вами стоит такая задача, то, конечно, есть смысл разработать кроссплатформенное приложение с единым дизайном, а заодно и кодом.

Когда нужна нативная разработка

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

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

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

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

Самые популярные кроссплатформенные фреймворки

React Native

Пожалуй, это наиболее распространенный среди разработчиков фреймворк. Он был создан Facebook на основе JavaScript, Java, C++ и Objective-C. React Native позволяет работать с большинством популярных платформ — Android, iOS, Windows, MacOS, а также со смарт-ТВ. React Native удобен тем, что поддерживает интеграцию с другими языками программирования, а также с нативными приложениями. Например, в уже существующее приложение для iOS или Android можно дописать часть кода на React Native.

Flutter

Этот фреймворк был разработан Google на основе C++, Dart и Skia Graphics Engine. Изначально Flutter создавался только для Android-приложений, но сейчас он позволяет работать также и с iOS, Windows, macOS и Linux, хотя для работы с iOS фреймворку приходится использовать АОТ-компиляцию. В отличие React Native, Flutter не превращает исходный код приложения в нативный, который уже выполняется платформой. Он фактически рисует своё окно на экране телефона и выводит все элементы сам.
Кстати, SingularityApp мы разрабатываем на Flutter. Приложение практически невозможно отличить от нативного. Попробуйте сами!

Kotlin Multiplatform Mobile

Фреймворк находится на стадии альфа-тестирования, но уже получил популярность среди разработчиков. Kotlin Multiplatform Mobile позволяет создавать кроссплатформенный приложения, сохраняя нативный UI-слой. То есть, визуальный интерфейс приложения выглядит «родным» на любой платформе. Код, написанный на Kotlin, легко внедрить в уже имеющееся нативное приложение — это позволяет сократить затраты на разработку. Также в помощью фреймворка можно создавать собственные мультиплатформенные библиотеки.

Xamarin

Этот фреймворк написан на основе C# и практически не отличается от него по своей логике. Он позволяет создавать приложения для iOS, Android и Windows Phone, а также для десктопных платформ, смарт-ТВ и умных часов. Xamarin отличается своей «самодостаточностью» — на нем без использования сторонних модулей и элементов нативного кода можно написать до 90% приложения.

Делаем выводы

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

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

Не забывайте, что маркетплейсы лучше относятся к нативным приложениям. Поэтому, если быстрая модерация на AppStore и Google Play для вас важна, стоит иметь это в виду.
В остальных случаях выбор стоит скорее между опытом команд, ценами и сроками, чем между технологиями. Если вы не уверены с выбором — запросите смету и расчет сроков у нескольких команд, чтобы было можно сравнить расчеты для обоих вариантов. Так сделать выбор будет проще.