что нужно знать для разработки мобильных приложений
Кто такой мобильный разработчик и как им стать
Рассказываем, как стартовать в мобильной разработке и почему без Мака у вас только один путь.
Мобильный разработчик — это программист, который пишет приложения для мобильных устройств. К ним относятся не только смартфоны и планшеты, но и умные часы, фитнес-трекеры, электронные читалки, GPS-навигаторы и все остальные штуки с экраном и клавиатурой, которые можно носить с собой.
Большинство носимых устройств работает под управлением Android или iOS. Поэтому мобильные разработчики пишут софт для этих операционных систем.
Фанат Free Software Foundation, использую Linux и недолюбливаю Windows. Пишу истории про кодинг и программы на Python. Влюблен в LISP, но пока что не умею на нем программировать.
Немного истории: предсказание Джобса и революция мобильной разработки
Мобильная разработка в нынешнем её понимании возникла в нулевых, после выхода Java Micro Edition и WAP — урезанной версии доступа в интернет. Люди хотели развлекаться в сети, проверять электронную почту, общаться в ICQ — делать всё то же самое, что и на обычных компьютерах, но со своих мобильных телефонов.
Специальная версия языка Java для устройств с ограниченными ресурсами — телефонов, КПК, плееров.
Разработчиков было мало, а под каждую модель телефона приходилось писать отдельную версию программы. Не существовало и удобной системы дистрибуции, хотя идею маркетплейса приложений Стив Джобс выдвинул ещё в 1983 году на международной конференции по дизайну в Аспене.
В выступлении «Будущее уже не то, что раньше» Джобс сравнил распространение программ с музыкальными магазинами: человек приходит, берёт бесплатно демку софта, а потом оплачивает полную версию. Причём всё это удалённо, через телефонную линию с помощью номера банковской карты. «Я пока не знаю, как мы это сделаем, но нам это определённо нужно», — закончил он описание будущего AppStore, который появился только через 25 лет.
Первое время рынок мобильной разработки развивался слабо, но Apple и Google постепенно изменили ситуацию:
В мобильной разработке произошла революция: появился спрос на приложения, система дистрибуции и удобные способы монетизации. Телефоны перестали быть просто звонилками — их новые функции надо было как-то использовать.
Перспективы мобильной разработки в цифрах
Мобильных разработчиков нужно всё больше. По данным международной системы аналитики Statcounter, в апреле 2020 года доля мобильного трафика составляла 57%, хотя еще в 2012 году не превышала 14%. Маркетплейсы тоже растут: в первом квартале 2020 года Google Play предлагал 2,5 млн приложений, AppStore — 1,8 млн (по данным Statista.com ).
Вероятно, всё это надолго. Уже появляются док-станции для смартфонов: ноутбук без процессора, превращающий смартфон в полноценный компьютер или компактный настольный девайс, к которому можно подключить смартфон, монитор и клавиатуру с мышью. Два таких проекта — Mirabook и NexDock — получили краудфандинговые инвестиции, а Samsung запустил свою линейку DEX Station.
Какие языки используют для мобильной разработки
Фронтенд — внешняя часть приложения, с которой взаимодействует пользователь. Как руль и педали в машине. Бэкенд — скрытая от пользователя часть приложения, которая обеспечивает всю работу. Как двигатель и ходовая часть.
Kotlin — язык программирования, основанны на Java, разработан в питерской компании Jetbrains.
Язык программирования, созданный Apple. Основная идея — преодолеть все недостатки Objective-C и сделать его максимально простым.
Основанный на Си язык программирования, используется в MacOS и iOS.
Сейчас Apple советует писать на Swift, а Google агитирует всех за Kotlin. Причина в том, что Swift появился в недрах Apple — он изначально создавался как базовый инструмент мобильной разработки, который закрывает все недостатки «старичка» Objective-C. А Kotlin, наоборот, приглянулся командам Android-разработчиков и сначала получил поддержку «снизу». Отвечая на их просьбы, Google в 2019 году назвал Kotlin языком № 1 для Android.
Как новичку выбрать платформу для мобильной разработки
Среда разработки для Android на базе Intellij Idea от Jetbrains. Включает эмулятор Android, языки программирования, компиляторы, инструменты для сборки приложения и создания интерфейсов.
Аналог Xcode от Jetbrains.
Среда разработки для iOS и других операционок от Apple. В ней можно писать и запускать код, собирать и тестировать приложения, создавать графические интерфейсы.
Вот базовый набор инструментов для старта в Android-разработке, который можно установить для Windows, Linux или MacOS:
Набор для старта в iOS-разработке:
Если нет Мака, но попробовать очень хочется, есть три простых варианта:
Где требуются мобильные программисты
Если коротко, то везде. Мобильные приложения делают для любых задач: календари, почта, заметки, игры, мобильный банкинг. Есть даже эмулятор баяна под iOS: щёлкаете по нарисованным на экране кнопкам — наслаждаетесь музыкой:)
Десктопные сервисы и программы тоже не отстают и запускают свои мобильные приложения. В маркетплейсах Google Play и AppStore, например, уже есть 1C Bitrix, Photoshop Lightroom и «Госуслуги». Но мало написать приложение — его нужно постоянно обновлять и поддерживать. Это огромная работа, для которой тоже требуются специалисты.
Но есть и особенно перспективные направления. Ниже — данные за 2019 год.
Игры. Огромная и прибыльная индустрия.
Образование и развлечения. Изучение языков, книги, музыка, путешествия, тренировки, обучающие курсы. Онлайн-образование все сильнее теснит офлайн — люди видят, что это удобно и эффективно. Только за 2019 год объём рынка интернет-обучения вырос на 60%. И это не однократный рост — тренд продолжится.
Банки и финансы. Все банки уже пришли в смартфоны. Например, в приложении «Точка-банка» можно открыть и закрыть счёт, а в мобильном Сбербанке — выпустить физическую или виртуальную карту. Даже «Система город», у которой много офлайн-точек для оплаты коммуналки, уже есть в мобильных.
Это интересная и сложная отрасль. Начинающему разработчику попасть в неё не всегда реально, но грамотным специалистам финтех рад.
Так что потребность в мобильной разработке с годами только растёт — это гигантский рынок с большими оборотами.
Сколько зарабатывает мобильный разработчик
Зарплатная вилка Android-разработчика по данным hh.ru на конец июня 2020 года:
Кроме языка программирования, требуется знание Git и специальных библиотек: RxJava, Dagger, Android Architecture Components.
Зарплатная вилка iOS-разработчиков по данным hh.ru на конец июня 2020 года:
Обычно в вакансиях требуют знание библиотеки RxSwift.
Как стать мобильным разработчиком за семь шагов
Вот дорожная карта: на входе — новичок, на выходе — деньги, слава и крутые задачи.
Конечно, всему этому можно учиться самостоятельно — по книгам, видео и мануалам. Но это трудный и долгий путь, особенно для новичков в программировании. Гораздо эффективнее стартовать с опытными наставниками и постоянной обратной связью.
На курсе «Мобильный разработчик» от Skillbox студенты создают полноценные проекты в атмосфере реальной студии, изучают весь необходимый набор технологий и общаются с менторами. Первые полгода можно учиться бесплатно, а деньги за курс отдавать уже с первой зарплаты.
📱 10 важных навыков разработчика приложений для Android
Denver 83
Создание приложений для Android требует глубокого понимания программирования и дизайна. Если у вас уже есть опыт разработки, многие изучаемые технологии будут вам знакомы, хотя создание софта для мобильных устройств требует владения более тонкими концепциями. Смартфоны и планшеты имеют меньшие экраны и более слабые по сравнению с настольными машинами процессоры, а в случае с Android не стоит забывать и о сегментации платформы. Миллионы устройств различных производителей работают под управлением разных (зачастую устаревших) фирменных реализаций операционной системы, что приводит к необходимости писать гибкий код и учитывать различные сценарии работы с пользовательским интерфейсом.
1. Java и Kotlin
Java – объектно-ориентированный язык программирования, лежащий в основе всей разработки под Android. Он имеет обширную экосистему с открытым исходным кодом, включающую все необходимые инструменты, и обеспечивает более понятный процесс сборки приложений, иногда в ущерб времени.
Kotlin – передовой язык программирования, обеспечивающий повышенную производительность, интуитивный и последовательный синтаксис, а также высокую скорость кодирования. Он статически типизирован и полностью совместим с Java. Как и в случае с Java, все необходимые программисту инструменты распространяются с открытыми исходными текстами. Оба языка используются для создания мобильных приложений под Android, так что изучив один из них, вы получите прочный фундамент.
2. XML
Одним из распространенных форматов хранения и передачи данных является xml. Это похожий на HTML структурированный язык разметки с угловыми скобками и глубокой вложенностью элементов. В мире Android разработчики используют XML для создания макетов, определяющих пользовательский интерфейс приложений. С его помощью можно изменять элементы макета, когда приложение уже запущено. Знание XML поможет вам в освоении разработки для Android.
3. Android SDK
Одним из ключевых компонентов Android SDK является библиотека Gradle. Допустим, вы хотите интегрировать в приложение платформу социальных сетей (например, Facebook). Вы должны загрузить библиотеку кода (или SDK) из Facebook, а затем сообщить Gradle об этом. Среднее мобильное приложение для Android использует около 15 отдельных SDK. Самыми популярными их категориями являются аналитика и реклама.
4. Android Studio
Android Studio – интегрированная среда разработки (IDE) от Google. Она построена на хорошо зарекомендовавшей себя IntelliJ IDE и поставляется с поддержкой наиболее распространенных SDK. В IDE есть стандартные функции: автодополнение по мере ввода кода, отладчик для поиска ошибок, а также мониторинг памяти и ЦП для контроля производительности. В Android Studio можно создавать приложения для телефонов, планшетов, Android Wear, Android TV и Android Auto. Модули структурированного кода позволяют разделить проект на функциональные блоки. Эта IDE подходит как начинающим, так и опытным разработчикам.
5. API
Обычно приложение для Android должно взаимодействовать с различными сервисами и сторонними платформами. Многие компании предлагают API (Application Programming Interface) для доступа к данным последовательным и безопасным способом. В частности Google с их помощью упрощает использование функций устройства и собственных сервисов из сторонних приложений. Например, вы можете отслеживать местоположение пользователей, помогать им искать определенные локации на карте и т.д.
6. Базы данных
Если приложение обрабатывает большие объемы информации, вам необходимо будет взаимодействовать с внешними базами данных. Firebase, Parse и другие подобные сервисы имеют простые API для хранения данных в облаке и обеспечения их доступности на всех устройствах. Эти платформы предоставляют библиотеки Java для упрощения кэширования некоторых данных на устройстве пользователя.
Синхронизация данных между локальным хранилищем и удаленной базой очень важна, если вы хотите разрешить использование автономного режима. Для создания локальной базы данных лучше всего взять Room, которая является частью архитектурного компонента Android Jetpack. Другой способ локального хранения данных – SQLite.
7. Material Design
8. Тестирование
Тестирование конечного продукта – важный этап разработки. Вы должны проверить все точки взаимодействия пользователя с приложением. Наиболее часто используемые библиотеки для тестирования: Expresso, Junit, Mockito, Robolectric и UI Automator. Все они предоставляют разработчикам набор API для создания надежных тестов, имитирующих взаимодействие пользователя с приложением для Android.
9. Безопасность
В Android ограничены возможности WebView (элемента для отображения веб-страницы), чтобы избежать проблем вроде межсайтового скриптинга. Тем не менее вам нужно свести к минимуму частоту запроса учетных данных пользователя, создав регулярно обновляемый токен авторизации.
10. Не техникой единой
Опытный разработчик приложений для Android должен обладать не только отличным знанием программирования и дизайна, но и некоторыми не техническими навыками:
Создавая продукт, необходимо учитывать его полезность для конечного потребителя. Прежде чем приступить к разработке мобильного приложения, подумайте, кто будет его использовать, и какую проблему оно решит. Затем создайте модель и покажите ее людям из целевой аудитории. Получите их отзывы об идее и по возможности учтите их пожелания. Не бойтесь обратной связи при создании своих первых проектов. Удачи!
Разработка мобильных приложений: с чего начать
В нашей работе мы проходим все стадии жизненного цикла создания мобильного приложения, и я бы хотел поделиться нашим опытом в этой сфере. Под катом — рассказ об основах мобильной разработки: от выбора платформы до создания, размещения в магазине и последующего мониторинга.
Тенденции
Чем пользуются владельцы мобильных телефонов?
Статистика
За 2012 год в РФ продано порядка 12,6 миллионов смартфонов: Россия считается одной из быстроразвивающихся в этом плане стран.
Если взглянуть на такой же график по всему миру, то увидим, что и тут Android в авангарде с ¾ рынка.
За второй квартал 2012 года по всему миру было продано 104 миллиона телефонов Android — как население довольно крупной страны. Но нас как мобильных разработчиков интересует не только наличие смартфона, но и то, как с ним работают. Существенная доля обладателей устройств на Android пользуется ими как обычными телефонами: SMS, звонки — и все. Они не активируют устройство в Google Play, не скачивают приложения.
Не все люди обзавелись телефонами в 2012 году, поэтому реальное распределение сил среди мобильных операционных систем демонстрирует наша внутренняя статистика. В эту статистику входят Россия и страны СНГ: Украина, Белоруссия, Казахстан, Узбекистан.
Установка приложений
При выборе платформы, под которую будет разрабатываться приложение, важно знать статистику по уже существующим приложениям. Графики исследовательской компании App Annie от сентября 2012 года показывают, как растут два конкурирующих магазина Apple и Google.
По количеству скачиваний на первом месте Google Play: больше устройств, больше скачиваний, больше трафика и рост при этом +66% по сравнению с январем 2012 года. Рост iOS оказался в два раза меньше, порядка 30%. Но главный график – какую выручку приносят пользователи. И здесь ситуация в корне иная. Проще зарабатывать на iOS, но деньги есть и в Google Play, если уметь их забирать.
Типы мобильных приложений
На практике можно разделить приложения для мобильных устройств на три типа.
Мобильные сайты, веб-приложения
Это самый распространенный тип приложений для мобильных устройств. Современные смартфоны в состоянии отобразить обычный сайт. Им доступно все то, что мы привыкли видеть в десктопных приложениях — поддержка HTML5 делает свое дело. Помните, что веб-приложения отлично подходят для стартапа: именно они позволяют получить большой результат за маленькие деньги и за небольшой срок. Еще один плюс мобильного сайта по сравнению с другими мобильными приложениями – это кроссплатформенность. Однако есть и минус, притом весомый: с ними достаточно сложно заработать.
При таком подходе вы получаете доступ ко всем плюсам API операционной системы: приложение обрастает push-уведомлениями и другими приятными плюшками, кроме того, теперь ваш продукт можно размещать в сторах. При этом основной контент все еще представляет собой платформонезависимую страничку с версткой, размещенную на сервере. Это позволяет вносить косметические изменения в продукт без выпуска новой версии: достаточно залить изменения на сервер. Гибридные приложения – отличное решение для тех, кто начинает бизнес или хочет проверить свою идею, показать ее инвестору, друзьям.
Этот вид приложений самый ресурсоемкий, но вместе с этим он позволяет по максимуму использовать возможности, предлагаемые каждой конкретной операционной системой. Как следствие, нативные приложения выигрывают как по функционалу, так и по скорости работы у других типов мобильных приложений. Именно к такому подходу сейчас приходят те компании, которые делали комбинированные приложения. Например, Facebook начинала с комбинированного приложения: нативные контролы (переключатели, вкладки и так далее) и веб-страница в качестве контента. Несмотря на то, что это неплохое решение, проблемы с производительностью приводят к тому, что разработчики отходят от комбинации с вебом.
Статистика
Приведу статистику скачиваний на примере наших мессенджеров.
Во-первых, у нас есть приложение ICQ, которое постоянно развивается: среди последних изменений стоит отметить аудиозвонки. Второй мессенджер Mail.Ru Group – Агент. В Агенте реализован примерно тот же функционал, и, хотя у него была немного другая история развития, мы выпускаем версии практически под все платформы и его можно найти в любом сторе.
Основная разница между двумя этими приложениями – это их аудитория. ICQ – это международный продукт. Программа скачивается не только в России, им активно пользуются жители Европы, Латинской Америки. Агент же изначально делался в России и для русскоязычных пользователей.
Тем интереснее сравнить статистику скачиваний из магазинов.
Большая часть 62% иностранной аудитории идет в Google Play. Примерно 1/5 идет в AppStore, 14% — в Ovi Store. И уже оставшиеся 5% делят магазины для платформ Windows Phone (4%) и Samsung Bada (1%). С Агентом ситуация в корне другая: доли Google Play и Ovi примерно одинаковые. Ну а 10% AppStore наглядно демонстрируют любовь к «яблочной» продукции в нашей стране.
Процесс создания мобильного приложения
Итак, перейдем к самому вкусному: процессу разработки мобильного приложения.
Прежде всего, необходимо определить, что и для кого мы пишем. Ответы на эти вопросы оформляются в User Story. На картинке вы можете посмотреть на реальный тикет в нашем трекере. Он описывает, как существующий пользователь ICQ может войти в приложение, и какие проблемы он может встретить. На этом этапе важно проработать все возможные сценарии, чтобы не было неприятных сюрпризов на более поздних этапах разработки.
Важно понимать, что за каждым пунктом в вашем to-do листе скрывается огромный айсберг функционала. Старайтесь фрагментировать и конкретизировать задачи. Крупные хотелки лучше всего разделить на несколько этапов (релизов в стор). Однако это тема отдельной дискусии, вернемся к этапам создания приложения.
Проектирование и дизайн
После составления User Story начинается проектирование и разработка дизайна.
На этом этапе мы используем прототипы, которые мы вешаем на доску и стрелочками показываем, как будет происходит навигация.
При разработке дизайна обязательно используются гайдлайны.
Гайдлайн в общем понимании – это документ, который выпускает компания, и по которому дизайнеры и разработчики понимают принцип построения взаимодействия приложения с пользователем. Условно говоря, для iOS кнопки надо делать круглыми, а для Windows Phone – квадратными. Однако мы используем и внутренние гайдлайны для разработчиков. Таким образом результат работы дизайнера чаще всего состоит из макетов, гайдлайнов и нарезки графики.
Макеты лучше всего подавать «перелинкованными», например с помощью ProtoTypr, чтобы была понятна логика переходов. Гайдлайны содержат в себе информацию об отступах, размерах, визуальных эффектах, механике анимации и пр. Этот этап можно пропустить, если в вашем проекте один дизайнер и один разработчик, сидящие рядом друг с другом. Третья часть результата — нарезка графики — должна содержать минимум необходимых графических ресурсов (заботимся о весе приложения), иметь версии для разных разрешений экранов. Чаще всего мы рисуем для ретины и xhdpi-экранов. Далее идет подготовка для неретины и mdpi автоматизированными средствами (если допустимо их использование). Чаще всего руками приходится готовить hdpi-ресурсы.
Передача в разработку. Обсуждение и необходимые правки описания
После получения макетов, гайдлайна и нарезки, начинается работа разработчика. Мы передаем в разработку все то, что придумали, и ожидаем ранний результат. Это не значит, что работа над архитектурой и пользовательским интерфейсом закончена. Иногда у разработчиков появляются интересные идеи, которые вносят коррективы в изначальный план. Когда разработка завершена, наступает стадия тестирования.
Существует немалое количество способов протестировать приложение.
В мобильной разработке тестировщик – это человек, вокруг которого одни телефоны. У нас есть огромный шкаф, в котором лежат как старые телефоны, так и самые свежие новинки. Внутри мы стараемся тестировать по тест-кейсам. Если внедряется новая фича, по ее описанию составляется тест-план.
Существуют сервисы, помогающие в тестировании. Мы используем HockeyApp – приложение, позволяющее раздавать наш продукт бета-тестерам. Мы пишем в социальных сетях: «Ребята, у нас новое крутое приложение. Кто хочет попробовать?» Желающие получают билд, пользуются приложением, а сервис собирает статистику, составляет креш-репорт и отправляет все это нам.
Также есть сервисы, позволяющие протестировать приложение на разных операционных системах — например, все Android-прошивки версии 2.1 или 2.3. Вы отдаете приложение, сервис скриншотит весь путь, который вы задали, присылает картинки вам на почту, и вы проверяете, все ли в порядке.
Итак, вы разработали, протестировали приложение, залили его в стор. Для отслеживания статистики скачиваний можно использовать сервис Distimo. Он показывает статистику по пользователям, которые приходят в стор, чтобы скачать приложения, и агрегирует комментарии.
Важно понимать, что люди более склонны оставлять негативные комментарии. Если у человека все хорошо, он чаще всего просто пользуется приложением, не комментируя. При стабильной работе наших приложений мы получаем 40-50 комментариев ежедневно. В день ошибки количество записей может доходить до 400 на одной платформе. Поэтому имейте в виду, что комментарии – это не полная оценка вашей работы, скорее еще один баг-трекер.
Изменить ситуацию может довольно распространенных «хак» — окно Rate Us. С предложением оставить положительный комментарий в сторе, а в случае проблем написать разработчику. Эффект достаточно сильный, главное — правильно продумать алгоритм показывания диалога юзеру.
Помимо комментариев Distimo показывает количество скачиваний, заработанные деньги, а также откуда скачивают ваши приложения.
Еще один интересный мониторинговый сервис – Flurry. Он помогает собирать клиентскую статистику. Flurry предоставляет отчет о том, что делает пользователь в вашем приложении: сколько раз он нажал на кнопку, сколько раз возвращался в приложение и более общие параметры — аудитория, география, пол, возраст и пр.
В некоторых мобильных продуктах мы также используем подсчет клиентской статистики с помощью Google Analytics. Разницы при сравнении с Flurry нет практически никакой. Минусы в скорости работы и обработки логов есть в обоих случаях, однако, если вы привыкли работать с гугловским интерфейсом, можете использовать этот инструмент.
Несмотря на большое количество сторонних сервисов, у нас есть собственная статистика. Какими бы хорошими не были внешние источники, их нужно проверять. Мы способны сами оценивать статистику, но для этого необходимо строить инфраструктуру для генерации отчетов, еженедельной отправки отчетов по email и других вещей, упрощающих жизнь. Поэтому нам проще использовать такие сервисы, как Flurry и Distimo, а к внутренним логам обращаться при возникновении вопросов. Наша практика показывает, что такой подход оправдан: периодически наши данные и данные сервисов несколько разнятся. Если вы склонны проверять статистику, используйте разные источники.
Специфика
Заключение
Я постарался рассказать вам о базовых особенностях и подводных камнях мобильной разработки, которые встречались нам на нашем пути. Надеюсь, пост оказалась вам полезным. Если у вас остались вопросы по теме, или вы знаете что-то, что может быть полезно нам, давайте обсудим это в комментариях.