Как разрабатывают мобильные приложения: опыт Mad Brains

Разработка качественного мобильного приложения – это сложный многоступенчатый процесс, требующий участия множества квалифицированных специалистов, таких как системные аналитики, дизайнеры интерфейсов, разработчики, тестировщики. За 5 лет на рынке в нашей компании сложились четко выстроенные процессы, позволяющие организовать командную работу и выпускать качественные продукты любой сложности.
Еще до старта непосредственного написания кода будущего приложения проводится большой подготовительный аналитический этап. Мы подробно рассказали о предпроектной аналитике, разработке прототипа и дизайна в отдельных материалах: "Как мы проводим аналитику", "Предпроектная аналитика", "Проектирование интерфейса", а сейчас хочется поговорить о самом процессе производства мобильного приложения в нашей студии мобильной разработки Mad Brains.

Технологии разработки мобильных приложений

Выбираем архитектуру приложения
Все начинается с подбора наиболее подходящей под задачи приложения архитектуры. Это может быть MVC, MVVM, VIPER для iOS либо AAC MVVM и Moxy MVP для Android. На этом этапе закладывается фундамент, позволяющий в будущем быстро и с наименьшими затратами расширять и изменять набор функций приложения. Тщательный подход к выбору и разработке архитектуры необходим не только крупным проектам, но и небольшим, ведь если изначально не заложить подходящую под конкретный кейс архитектуру, то очень скоро наступит момент, когда возрастающую сложность уже невозможно будет контролировать.

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

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

Рекомендуемое производителями решение на основе нативной разработки предполагает написание независимых приложений под каждую платформу, отдельное приложение для iOS, отдельное приложение под Android.
Преимущества нативных приложений:
  • высокая скорость отклика интерфейсов, приложение реагирует мгновенно, отсутствуют задержки при скролле, анимации, вводе данных, нажатиях на кнопки;
  • расширенные возможности стилизации приложения, эксклюзивно доступные на iOS/Android;
  • возможность конкурировать с лидерами рынка, получать бесплатное продвижение в App Store и Google Play;
  • поддержка всех аппаратных и программных возможностей телефона, включая push-уведомления, доступ к геосервисам, камере, внутренним покупкам,
    первоочередной доступ к последним нововведениям, что дает создать конкурентное преимущество: виджеты, Apple Pay, новые предложения, Deep Links, ARKit.

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

Недостатки приложений на кроссплатформе:
  • скорость работы, особенно на устройствах со слабым железом. Задержки при скролле, нажатиях кнопок, низкий FPS;
  • неродной интерфейс приложений, проблемы в реализации единой навигации на iOS и Android;
  • проблемы с реализацией push-уведомлений;
  • каждая из общих функций: внутренние покупки, работа с геолокацией, работа в фоне, доступы к периферии — это сторонние библиотеки-обертки, содержащие дополнительные ошибки, что приводит к риску непредвиденных ошибок;
  • работа с жестами на платформах устроена по-разному.

Преимущества кроссплатформенных решений:
  • цена и время на разработку ниже, если не требуется дополнительная подгонка приложения под каждую платформу, логика приложения простая, пользовательский интерфейс аскетичен, иначе время на разработку приближается к нативной, а результат недостаточно хорош;
  • единая кодовая база, приложение работает одинаково на всех платформах, что позволяет избежать потенциальных ошибок и существенно упростить изменения логики приложения – не придется проделывать двойную, а то и тройную работу;
  • возможность поддержки своими силами, при условии, что в вашей компании есть ИТ-отдел с веб-программистами.

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

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

Какие языки программирования мы используем
Разрабатывая iOS-приложения, мы используем языки программирования Swift и Objective-С. Для новых проектов мы выбираем Swift. Это новый современный язык, разработанный компанией Apple под нужды современности. В нем были учтены и исправлены недостатки морально устаревшего Objective-C. Новый язык надежнее, имеет строгую типизацию, что позволяет устранять ошибки в коде еще на стадии компиляции, он лаконичнее, что позволяет писать меньше кода, а значит, сокращать время и стоимость разработки. Отдельно Apple выделяет быстродействие Swift – так, например, поиск в приложении работает в 2,6 раза быстрее.

Objective-C все еще остается в ходу, поскольку продолжается поддержка больших проектов, разработанных до 2014 года, либо для узкоспециализированных задач, не решаемых с помощью Swift.

Для Android-приложений мы используем языки программирования Kotlin и Java. Как и в случае с iOS, если это старт нового проекта, то выбираем Kotlin. Это современный язык, вобравший в себя все лучшее из Java и внесший в разработку все последние современные тенденции. Компактный, легко читаемый, безопасный код. Язык разработан российской компанией JetBrains, имеющий огромный опыт разработки на Java. В 2018 году Google включил Kotlin в официальные инструменты разработки под Android. Kotlin отлично совместим с Java, поэтому в legacy-проектах применяются оба языка.

