Разработка приложений для мобильных устройств
Разрабо́тка приложе́ний для моби́льных устро́йств — это процесс создания программного обеспечения для одного или нескольких мобильных устройств, включая персональный цифровой помощник (PDA), корпоративный цифровой помощник (EDA) и мобильный телефон[1]. Программные приложения разрабатываются с учётом значительных аппаратных ограничений: архитектуры и скорости процессора, объёма оперативной памяти, ограниченного объёма хранения данных, большого разнообразия дисплеев (технологии, размеры, разрешение) и методов ввода (кнопки, клавиатура, сенсорные экраны со стилусом или без него)[2]. Такие приложения (или «приложения», «аппы») могут быть предустановлены производителем либо распространяться как веб-приложения, используя серверную или клиентскую обработку (например, JavaScript), чтобы обеспечить опыт, схожий с нативным приложением, в браузере[3].
Сектор разработки мобильных приложений переживает быстрый рост, особенно в Европе. По оценке Progressive Policy Institute, в январе 2017 года в странах Евросоюза было занято 1,89 миллиона человек в «экономике приложений» — на 15 % больше, чем годом ранее. В отрасль входят разработчики мобильных приложений и специалисты, поддерживающие инфраструктуру приложений[4].
Обзор
Для упрощения и стандартизации процесса создания мобильных приложений предложены различные подходы.
Большинство производителей аппаратного обеспечения (например, Apple для iPod/iPhone/iPad) выпускают официальные SDK. Кроме того, компании могут предоставлять средства тестирования ПО и/или контроля качества (QA). Для получения доступа к SDK разработчику часто требуется подписать соглашение о неразглашении (NDA), которое ограничивает распространение конфиденциальной информации.
Важной частью процесса разработки является проектирование мобильного интерфейса пользователя (UI). При проектировании учитываются сжатые размеры экрана, способы ввода, условия и контексты использования, мобильность. К особенностям относятся короткий промежуток внимания пользователя и форма устройства, ограничивающая взаимодействие (экран в одной руке/двумя руками). Контекстом UI может служить информация о местоположении, времени, активности, что позволяет автоматизировать выбор опций (например, при планировании встреч или фильтрации списка услуг).
Пользователь является центральной фигурой взаимодействия, а интерфейс объединяет аппаратные и программные компоненты. Ввод пользователя обеспечивает управление, а устройство откликается обратной связью (выводом).
Главная задача дизайна мобильного интерфейса — создание понятного, удобного интерфейса. Функциональность обеспечивается мобильными корпоративными платформами или IDE.
Разработчикам приходится учитывать разнообразие устройств с разными размерами экрана, аппаратными возможностями и конфигурацией, что связано с высокой конкуренцией на рынке устройств и постоянными изменениями платформ.
В настоящее время мобильные приложения обычно распространяются через официальные онлайн-магазины (например, App Store для Apple, Google Play для Android), а разработчики проходят формализованную процедуру модерации. Ранее такой системы не существовало.
Мобильные UI («фронтенды») обычно опираются на серверную инфраструктуру («бэкенды») для доступа к корпоративным системам. Бэкенд обеспечивает маршрутизацию данных, безопасность, аутентификацию, авторизацию, работу в офлайне, оркестрацию сервисов. Реализация охватывает смешанные middleware-компоненты: серверы мобильных приложений, мобильный бэкенд как сервис (MBaaS), инфраструктуру SOA.
Платформы
Пакеты программных средств для разработки, развёртывания и поддержки мобильных приложений состоят из множества инструментов, позволяющих создавать, тестировать и распространять приложения для одной или нескольких платформ.
Инструменты фронтенд-разработки
Инструменты для фронтенда ориентированы на интерфейс пользователя и UX и предоставляют следующие возможности:
- инструменты проектирования UI;
- SDK для доступа к функциям устройства;
- кроссплатформенную поддержку.
Ниже приведён перечень примечательных инструментов.
Официальные (first party)
Официальные инструменты включают SDK, выпущенные производителем аппаратной платформы (например, Apple, Google), а также поддерживаемое третьими сторонами ПО для разработки мобильных приложений под данное оборудование.
| Платформа | Язык программирования | Отладчики | Эмулятор | Среда разработки | Кроссплатформенность | Форматы инсталляции | Стоимость инструмента |
|---|---|---|---|---|---|---|---|
| Android | Java, возможно использование C, C++, | Встроенный в Eclipse отладчик, отдельная программа для отладки | Да | Eclipse, IntelliJ IDEA, Android Studio, Project Kenai Android plugin для NetBeans | Только Android, из-за Dalvik VM, с марта 2009 | apk | Бесплатно, IntelliJ IDEA Community Edition — бесплатно |
| BlackBerry | Java | Отладчик встроен в IDE | Да | Eclipse, BlackBerry JDE | Только BlackBerry, из-за API RIM | alx, cod | Бесплатно |
| iOS SDK | Objective-C, Swift | LLDB встроен в Xcode IDE | Поставляется с iPhone SDK, интегрирован в Xcode IDE | Xcode | iPhone, iPad, iPod Touch | Только через App Store, требуется ревью и одобрение Apple Inc. | Инструменты Apple бесплатны для разработки на Mac. Приложения можно запускать в симуляторе или на устройстве. Некоторые расширенные функции требуют платного аккаунта разработчика[5]. |
| iOS SDK | Object Pascal | Отладчик встроен в Xcode IDE | Включён в Delphi XE2 professional и выше | Embarcadero Delphi XE2 | iPhone, iPad, iPod Touch | Только через App Store, требуется ревью и одобрение Apple Inc. | Для разработки необходим Mac с процессором Intel, помимо IDE на Windows. Проектирование ведётся под Windows, компиляция и развёртывание — на Mac. Тестирование в симуляторе бесплатно, установка на устройство требует оплаты за ключ разработчика. |
Вторичные (second party)
| Платформа | Язык программирования | Отладчики | Эмулятор | Среда разработки | Кроссплатформенность | Форматы инсталляции | Стоимость инструмента |
|---|---|---|---|---|---|---|---|
| Java ME | Java | Да | Бесплатный эмулятор, Sun Java Wireless Toolkit, mpowerplayer | Eclipse, LMA NetBeans Mobility Pack | Да, однако реализации VM специфичны, часто требуется отдельная сборка | Jad/Jar; PRC-файлы для Palm OS | Бесплатно |
Сторонние (third party)
| Платформа | Язык программирования | Отладчики | Эмулятор | Среда разработки | Кроссплатформенность | Форматы инсталляции | Стоимость инструмента |
|---|---|---|---|---|---|---|---|
| Accelerator | HTML5, C# | Да | Да | Microsoft Visual Studio (без привязки) |
Все платформы, приложения как браузерные | Мобильный веб | Доступны коммерческие лицензии |
| MobileTogether | XPath/XQuery, визуальный язык программирования Action Trees | Да | Да | Проприетарная IDE для Windows | Android, iOS, Windows, браузер | Нативное распространение для каждой платформы | Бесплатно |
| App Inventor for Android | Блочный визуальный язык, дизайнер интерфейса | Ограниченные встроенные средства отладки | Да | Веб-дизайнер, соединяется с Java Web Start-блоками | Android | apk | Бесплатно |
| Appcelerator | JavaScript | Да, в Titanium Studio | Использует нативные эмуляторы | Titanium Studio на базе Eclipse | Android, iPhone; BlackBerry, Tizen, мобильный веб | Нативный формат каждой платформы | Бесплатно, с открытым исходным кодом Apache 2.0, доступны коммерческие лицензии |
| Basic4android | Синтаксис, похожий на Visual Basic | Да | Использует нативные эмуляторы | Проприетарная IDE | Android | Нативный формат платформы | Доступны коммерческие лицензии |
| Codename One | Java | Да | Да | Eclipse, NetBeans | Android, iPhone, BlackBerry, Windows Mobile, J2ME | Нативный формат каждой платформы | Открытый исходный код GPLv2 и сервис подписки на сборки |
| Solar2D | Lua | Да | Да | Xcode | Android, iOS, Nook Color | Нативный формат каждой платформы | Бесплатно по MIT-лицензии |
| DragonRAD | Визуальный язык drag & drop | Да | Использует сторонние эмуляторы | Проприетарная IDE | Android, BlackBerry, Windows Mobile | OTA-развёртывание | Бесплатно и коммерческие лицензии |
| GeneXus для мобильных и смарт-устройств | Моделирование знаний и декларативное программирование (автоматическая генерация кода для каждой платформы) | Использует заранее протестированные библиотеки, ручная отладка после генерации кода не требуется | Облачная публикация, тестирование на устройстве, эмулятор не нужен | Проприетарная IDE | Android, iOS, BlackBerry OS, HTML5 (при необходимости) | Нативные форматы, также облачно- и браузерно-ориентированные | Бесплатная пробная версия, коммерческие лицензии |
| IBM MobileFirst Studio | HTML5, CSS3, JavaScript, плюс нативные SDK языки с API Worklight | Да, браузерный эмулятор Mobile Browser Simulator или интеграция с отладчиком Native SDK | Эмулятор платформы или браузерный эмулятор с Cordova Plugin | Плагин для Eclipse, самостоятельная среда на основе Eclipse | Android, iOS, BlackBerry 6,7, & 10, Windows Phone 7.5 & 8, Windows 8, Adobe AIR, мобильные веб-приложения, десктопный браузер | Нативный формат каждой платформы | Бесплатная редакция для разработчиков, коммерческая лицензия для развёртывания |
Серверные бэкенды
Серверные инструменты дополняют фронтенд-решения, предоставляя централизованные сервисы:
- интеграция с серверными системами,
- аутентификация и авторизация,
- сервисы данных,
- повторно используемая бизнес-логика.
Примеры:
| Платформа | Язык программирования | Среда разработки | Кроссплатформенность | Варианты развёртывания | Стоимость инструмента |
|---|---|---|---|---|---|
| Altova MobileTogether Server | Веб-интерфейс | Проприетарная IDE | Сервер: Windows, Linux, macOS. Поддержка устройств на Android, iOS, Windows 8/10, Windows Phone, HTML5-браузер | На сервере, в облаке или гибридно | Бесплатные инструменты, лицензия для развёртывания требуется |
| GO!AppZone (Globo plc) | JavaScript, интеграция с C#, VB.NET | GO!AppZone Studio | Android, BlackBerry, iOS, Windows RT и др. | На сервере, в облаке, гибридно | Бесплатно для разработки, лицензия или подписка для развёртывания |
Защитные надстройки
В условиях распространённой концепции BYOD, IT-отделы организаций внедряют надстройки для повышения безопасности:
- обёртка приложения,
- шифрование данных,
- клиентские действия,
- отчётность и аналитика.
Системное программное обеспечение
Для платформы мобильной разработки необходим ряд компонентов системного ПО.
| Платформа | Язык программирования | Отладчики | Эмулятор | Среда разработки | Кроссплатформенность | Форматы инсталляции | Стоимость инструмента |
|---|---|---|---|---|---|---|---|
| Adobe AIR | ActionScript, HTML, CSS, JavaScript | Да | Да | Flash Builder, Flash Professional, IntelliJ IDEA | Android, iOS, BlackBerry | Нативный формат | Коммерческая лицензия для некоторых инструментов, AIR SDK бесплатен |
| Firefox OS | HTML5, CSS, JavaScript | Да | Нет, но есть симулятор | Firefox, Firebug | Браузерная реализация | Firefox Marketplace, Web URL | Необходимы Firefox и дополнение-симулятор |
Критерии выбора платформы обычно включают целевые устройства, существующую инфраструктуру и уровень навыков разработчика. При разработке кроссплатформенных решений важно учитывать влияние инструмента на пользовательский опыт. Производительность имеет ключевое значение, поскольку её снижение ведёт к падению удовлетворённости пользователей. Вместе с тем доступны рекомендации и сравнительные тесты, помогающие выбрать между нативной и кроссплатформенной разработкой. Кроссплатформенные среды используют общий код и контейнеры, а интерфейс реализуется на HTML, CSS и JavaScript. Нативная разработка ориентирована на одну платформу с использованием её собственных инструментов и языков. Например, Android-приложения разрабатываются в Eclipse IDE с помощью Android Developer Tools (ADT), для Apple iOS используется Xcode с Objective-C/Swift, для Windows/BlackBerry — собственные среды.
Тестирование мобильных приложений
Сначала приложения проверяются в среде разработки с помощью эмуляторов, позже — на реальных устройствах. Эмуляторы позволяют недорого тестировать приложения для разных моделей телефонов. Примеры инструментов:
- Эмулятор Google Android — для запуска приложений Android на Windows ПК без установки полного SDK;
- Эмулятор из Android SDK — воспроизводит смартфон с полной аппаратной/программной эмуляцией (кроме звонков);
- TestiPhone — браузерный симулятор для быстрой проверки веб-приложений iPhone;
- iPhoney — симулирует отображение сайтов как на iPhone, полезен веб-разработчикам (только на OS X 10.4.7+);
- Эмулятор BlackBerry — официальные программы имитируют работу и интерфейс устройств BlackBerry;
- Windows UI Automation — используется для тестирования приложений на базе Microsoft UI Automation (требует Windows Automation API 3.0);
- MobiOne Developer — IDE для веб-приложений под мобильные устройства (снята с поддержки в 2014 году)[6].
Также используются:
- Eggplant Functional — автоматизированное GUI-тестирование для всех ОС и устройств;
- Ranorex — средства автоматизации тестирования для мобильных, веб- и десктопных приложений;
- Testdroid — реальные устройства и инструменты автоматизации тестирования мобильных/веб-приложений.
Принципы проектирования
По данным отчёта 2020 года, 46 % пользователей мобильных приложений переставали пользоваться или удаляли приложение из-за низкой производительности[7]. Эксперты в области дизайна рекомендуют следующие принципы для успешных мобильных приложений:
Минимум элементов на экране — обеспечивает простое взаимодействие и акцент на одну задачу. Рекомендуется деление форм на шаги, постепенное раскрытие полей, чтобы избежать перегруженности интерфейса[8].
Уменьшение когнитивной нагрузки — интерфейс должен быть «прозрачен», поддерживать автоматическое дополнение, проверку орфографии, предиктивный ввод, выпадающие списки. Желательно сохранять состояние приложения при возврате пользователя[8][9].
Простая навигация — около 11 % пользователей удаляют приложения из-за «сложного интерфейса»[7]. Интерфейс должен содержать заметную панель навигации, знакомые иконки, логически упорядоченные переходы между разделами, что способствует удобству и вовлечённости[8][9].
Уведомления — примерно 19 % пользователей удаляют приложение из-за слишком частых push-уведомлений[7]. Сообщения должны рассылаться в подходящее для пользователя время и быть персонализированы[8].
Впечатление скорости — около 19 % пользователей удаляют приложение при зависаниях.[7] Важно реализовать быстрый отклик или иллюзию прогресса (скелетоны, индикаторы загрузки, работа в фоне и пр.).[8]
Юзабилити — примерно 85 % пользователей работают с телефоном одной рукой,[7] поэтому часто используемые элементы управления рекомендуется размещать в зоне досягаемости большого пальца, а текстовые элементы — не менее 11 pt для нормального восприятия.[8] Для заголовков рекомендуется использовать San Francisco 17pt на iOS и Roboto 16sp на Android.[9] Контраст между текстом и фоном — не менее 4,5:1[8]. Рекомендуется реализовать доступность — голосовая навигация, поддержка экранных читалок, адаптивный UI.[9]
Патенты
Подано множество патентных заявок на новые функции мобильных приложений, в том числе в областях бизнес-процессов, управления базами данных, передачи данных и взаимодействия с пользователем.[10]
Примечания
- ↑ Introduction to Mobile Application Development (англ.). IBM.com. Дата обращения: 24 июня 2023. Архивировано 15 февраля 2023 года.
- ↑ Essential Aspects to Consider While Designing Mobile Apps (англ.). GlobalLogic (3 октября 2016). Дата обращения: 24 июня 2023. Архивировано 4 февраля 2023 года.
- ↑ What is a mobile app (mobile application)? – TechTarget Definition (англ.). WhatIs.com. Дата обращения: 24 июня 2023. Архивировано 8 октября 2025 года.
- ↑ Atkinson, Robert D. The App Economy in Europe: Leading Countries and Cities, 2017 (англ.). Progressive Policy Institute (октябрь 2017). Дата обращения: 3 октября 2024. Архивировано 19 февраля 2025 года.
- ↑ Launching Your App on Devices (англ.). Apple Developer. Дата обращения: 30 апреля 2016. Архивировано 12 ноября 2013 года.
- ↑ MobiOne Developer 1.0 M4: Create App Store-ready Mobile Web Applications, Experience True Device Behavior on Windows (англ.). PRWeb. Дата обращения: 31 мая 2021. Архивировано 8 октября 2009 года.
- ↑ 1 2 3 4 5 Apps Statistics, Usage & Downloads (2020 report) (англ.). SaaS Scout (formerly SoftwareFindr) (6 января 2020). Дата обращения: 20 февраля 2024. Архивировано 23 мая 2025 года.
- ↑ 1 2 3 4 5 6 7 15 Mobile App Design Best Practices (англ.). ThoughtSpot. Дата обращения: 20 февраля 2024. Архивировано 20 мая 2025 года.
- ↑ 1 2 3 4 Cordini, Marcelo The best mobile app design: Examples (англ.). Qubika (6 января 2021). Дата обращения: 20 февраля 2024. Архивировано 24 июня 2025 года.
- ↑ Nowotarski et al., "Increasing Allowance Rates by Selectively Targeting Patent Class" (англ.). IPwatchdog (6 апреля 2011). Дата обращения: 15 апреля 2024. Архивировано 30 ноября 2024 года.