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

Разрабатывать мобильное приложение независимо для разных платформ, или изо всех сил налегать на кроссплатформенные средства? Многие скажут, что это заведомо ошибочная постановка вопроса: у обоих вариантов есть свои преимущества и недостатки, так что единственно верного ответа нет. Но это не значит, что разговоры на эту тему могут быть лишь холивором, бессмысленным и беспощадным.

Во-первых, преимущества и недостатки обоих подходов будут совершенно по-разному сказываться в разных ситуациях. Значит, этот вопрос стоит рассматривать не в вакууме, а применительно к конкретным условиям. А во-вторых, нюансы ещё и меняются со временем: например, совсем недавно Microsoft, купив Xamarin, сделали этот продукт бесплатным. Означает ли это, что привычные нам «за и против» пора пересмотреть?

b0a4670d6354486e8e93cf7b404e8265.jpg

Мы задали несколько вопросов трём специалистам, занимающимся мобильной разработкой на заказ и хорошо знакомым с тем же Xamarin: кому ещё оценить спектр возможных ситуаций, как не им, задействованным в проектах разного масштаба и характера? Нашими собеседниками стали:

  • Михаил Самарин (Futurice, бизнес-директор)
  • Денис Кретов («Нотиссимус», технический директор)
  • Максим Pocheshire Евтух («Нотиссимус», разработчик)

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

2a7114246bae4be0a1810d2719be6dba.jpg
Денис Кретов
Наша компания занимается мобильной разработкой более 3-х лет и создавалась под отдельное отраслевое решение — мобильные приложения для интернет-магазинов. Так как у каждого интернет-магазина есть общий перечень сущностей, то и на старте решили использовать Xamarin и смогли вынести 70% общей логики в отдельные библиотеки. Это позволило создавать типовые решения для интернет-магазинов в сжатые сроки.

8d57463629ba41c0a1b649a316db408c.jpg
Максим Евтух
Мы долго и упорно шли к той архитектуре и к тем принципам разработки, которые используются сейчас в компании. В итоге каждый проект состоит из:
* API
* CORE
* UI
API — взаимодействие с сервером, CORE — бизнес логика, UI — непосредственно верстка и код, покрывающий сопутствующие UI моменты (анимация, переходы и пр.). Причём API и CORE не зависят от изменений платформы (т.е. используются и в Android’е и в iOS), что дает ощутимый прирост в скорости разработки, а главное, упрощает поддержку проекта в будущем.

Достигнуть подобного мы смогли с помощью Xamarin, а с помощью MvvmCross смогли расширить количество переносимого кода.

61b0222bd2b8495bb8a11eb5628b2f54.jpgМихаил Самарин
Поскольку мы разрабатываем под все существующие мобильные платформы практически с первого дня существования компании Futurice, то есть 16 лет, то пробовали и продолжаем пробовать найти оптимальное решение в каждом случае. В настоящее время мы используем все варианты: нативные решения, Cordova, React Native, Xamarin Native и Xamarin Forms. Какое именно в конкретном случае — зависит от целей конкретного заказчика и особенностей проекта.

Что вы можете посоветовать другим — когда стоит использовать кроссплатформенные инструменты, а когда избегать их?


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

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


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

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

Михаил Самарин:
На нашем опыте могу сказать, что определяющими является комбинация трёх факторов: оценка возможности долговременной поддержки, бюджет заказчика и допустимые компромиссы в user experience. Для оценки последнего возможен такой критерий: какова будет частота и продолжительность использования приложения? Если пользователь будет прибегать к нему раз в неделю на пять минут, то можно идти на куда большие компромиссы и больше делать кроссплатформенными средствами, чем в приложении, которое используют каждый день и подолгу, замечая каждый недостаток.

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


Денис Кретов:
Я смотрю с оптимизмом. С появлением бесплатной версии Xamarin количество использований его в проектах должно резко возрасти.

Максим Евтух:
Большой плюс того, что Microsoft купил Xamarin — он сделал его бесплатным. Но кардинально ничего не изменится, разве что ошибки Xamarin будут исправляться быстрее благодаря open source (по крайней мере, я на это надеюсь). Если же возрастет популярность Xamarin — что ж, это также к лучшему, потому что хороших специалистов, знакомых с этой технологией, сейчас не хватает.

Михаил Самарин:
Да, поднимется за счет indie-разаработчиков. А в корпоративной среде, где цена лицензий никогда не была проблемой — за счёт того, что и Xamarin и Tools теперь open source. Это добавлает ощущения безопасности и степени доверия выбору. Кроме того, мы должны помнить, что C#, Xamarin Studio on Mac, Visual Studio on Windows — это очень, очень хороший набор. Мы наблюдали случаи, когда разработчик, на 100% занимающийся только iOS, после знакомства с Xamarin следующий проект, тоже на 100% для iOS, делал с Xamarin. Только из-за того, насколько комфортен язык C#.

В прошлом году Михаил Самарин на петербургской конференции Mobius говорил об этом вопросе среди многих других, и его прошлогодний доклад выложен на YouTube. А 4 июня на Mobius 2016 Денис Кретов и Максим Евтух в своём совместном докладе покажут на реальных примерах, как именно они в своей компании реализуют выбранный ими подход с использованием Xamarin и MvvmCross — не пропустите!

© Habrahabr.ru