Разработка приложений для мобильных устройств

Разрабо́тка приложе́ний для моби́льных устро́йств — это процесс создания программного обеспечения для одного или нескольких мобильных устройств, включая персональный цифровой помощник (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++,

Kotlin

Встроенный в 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]

Примечания

  1. Introduction to Mobile Application Development (англ.). IBM.com. Дата обращения: 24 июня 2023. Архивировано 15 февраля 2023 года.
  2. Essential Aspects to Consider While Designing Mobile Apps (англ.). GlobalLogic (3 октября 2016). Дата обращения: 24 июня 2023. Архивировано 4 февраля 2023 года.
  3. What is a mobile app (mobile application)? – TechTarget Definition (англ.). WhatIs.com. Дата обращения: 24 июня 2023. Архивировано 8 октября 2025 года.
  4. Atkinson, Robert D. The App Economy in Europe: Leading Countries and Cities, 2017 (англ.). Progressive Policy Institute (октябрь 2017). Дата обращения: 3 октября 2024. Архивировано 19 февраля 2025 года.
  5. Launching Your App on Devices (англ.). Apple Developer. Дата обращения: 30 апреля 2016. Архивировано 12 ноября 2013 года.
  6. MobiOne Developer 1.0 M4: Create App Store-ready Mobile Web Applications, Experience True Device Behavior on Windows (англ.). PRWeb. Дата обращения: 31 мая 2021. Архивировано 8 октября 2009 года.
  7. 1 2 3 4 5 Apps Statistics, Usage & Downloads (2020 report) (англ.). SaaS Scout (formerly SoftwareFindr) (6 января 2020). Дата обращения: 20 февраля 2024. Архивировано 23 мая 2025 года.
  8. 1 2 3 4 5 6 7 15 Mobile App Design Best Practices (англ.). ThoughtSpot. Дата обращения: 20 февраля 2024. Архивировано 20 мая 2025 года.
  9. 1 2 3 4 Cordini, Marcelo The best mobile app design: Examples (англ.). Qubika (6 января 2021). Дата обращения: 20 февраля 2024. Архивировано 24 июня 2025 года.
  10. Nowotarski et al., "Increasing Allowance Rates by Selectively Targeting Patent Class" (англ.). IPwatchdog (6 апреля 2011). Дата обращения: 15 апреля 2024. Архивировано 30 ноября 2024 года.