Приложения МАКИ МАКИ. Часть 2. Разработка: инструменты и процесс

Это продолжение статьи про разработку мобильных приложений МАКИ МАКИ. Процесс проектирования и дизайна мы разобрали в первой части. Теперь пришла очередь рассказать о разработке.


Выбор платформы


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


Согласно описанию на Хабре


«PhoneGap — это OpenSource платформа, позволяющая разрабатывать мобильные приложения на HTML, JavaScript и CSS под различные платформы (практически без изменения кода приложения) в их число входят: iOS, Android, Blackberry, WebOS, Symbian и Windows Mobile на подходе. Прелесть его в том, что он не требует навыков разработки под конкретную платформу. Вы пишете свое приложение на JavaScript, используете HTML и CSS для разметки. Вы пишете мобильное приложение как обычный сайт или веб-сервис.»

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

С этого момента все усложнилось и мы поняли, что на HTML и JS качественное приложение нам не выпустить. Начали рассматривать альтернативы. 

Оказалось, что их не так-то и много. В сравнительном анализе решений остался один лидер — Xamarin

Основная идея решения проста — вы пишете бизнес-логику приложения на языке C#, при этом имеете возможность использовать нативные элементы интерфейса для каждой платформы.

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

К моменту утверждения средств разработки пришло понимание, что та модель навигации, которую мы спланировали для iOS требует переосмысления и адаптации под Android.

В итоге, под давлением таких факторов как:

  • отсутствие качественных e-commerce приложений; 
  • узкая поддержка среди разработчиков;
  • оставшиеся неразрешенными технологические вопросы;
  • жесткие требования к срокам выпуска iOS версии;

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

Программирование

К этапу программирования мы подошли 1 июня.

Для проведения работ сформировали три команды, которые отвечали за свои части проекта:

  • Сервер 
  • iOS
  • Android

Так как условия начисления бонусов, размеры скидок достижений и прочие тонкости могли в любой момент поменяться, логично было реализовать основную часть логики на стороне сервера. Для этого на сайте makimaki.ru требовалось разработать дополнительный  функционал и релизовать REST API. 

Принимая во внимание скорый дедлайн по запуску iOS версии (публикация в App Store не позднее 10 августа), было принято решение:

  • Начать работу с подготовки документации к API.
  • Одновременно с серверной частью приступить к реализации iOS версии, опираясь на документацию.
  • Фиксировать окончательные требования в процессе разработки iOS-версии в ТЗ для проведения приемочного тестирования.
  • Неготовые методы API заменить до реализации заглушками.
  • Разработку Android-версии начинать после подготовки дизайн-макетов и завершения работ по документации API. В качестве окончательных требований использовать ТЗ, сформированное в процессе работы над iOS версией.

В конце проекта документация по API содержала в себе описание 36 методов на 56 страницах A4:

Последовательность работ по разработке можно посмотреть на диаграмме:

Тестирование и запуск

Приложения iOS для тестирования распространялись с помощью сервиса TestFlight. Сервис позволяет устанавливать бета-версии приложений на любые устройства без публикации в  App Store. Кстати, после сентябрьской презентации Apple, приложение ТеstFlight стало доступным в AppStore и получило широкую поддержку производителем.

Приложения Android тестировались на доступных нам девайсах путем установки .apk файла.

C iOS особых сложностей не возникло и первый релиз без критичных багов появился в App Store 7 августа.  

А вот с Андроид-версией трудности все-таки возникли. 

По плану, рабочая версия приложения должна была появиться в Play Market до 1го сентября (с сентября отключали поддержку сервера старых приложений), однако из-за обилия устройств и версий системы, мы увязли в тестировании. Решили выложить сырую версию в виде «как есть» и заменить старое приложение, которое вот-вот перестанет работать. На следующий день обнаружилось, что в приложении не работала авторизация с помощью Facebook и еще одна, более важная ошибка: заказы начали приходить без номера телефона. 

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

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

iOS

  • iPhone 5S  / iOS7
  • iPhone 4S / iOS7

Android

  • Samsung Galaxy S2 / Android 4.1
  • Samsung Galaxy S3 / Android 4.3
  • Samsung Galaxy S4 / Android 4.4
  • Sony Xperia Z1 / Android 4.4
  • LG Nexus 5 / Android 4.4
  • HTC One X / Android 4.2

 
В качестве критериев тестирования были приняты: 

  • прототип в inVision;
  • ТЗ, cформированное в процессе реализации;
  • текущие схемы работы бонусной системы и достижений;
  • здравый смысл.

На выходе мы получили две таблицы Google Docs, содержащие 25 ошибок для Android и 10 для iOS, которые оперативно устранили.

Актуальные версии приложений доступны в App Store и Play Market.

Выводы

Приложение МАКИ МАКИ дало нам опыт, необходимый для получения качественных процессов проектирования, разработки и тестирования мобильных приложений.

Вот основные выводы, которые мы получили во время работы над проектом:

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

О чем мы не рассказали в этой статье

Пост получился достаточно объемным, и не включил в себя:

  • Сравнение и выбор систем аналитики;
  • Продвижение мобильных приложений;
  • Среду взаимодействия разработчиков;
  • Процесс тестирования;
  • Критерии проверки и сроки публикации в App Store и Play Maket. 

Если у вас появится интерес к подобным материалам, подготовим отдельные обзорные посты по каждой интересной теме.

P.S.  Надеюсь, рассказ был интересным и и показал основные шаги разработки мобильного приложения. Если вы хотите поделиться мнением или задать какие-то вопросы, будем рады вашим комментариям!

Приложения МАКИ МАКИ. Часть 2. Разработка: инструменты и процесс

Андрей Евтеев

Исполнительный директор

Занимаюсь развитием агентства, курирую ключевые проекты. Увлекаюсь дизайном, технологиями и единоборствами. Связаться со мной можно любым удобным способом: VK, FB, Twitter или по почте evteev@simpledream.ru.

comments powered by Disqus