Немного отвлечемся от софт-скилл тем, типа «как бороться с прокрастинацией», и поговорим о реальных делах. Сегодня – о технологиях и тонкостях разработки мобильных приложений. От менеджера менеджерам.
Сначала будет рассказ про историю смартфонов, если не интересно – мотай вниз.
Мобильное приложение
Мобильным приложением (раньше их называли «утилита») называется программа, работающая под управлением мобильной же операционной системы. Сейчас в мире, фактически, две «оси» – iOS и Android. Далее мы поговорим об технических деталях разработки, но сейчас предлагаю совершить небольшой экскурс в историю сабжа.
История мобильных приложений
Сейчас любое мобильное устройство = мобильник. Даже планшеты с недавних пор обзавелись слотом для сим-карты, и могут считаться фаблетами (большими смартфонами). Еще одна особенность текущего времени – почти не осталось «обычных» телефонов, сплошь и рядом одни смартфоны.
Первыми приложениями под мобильные устройства фактически были стандартные утилиты типа «калькулятора» – он был уже у Nokia 5110, выпущенном в 1998 году. Приложение в этом контексте – дополнительная функция к стандартным «позвонить» и «написать смс». В те темные времена все приложения были глубоко «нативными», и эффект «вау» вызывала классическая теперь «змейка», которая так же была приложением.
Но пока мы восхищались размерами Nokia 2100 и переключали цвета подсветки Sony Ericsson A3618, в мобильном мире происходило нечто грандиозное. Во-первых, существовал мир КПК, который тогда развивался совершенно независимо. КПК (карманный персональный компьютер) представлял собой лопату с экраном дюйма в три, где были стандартные сегодня бизнес-функции – календарь, калькулятор, записная книжка. Некоторые КПК обзавелись позже доступом к интернету и, как следствие, к целой куче расширений – можно было проверять электронную почту, находясь в пути!
Но пока развивались карманные компьютеры, в лабораториях ныне утративших влияние компаний, рождались Франкенштейны. Первым КПК с возможностью телефонных разговоров была Nokia 9000 Communicator, случилось это аж в 1996 году. Ах да: смартфоны еще лет десять будут называться «коммуникаторами».
Nokia в те времена была крайне навороченной компанией, имела высокий потенциал. При ее участии в 1998 году будет создана операционная система Symbian. Та самая, которая будет в первом твоем смартфоне. Та самая, которая задавит КПК-шный Palm OS (вместе с рынком КПК), и та, конкурировать с которой попробует Microsoft с ее Windows Mobile (операционки появились и умерли примерно в одно время).
Перед тем, как перейти к операционкам, хочу отдать дань памяти приложениям для «обычных» телефонов. Такие приложения были написаны на J2ME («ява»), весили до 100 килобайт и запускались на Series 40-совместимых устройствах. Например, Nokia 7210, 6610 и все не-смартфоны Sony Ericsson (разрешение экрана – от 128х128 до 320х240 пикселей). Приложения были крайне простыми, но они были.
Symbian (1998-2012)
Я плохо знаю историю развития КПК, потому возьмем точкой отчета 1998 год, когда начала разрабатываться ось Symbian и пропустим тему КПК. Коммуникатор (ака смартфон) имеет одно очень важное отличие от «простушки»: на таких телефонах стоит операционная система – по аналогии с тем, как работает обычный компьютер. Соответственно, появляется возможность писать программы у сторонних разработчиков. Это было способно сильно расширить функциональность устройств. А иногда и найти им другое применение – например, игровой смартфон Nokia N-Gage от той же Nokia.
Телефоны на Symbian были серьезными конкурентами КПК, потому их и вытеснили. При том, эти смартфоны обладали внушительными характеристиками. Сумасшедшие разрешения экрана (176х220 пикселей на старте), оперативная память, поддержка «флешек», доступ в интернет. Кажется, именно они стали первыми обладателями модулей Wi-Fi и 3G доступа в интернет. Можно было смотреть видео с ютуба, например.
Более-менее массовыми смартфоны стали в середине нулевых: когда появилась Nokia 6600, Nokia 6260. Далее модельный ряд разбавится совсем массовыми Nokia 7610, Nokia 6630 и смартфоны окажутся в руках у каждого третьего. Потом у Нокии появятся серии N с Symbian 9.3 (начнется это с N70, N72, бестселлера Nokia N73) и E (E70-E72). По мере развития этих последних нокиевских линеек, смартфоны окажутся в руках у каждого второго. Телефоны тогда были разными, а смартфонные функции привлекали только гиков, мало чего принося «обычным» пользователям. Зато производители отрывались, как могли: камерофон N93/N93i, двойные слайдеры N95/N86/N96, была даже модель с HDD (!) Nokia N91. Я не рассказываю про конкурентов Nokia, ибо на тот момент, их продукция была даже более гиковской. Вспомнить попытки Sony Ericsson, с серией P (P800, P900, P910, P990) и несколькими другими моделями на базе этой серии. Помню единственный смартфон Siemens – SX1, тоже на Symbian.
Windows Mobile (2000-2010)
Пока Nokia делала миллиарды денег со своими телефонами на Symbian, а Sony Ericsson и Siemens делали телефоны на Symbian для галочки, другие производители развлекались с другими «осями». Samsung пробовала построить отношения с Windows Mobile. До нашего рынка дошел только Samsung i900, других не помню. С Windows самсунг будет аж до 2014 года (давно выпуская телефоны на Android). Еще один крупный и заметный производитель, делающие дела с Windows – HTC. Что характерно, виндоус-телефоны HTC начала десятых годов успешно перешивались на Android в домашних условиях, а после сам производитель полностью перешел на эту операционку.
Сама Microsoft не вывозит с собственным Windows Mobile, в 2010 году перезапускает ось: теперь это Windows Phone. А в 2011 году покупает убитую андроидом и iOS «нокию», запуская линейку Lumia под управлением собственной операционной системы.
Про Windows Phone рассказывать не буду – это было относительно недавно, и все знают, что это закончилось фиаско. Лучше вернемся к причине этого фиаско – новой эпохе, эпохе противостояния Android и iOS.
iOS (2007 – …)
Как ни крути, а iOS имеет колоссальное значение для индустрии и истории в целом. Эта ось, так сказать, перевернула игру. А появилась она годом раньше Android – в 2007 году, с первым iPhone.
Первый «айфон» мы ждали года два, а слухи о его появлении были еще при выходе первых айпадов. Были тысячи рендеров, слухов и домыслов. Но вот то, что получили, никто не предвидел. Первый телефон представлял собой кирпич с большим на тот момент экраном (3.5 дюйма). И он ничего не умел. Например, в нем не было 3G, а камера айфона не умела писать видео – и это в 2007 году! Про метод ввода – единственный, наэкранный, тоже было немного лестных отзывов. Первый айфон критиковал даже Лебедев, ныне являющийся его фанатом.
Айфон показал всему миру, что сенсорным экраном можно пользоваться. Дальнейший вектор развития телефонов пошел следом за ним. Nokia сразу же отреагировала, выпустив легендарный Symbian-смартфон Nokia 5800. Это «нокию» не спасло, ну да и ладно.
iOS убьет бывшие на коне Symbian и Windows Mobile (Windows Phone в поздние годы). И похоронит ту самую Nokia, некогда бывшую крупнейшим производителем телефонов. То, что сейчас называется Nokia имеет мало чего общего с той «нокией», кроме названия.
С 2007 года Apple взял курс на выпуск одной значимой модели iPhone в год. Последняя модель вышла в сентябре 2018 и называется iPhone XS. Можно долго спорить о том, что «айфоны» всасывают конкурентам-флагманам на Android, но сейчас это носитель оси, с 12% рынка и вторым на нем месте (информация на январь 2019). Помимо iPhone, ось iOS используют планшеты того же Apple – iPad. Где-то слышал, что айфон появился, когда придумывали айпад.
Еще одно колоссальное вложение айфона в рынок – магазин приложений. Возможность доставки приложений «по воздуху» сильно повлияло на развитие рынка приложений. До Apple это же пыталась сделать Nokia (Ovi Store, помните такой?), но у нее мало что получилось, в связи с внешними обстоятельствами. Apple обманул один рынок («отправьте сообщение на номер, чтобы получить приложение»), чтобы создать другой – еще больший.
Android (2008 – …)
Прямым и основным конкурентом Apple во все времена была компания Microsoft. Она гораздо раньше запустила свою мобильную операционную систему, и потенциала, казалось бы, у нее больше, чем у всех других производителей, вместе взятых. Однако, на рынке смартфонов, конкурентом Apple стал Google – относительно молодая компания, появившаяся буквально 20 лет назад.
Здесь историческая ремарка: Android начали разрабатывать не под крылом Google. «Гугл» купил компанию Android в 2005, и фактически, ось была запущена гуглом. Первый значимый выпуск Android прошел в 2008 году.
На старте это была еще более гиковская операционка, чем Symbian в начале нулевых. Распространение ось получила в начале десятых, когда к ее распространению подключился вчерашний аутсайдер – компания Samsung. Сейчас сочетание «самсунга» и «андроида» настолько переплелось, что можно услышать вопрос типа «у тебя айфон или самсунг», или «мне нужна зарядка на самсунг» (интерфейс micro-USB распространился с андроидофонами самсунга, хотя еще в 2008 году он был на моем Nokia N82).
История повернулась так, что все производители (которые не Apple) перешли на сторону Android. Появилось много новых игроков на рынке – совсем новая компания Xiaomi или тот же Huawei, который, кажется, скоро спрыгнет с андроида, по внешним обстоятельствам. (Хуавей лет семь разрабатывает Harmony OS, и может быть, скоро будет третья «стандартная» мобильная ось.) Даже Blackberry, когда-то культивирующий собственную операционную систему (BlackBerry OS / BlackBerry 10), сейчас выпускается с Android на борту.
В связи с андроидом можно вспомнить кучу похожих операционок, которые не выстрелили (пока не выстрелили?). Это и ось Яндекса, и Chrome OS, и Maemo (разработан на том же Linux и выпускался Nokia в последние годы жизни (Nokia N900). Время покажет, можно ли перебить ось с 88% рынка. Нокию же когда-то сместили.
Как и в случае с iOS, набор устройств, где может использоваться Android колоссален. Это и телефоны, и часы, телевизоры, компьютеры, планшеты – все, куда можно встроить операционку.
Разработка приложений для смартфонов
Здесь откатываться к истории не имеет смысла, поговорим только об актуальных операционках – разработка под iOS и под Android. Увы, у меня нет опыта работы с приложениями под часы или телевизоры, потому здесь будет только про смартфоны и планшеты.
Нативная разработка приложений
Нативная разработка – когда приложение пишется под конкретную ось. Когда приложение под iOS и под Android – два самостоятельных проекта, пусть и объединенные одним API и бекендом (но это не обязательно).
Материал поверхностный – тот базис, который нужен менеджеру. То, что поможет в принятии решений, когда встанет вопрос разработки приложения.
Разработка под Android
Android – невероятно массовая операционная система. По некоторым данным, 88% современных смартфонов работают именно на ней. Прибавим сюда версии операционки для часов, для планшетов (та же, что на телефоне, на самом деле), для телевизоров. В прошлом году Google выпустил специальный форк оси для набирающего оборот мира IoT – Android Things.
Языки программирования
У операционки два официальных языка программирования: Java и, с недавнего времени, Kotlin (язык разрабатывается командой JetBrains). С 2019 года последний является приоритетным языком. Помимо этого, существуют несколько IDE и NDK, позволяющие программировать на C/C++/C#.
Инструменты разработки
Официальная среда разработки под Android – Android Studio. Работать с Android Studio можно как из-под macOS, так и из-под Windows. Чуть раньше была популярна IDE Eclipse, но почему-то давно о ней не слышу. Хотя последний релиз был вот, два месяца назад.
Что нужно помнить
Многообразие устройств под Android как его преимущество, так и главный минус. Во-первых, если производительность продукции Apple одинакова внутри одного семейства, с андроидами все иначе. То есть, есть какая-нибудь условная модель Xiaomi Black Shark с 8 гигабайтами оперативной памяти, и есть Samsung J1, оставшийся на уровне мобилок года 2014-го. Как результат – мы получим кучу негатива от пользователей по поводу тормозов приложения – «блек шарк» все же не у каждого. Протестировать на каждом возможном устройстве тоже не представляется физически возможным.
Второй нюанс, связанный с многообразием устройств – целый набор возможных разрешений экрана. В последние годы ситуация стала получше – стандарт = 1080×2280 пикселей, но вот раньше были вариации от 1280х720, до 1920х1080 и 2560х1440 пикселей. И все они были стандартными. Пока все радовались многообразию разрешений, адаптируя под них свои приложения, снегом на голову свалился инноватор LG G6 с экраном 18:9, и все офигели еще раз, когда это начало входить в моду. И еще раз, когда Apple ввел моду на «бровь» и радостные производители андроидофонов стали массово пилить экраны с соотношением 18.5:9 или даже 19:9.
Если разрабатываешь приложение для использование в корпоративной среде, панацеей может быть рекомендация конкретного устройства. Под него вы сделаете, под ним же протестируете. В противном случае, фиксы багов займут времени больше, чем написание самого приложения.
Публикация приложения в Play Store
Приложения под Android хранятся в огромной помойке под названием Play Store. Помойка она относительно конкурента от iOS – AppStore. Модерация приложений под Android проходит гораздо проще и быстрее, чем у конкурента. Для нас это, конечно же, плюс.
Размещение приложений в Play Store платное. Вернее, вы платите за аккаунт разработчика, в котором можете размещать некоторое количество приложений. Соответственно, нужно заранее выяснить, размещаете вы приложение в своем аккаунте, или в аккаунте клиента. В случае чего, приложение передается из аккаунта в аккаунт, но лучше сразу делать по-нормальному.
Приложение можно и не размещать в Play Store в принципе. Например, когда оно пишется для внутреннего, корпоративного использования, его можно распространять APK-файлом. Возможность установки приложения из файла сильно упрощает и тестирование приложений. Даже в случае кросс-платформенной разработки, этот момент здорово помогает.
Для публикации в Play Store нужно:
- Название приложения
- Краткое и полное описание
- Иконка приложения – 512 x 512 пикселей, 32-разрядный PNG без прозрачности
- Картинка для описания – 1024 x 500 пикселей
- Скриншоты приложения – минимум два (до 8), с длиной стороны не менее 320px
- Если есть планшетная версия – минимум один скриншот с минимум 7″ планшета
- Внешняя ссылка на политику конфиденциальности (и она сама, разумеется)
Это то, что стоит подготовить заранее. С остальными пунктами разберетесь на месте – они бывают частными, типа возрастных ограничений.
Разработка под iOS
Самая приятная особенность iOS – в узком наборе возможных устройств. Ежегодно актуальна одна-две модели айфона (сейчас это iPhone XS и XR) и примерно такое же количество айпадов. Еще есть приложения под iWatch (которых тоже пара моделей), но не сталкивался с разработкой под них – не такой массовый продукт.
Языки программирования
Нативные приложения под iOS в 2019 году пишут на Objective-C и Swift. Свифт, кажется, уже популярнее «обжектив-си». Оба языка поддерживаются напрямую Apple. В некоторых случаях используется C++, но не для интерфейса, а для алгоритмов.
Инструменты разработки
Основная среда разработки приложений под iOS – Xcode. Под ним же работает эмулятор устройств, отладчик и сборщик приложений. Xcode бесплатен и работает только в среде macOS – версии под Windows нет. Еще есть AppCode от JetBrains (разработчика языка Kotlin – основного андроидовского языка) – совместимая с Xcode среда разработки, за которую просят денег.
Что нужно помнить
Помнить нужно про публикацию в AppStore и начинать заблаговременно беспокоиться о качестве приложений. Даже если профакапить момент с App Store, точно вспомнишь о нем, когда придет время тестировать приложение. Приложение под iOS нельзя закинуть файлом на устройство – либо через консоль, на каждую единицу устройства, либо через программу Test Flight, работающую из-под App Store.
И даже тут, при тесте через тест-флайт потребуется пройти процедуру одобрения приложения (для внутреннего теста!) апстором. На этом этапе это занимает 2-3 дня, тогда как при выкатывании приложения в бой, проверка может занять до двух недель. И это еще не все: одобренное для тестирования приложение держится в Test Flight месяц, по истечении которого самоликвидируется.
Ну и да, сама модерация в App Store – отдельный аттракцион, способный вернуть в разработку приложение, которое писалось и тестировалось десятком человек. С другой стороны, именно по причине модерации, App Store меньшая помойка, чем Play Store.
Публикация приложения в AppStore
Аккаунт разработчика AppStore также платный, а находится по адресу applestoreconnect.apple.com. Причем, есть две версии аккаунтов – когда покупаешь аккаунт только на себя, либо покупаешь его на организацию. Разницу видел только в тестировании – модерация приложения для владельца аккаунта при единичном его хозяине, происходит чуточку быстрее. В детали различий особо не вдавался.
Для публикации в AppStore нужно:
- Название приложения
- Иконка, PNG, 1024 x 1024 пикселей
- Техническая информация (добавляется еще на моменте программирования): Bundle ID (адрес формата com.company.application – как обратный домен третьего уровня), Apple ID, SKU, категория приложения
- Описание приложения – текстом
- Сайт разработчика
- Скриншоты приложения. Со скриншотами сложнее, чем у Android – их делать придется под каждое устройство, для которого есть версия приложения
Модель устройства | Разрешение, в пикселях |
iPhone 3 + 4 (3,5 дюйма) | 640 х 960 |
iPhone 5, iPhone 5S, iPhone 5C (4 дюйма) | 640 х 1136 |
iPhone 6, iPhone 6S, iPhone 7, iPhone 8 (4,7 дюйма) | 750 х 1334 |
iPhone 6 Plus, iPhone 6S Plus, iPhone 7 Plus, iPhone 8 Plus (5,5 дюймов) | 1242 x 2208 |
iPhone X (5,8 дюйма) | 1125 x 2436 |
iPhone XR (6,1 дюйма) | 828 х 1792 |
iPhone XS (5,8 дюйма) | 1125 x 2436 |
iPhone XS Max (6,5 дюйма) | 1242 x 2688 |
iPad Mini 2, iPad Mini 3, iPad Mini 4 (7,9 дюйма) | 1536 x 2048 |
iPad 3, iPad 4, iPad Pro, iPad Air, iPad Air 2 (9,7 дюйма) | 1536 x 2048 |
iPad Pro (10,5 дюймов) | 1668 x 2224 |
iPad Pro (12,9 дюйма) | 2048 х 2732 |
Кросс-платформенная разработка
Кросс-платформенные приложения пишутся один раз, под обе платформы. Происходит компиляция кода под определенную ось, получаются файлы APK и IPA, которые заливаются в Play Store и AppStore соответственно.
Кросс-платформенная разработка идеальный вариант, когда нужно сделать проект под обе системы по цене одного. Это не значит, что разработка кросс-платформенного кода проще – это значит что фактически пишется одно приложение, а под другую ось делается самостоятельный порт.
Важное замечание в том, что дорабатывать приложения под «свои» операционки все-таки придется. Это касается стандартных интерфейсных вещей. И у Apple, и у Google есть свои стандарты UI, которые придется соблюдать. И если в случае с Play Store еще есть возможность протащить приложение со своим внешним видом, то Apple точно зарубит такой апплет и отправит на доработку. Это следует учитывать заранее.
Я сталкивался с двумя фреймворками, позволяющими делать кросс-платформенные приложения. Интересующимся другим – в статью Хабра, где говорят о вещах, разговор о которых я не поддержу.
Unity
Юнити – это даже не фреймворк, но целая платформа. Онапоявилась в 2005 году, в роли игрового движка. Существует немало инди-игр на основе юнити. Есть и коммерческие примеры – например, «Плохие свинки» (часть игры Angry Birds) или нашумевший три года назад Pokemon Go. Язык программирования Unity – C#.
Несмотря на основное употребление в качестве игрового движка, юнити неплохо применим при разработке мобильных приложений, с играми не связанными. По сути, в среде Unity можно создать все что угодно. Однако, в связи со сложностью поддержки, если есть возможность, рекомендую обратить внимание на следующий фреймворк.
React
React – JavaScript библиотека. А JavaScript – самый распространенный язык программирования, и это основной плюс «реакта». В нашем случае речь идет о разновидности React – React Native. Он был придуман специально для разработки мобильных приложений. Различия между «обычным» React и этим есть, но программист адаптируется быстрее, чем если его перебрасывать с React на тот же C#.
Кажется, React в противовес Unity, имеет меньше ограничений. Да и скомпилированные файлы весят намного меньше. Еще одна полезная вещь React Native в том, что в пределах одного приложения можно использовать и «обычный» React. Например, при ограниченных сроках и при задаче создать мобильный клиент сайта, часть страниц отлично перекрываются «онлайн» web-view версиями. Не смотря на изначальную веб-направленность языка, в финале мало кто поймет, на чем было написано приложение – сойдет за нативное.
Будущее разработки мобильных приложений
Человечество все сильнее интегрируется с вебом, и «нативные» приложения будут уходить туда глубже. Уже встречаются приложения, чье существование бессмысленно без интернета (любая соцсеть, или современная мобильная игра). Даже больше, есть целые операционные системы, не работающие без интернета – первой птичкой была Chrome OS.
Будущее за упрощением и за приложениями, работающим в браузерах. Первой птичкой здесь является технология Google Instant App – это приложения, запускающиеся на устройстве за секунды, без необходимости их установки. Эдакий AMP от мира апплетов.
Выйдет ли Instant App в массовый продакшн – покажет время. А пока что мы продолжим резать картинки для Play Store и вести недельные переписки с AppStore, не прекращая вносить изменения по их комментариям.