Где в Москве можно за один день увидеть сразу нескольких людей, использующих iPhone X, когда с его старта продаж прошла какая-то неделя? На конференции о мобильной разработке.
В Петербурге Mobius проходит уже далеко не первый год, а вот в Москве мы провели эту конференцию впервые. Как всё выглядело по сравнению с предыдущим петербургским событием? Как на программе сказалось то, что успело произойти в прошедшие с тех пор полгода? И зачем на сцене понадобилась палитра художника? Все подробности — под катом.
На петербургском Mobius в последний раз целая треть аудитории оказалась из Москвы. Тогда-то и стало очевидно, что в столице тоже необходима такая конференция. Любопытно теперь сравнить с тем, каким оказалось распределение зрителей в самой столице: 54% — москвичи, 11% из Петербурга, 29% из других российских городов, 6% из-за рубежа.
Как можно помнить, на прошлом Mobius очень часто звучало слово «архитектура». А в этом случае оно зазвучало ещё до начала докладов. На стенде Avito с самого утра начали конкурс «Мамин архитектор», предложив участникам собирать «архитектуру из наклеек» и голосовать за понравившиеся чужие варианты. Увидеть в числе претендентов можно было, например, такое:
Кстати, Telegram-чат об Android-архитектуре, появившийся из-за доклада на предыдущем Mobius, тем временем живее всех живых. Как мы писали полгода назад, «За несколько месяцев чат разросся до 700 участников, чего никто не ожидал». А теперь их уже более 1400!
Ещё одним очень популярным словом на предыдущем Mobius стало «Kotlin», а через два месяца после этого Google заявил о поддержке языка в Android-разработке. С одной стороны, нам это льстит: получается, что наша конференция предвосхитила большие новости. С другой, тут крылась и сложность: обретя популярность, язык обзавёлся собственной американской конференцией KotlinConf, поэтому во время московского Mobius многие значимые Kotlin-спикеры ещё отходили от другого мероприятия и не были готовы ни в чём участвовать.
Но в итоге Mobius и не остался без Kotlin, и не звал освещать эту тему кого попало. Сергей Рябов пишет на этом языке уже три года, начав задолго до объявления от Google — и его доклад «Пишем Java-френдли Kotlin-код» оказался одним из наиболее высоко оцененных зрителями. «Почему библиотеки просто не писать на Kotlin? Они все тогда будут просто из коробки работать с Java, и не нужно будет поддерживать все эти обёртки. Но всё не так радужно, как в рекламных проспектах, всегда есть приписочка мелким шрифтом, есть острые грани на стыке Kotlin и Java, и сегодня мы о них поговорим...» — начал он, и полез вглубь package kotlin.jvm. К языку обращалась в своём докладе и Лиза Рэй, рассказывавшая про data binding.
А вот ещё один случай, когда что-то стало актуальным недавно, а у спикера Mobius уже есть большой опыт работы с этим. В то время как для широких кругов разработчиков Instant Apps долго были недоступны, компания Surf благодаря участию в Google Developers Agency Program получила доступ раньше других, и сделанное ей приложение магазина «Лабиринт» стало одним из 50, иконки которых гордо демонстрировали в кейноуте Google I/O 2017. Так что доклад Евгения Сатурова из Surf был не пересказом официальных материалов, а личным (и на данный момент редким) опытом.
И можно было услышать то, что в официальных материалах прямо не говорят: Google беспокоится, что технологией Instant Apps могут злоупотреблять для демонстрации заглушки «скачайте полное приложение». Поэтому на ревью там очень тщательно следят, чтобы каждое «мгновенное приложение» содержало в себе хотя бы один полный сценарий (то есть пользователь мог, не покидая пределов загружаемого 4-мегабайтного модуля, получить то, за чем пришёл).
По словам Евгения, при уже имеющемся «обычном» приложении создание Instant App — это на 90% рефакторинг, а не кодинг. Если у вас ранее не было разделения проекта на модули, то вот здесь оно потребуется, а дальше при одном проекте будут две разных сборки — «обычного» приложения и instant app.
Отчасти перекликающаяся с Instant Apps тема — универсальные ссылки: они тоже по-своему размывают грань между приложениями и вебом. С темой «Универсальные ссылки: дворец из подводных камней» выступал Константин Якушев (Badoo), и по его приветствую было видно, что название конкурса от Avito ушло «в народ»: «Я не iOS-разработчик, хотя и выступаю в iOS-треке. Я отлаживал универсальные ссылки в Badoo, координировал всех ребят, потому что я мамин архитектор».
Почему «дворец из подводных камней», в чём там сложности? Ну, понятно, там немало вариантов (при клике на десктопе должна открываться страница сайта, при клике на смартфоне с установленным приложением — нужная страница приложения, на смартфоне без него — магазин приложений или мобильный сайт), но где может возникнуть серьёзная техническая загвоздка? Как выяснилось, много где.
Один из озвученных примеров: сервис AppsFlyer, с помощью которого изначально пытались это реализовать, создавал ссылки только на своём домене. Понятно, что для компании масштаба Badoo это проблема («а вдруг он завтра поменяет правила или вообще закроется, мы не хотим привязываться к чужим адресам»). Вроде бы логичное решение — сделать свои ссылки и редиректить с них на AppsFlyer, тогда в случае чего можно просто отключить редирект. Но не тут-то было: оказывается, если пользователь не нажал сам на универсальную ссылку, а был на неё перенаправлен, то ссылка не открывает приложение.
На конференции нашлось место и настоящему хардкору. В iOS-секции Андрей Володин (Prisma AI) рассказывал об использовании GPU для вычислений — и подходил к этому очень тщательно, начав разговор о графике аж с Atari 2600 (1977), где было всего 128 байт оперативной памяти, так что графические элементы обрабатывались прямо по мере их поочерёдного вывода на экран. Перейдя от далёкого прошлого к вертексным шейдерам настоящего, он затем повёл разговор конкретно о специфике эппловского Metal: «Пройдёмся по API. В самом сердце класс MTLDevice, представляющий один GPU. Не относитесь к этому классу как к синглтону, хотя он и получается через глобальную функцию, потому что на iOS одна видеокарта, но на Mac тоже есть Metal, и вот там может быть больше одной».
Любопытно, что как раз к этому Mobius стало яснее, зачем в Apple изначально создали собственный Metal, а не просто использовали OpenGL: этой осенью в iPhone впервые был использован GPU, разработанный непосредственно в Apple.
Контрастом к этому хардкору стали два зрелищных выступления Йонатана Левина (KolGene). В первом, «A friend in need — a JS indeed», он на примере конкретной ситуации из его предыдущей работы в Gett (когда одну и ту же логику требовалось реализовать и на сервере, и в двух приложениях, и в вебе) говорил о логичном объединении такого кода с помощью JS. И хотя доклад был по делу, одновременно с этим присутствовало и шоу. За правильный подсчёт числа упоминаний Gett в докладе Йонатан пообещал футболку, а на моменте «GetTaxi переименовался в Gett, когда с его помощью стало возможно доставлять вещи, представьте себе Gett Beer» он прямо на сцене получил от трек-оунера пиво.
Но совсем масштабное шоу он развернул в заключительном кейноуте. В конце дня было бы сложно усваивать что-то хардкорное — зато, наоборот, здорово отвлечься от потока технической информации и посмотреть на что-то яркое. Поэтому рассказ о том, как обычный разработчик может запилить фичу своей мечты даже при скепсисе менеджера, превратился в костюмированное представление. Вызвав на сцену добровольцев, Йонатан раздал им роли (самого Йонатана сыграл Денис Неклюдов, известный многим в зале). Затем им выдали соответствующие атрибуты (например, «дизайнер» выглядел как художник) — и последовавшие сценки вызвали у многих зрителей восторг. Особенно колоритен был Звиад Кардава (также известный многим по «Android Dev Подкасту»), получивший плётку и активно ей пользовавшийся.
Все доклады не перескажешь, и пора подводить итог — что можно сказать о первом московском Mobius по сравнению с петербургским? С одной стороны, ощущалась преемственность. Примерно те же люди в программном комитете, тот же Йонатан на закрывающем кейноуте, а Android Dev Подкаст снова записал на конференции спецвыпуск — в общем, знакомый формат.
А с другой, хватало и нового. Разумеется, новыми были непосредственно доклады (тот же Йонатан, хоть и срывал аплодисменты не в первый раз, делал это уже с другим материалом), и в части случаев они содержали информацию, которой полгода назад ещё попросту не было. Были новые лица на сцене — например, та же Лиза Рэй приехала впервые и многим полюбилась. И, несмотря на то, что на петербургскую конференцию ранее приезжало много москвичей, тут было много новых лиц в зале: когда на открытии спрашивали, кто на Mobius впервые, поднятых рук оказалось впечатляющее количество.
Теперь осталось дождаться следующего петербургского Mobius и посмотреть, чем ответит Москве культурная столица.
Автор: Евгений Трифонов