Наша экпертиза
С 2014 года мы реализовали больше 40 проектов в различных областях и стали экспертами в разработке медиа-сервисов, приложений для навигации и картографических сервисов, e-commerce. Нам доверяют такие компании, как OneTwoTrip!, Лайфхакер, X-cart, Феникс-Фильм, Omnicomm Online, Media FM, Vintera.TV.

В качестве примеров можно привести несколько приложений, которыми мы гордимся:
Это небольшая часть реализованных нами проектов под iOS и Android, а с остальными вы можете ознакомиться в разделе "Проекты".

Основные процессы при создании мобильного приложения

Методология разработки
Работа в нашей компании построена на методе управления проектами SCRUM. Перед началом разработки составляется общий список задач, производится оценка трудозатрат на их выполнение. Затем определяются наиболее приоритетные задачи, которые команда сможет реализовать за временной отрезок, называемый "спринт". Обычно это 2 недели, что позволяет максимально гибко корректировать процесс разработки и избегать многих проблем. По окончанию спринта менеджер проекта совместно с клиентом и командой подводят итоги, проводится демо-презентация реализованных возможностей и обсуждение планов на следующий спринт.

Основные преимущества подхода:
  • Возможность быстро запустить проект с самыми необходимыми функциями и минимальным бюджетом;
  • Полный контроль над расходованием бюджета, ежедневный мониторинг хода работ;
  • Еженедельные демо позволяют клиенту видеть процесс реализации проекта от идеи до продукта;
  • Возможность вносить коррективы в техническое задание по ходу реализации проекта, что является несомненным преимуществом для заказчика.

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

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

Back-end разработка
В организации разработки и развития клиент-серверного приложения важно отделить отладочный сервер от сервера, с которым взаимодействуют реальные пользователи, поэтому для работы над проектом мы разворачиваем два окружения:
  • Staging – отладочный сервер. На нем апробируются и тестируются все функции и изменения. С этим сервером взаимодействуют разработчики и тестовые пользователи. После того как код показал свою работоспособность и стабильность, его переносят на production-сервер.
  • Production – основной рабочий сервер. На нем непосредственно выполняется серверное приложение для реальных пользователей.

Эта схема позволяет в дальнейшем отлаживать работу, не мешая пользователям пользоваться приложением.

При разработке мы используем автогенерацию документации с помощью Swagger. Это залог того, что в будущем к развитию продукта сможет подключиться любая команда с минимальными затратами на вхождение.

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

Мобильная аналитика

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

Аналитика мобильного приложения позволяет получить такие важные показатели как:
  • количество ежедневной активной аудитории в приложении;
  • статистику по переходам на целевые экраны;
  • количество установок за определенный период (день, месяц, год);
  • частоту использования функций;
  • статистику по времени использования за сессию, средней глубине навигации, регистрациям, покупкам в приложении, по количеству заходов в приложение за отчетный период и многое другое;
  • замерить retention rate — частоту возврата аудитории.

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

Базовая аналитика уже внедрена во все приложения, которые мы разрабатываем. По вашему желанию возможно интегрировать любые удобные вам сервисы аналитики: Google Analytics, Firebase, AppMetrica, App Annie и другие.Оставив только необходимые функции, следует обратить внимание на дизайн приложения. Профессиональное агентство думает не только о красоте и удобстве интерфейса, но и о целесообразности его внедрения с коммерческой точки зрения.

Публикация

После окончания процесса разработки наступает этап публикации приложения в App Store или Google Play. Это довольно сложный процесс, требующий знания множества нюансов. Основные сложности возникают при взаимодействии с App Store. Мы консультируем наших клиентов по поводу сбора и подачи необходимых документов для регистрации аккаунта в App Store. Берем на себя решение возникающих в процессе проблем. Apple достаточно трепетно относится к качеству приложений, попадающих в магазин, поэтому часто можно наткнуться на отказ публикации с их стороны.

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

Поддержка

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

Какие работы выполняются в рамках поддержки приложения?
  • мониторинг работоспособности приложения;
  • публикации обновлений в App Store и Google Play;
  • внедрение и расширение функционала приложения;
  • обновление совместимости с новыми ОС.

Выводы

  • Будьте особенно внимательны при разработке архитектуры приложения – это сэкономит ваши силы, время и бюджет;
  • Нативные решения лучше кроссплатформенных, поскольку такие приложения проще масштабировать, и они приятны пользователям;
  • Выбирайте Swift для приложений на iOS, а Kotlin – для Android;
  • Сделайте два сервера – один для тестирования и отладки, второй для работы приложения;
  • Не забывайте про внедрение систем аналитики в приложение, чтобы своевременно отслеживать эффективность любых изменений;
  • При публикации приложений в сторах уделите особое внимание оформлению витрин – это важно при старте;
  • Держите руку на пульсе даже после релиза приложения.