Приложения МАКИ МАКИ. Часть 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. Надеюсь, рассказ был интересным и и показал основные шаги разработки мобильного приложения. Если вы хотите поделиться мнением или задать какие-то вопросы, будем рады вашим комментариям!
Андрей Евтеев
Исполнительный директор
Занимаюсь развитием агентства, курирую ключевые проекты. Увлекаюсь дизайном, технологиями и единоборствами. Связаться со мной можно любым удобным способом: VK, FB, Twitter или по почте evteev@simpledream.ru.