Совсем скоро пройдёт очередной Mobius (13-16 апреля, онлайн). И теперь, когда известна его программа, пришло время рассказать Хабру, что за доклады там представят. У конференции будет четыре параллельных трека:  Порой сложно нащупать грань между разными категориями: в iOS-треке есть пара докладов, которые тоже рассматривают Kotlin Multiplatform, но конкретно с iOS-стороны. Поэтому учтите, что где-то деление оказывается условным. А теперь, с этим осознанием, можно погружаться. Многих непосвящённых Metal пугает, но этот доклад поможет перестать бояться: позволит освоиться, начав с самых основ. Мы узнаем, что это такое, из чего состоит, как с этим работать — и почему это несложно. Будут затронуты следующие темы: сам Metal (рендер и вычисления), MetalKit, Metal Performance Shaders, базовые инструменты для профилирования и отладки. Чем хороша тема: Докладов и в целом информации про Metal очень мало, а на русском её вообще практически нет. Чем хорош спикер: Георгий работает в компании, которая делает самый известный на рынке инструмент для художников/иллюстраторов на iOS — Procreate. Экспертиза этой компании и лично Георгия в работе с GPU очень высока.  После объяснения основ Metal в предыдущем докладе Георгий перейдёт к более продвинутым вещам. Этот доклад рассказывает о методах профилирования и оптимизации графики на Metal, возможных слабых местах и их преодолении, оптимизации подготовки данных, отрисовки и шейдеров, использование compute-шейдеров и их оптимизации. Чем хороша тема: Как только начинаешь работать с Metal, быстро понимаешь, что это не «серебряная пуля», которая всегда работает быстро. Встают вопросы, как ускорить его работу, какие оптимизации применить как на уровне работы с API, так и на уровне шейдеров. Это актуальная тема для всех, кто использует Metal в своих приложениях. Кому будет полезно: Всем, кто хочет перейти на Metal с OpenGL или с CoreGraphics, или просто хочет начать работать с Metal: любой быстро столкнётся с тем, что его код надо будет оптимизировать. Каким бы многофункциональным ни было ваше приложение, оно не должно быть слишком большим. А современные банковские приложения очень многофункциональные — поэтому кому рассказывать о снижении размера, как не крупному банку. Дениз на примере работы над приложением Сбербанк Онлайн расскажет: Чем хорош спикер: Дениз является ключевым инженером в Core-команде основного приложения Сбера.  Чем хороша тема: Сейчас всё чаще создают супераппы, поэтому вопрос удержания размеров приложения на адекватном уровне становится значимее. И даже небольшим стартапам есть смысл думать об этом: никогда не знаешь, может, твой стартап станет частью огромной экосистемы. История о том, как в iOS-приложении Delivery Club переписали сетевой слой. Предпосылки совершенно банальные и до боли знакомы каждому: старое, покрытое пылью легаси, баги с разлогинами, код, запутанный похлеще, чем у Да Винчи. Решение элегантное — новый сетевой слой, адаптер для старого протокола, фасад для выбора на основе feature toggle, постепенная раскатка через Firebase, мониторинг нефатальных ошибок. В итоге, без единого изменения на уровне сервисов, все запросы ходят в сеть по-новому. Изюминку этому рассказу придаёт тот факт, что автор нового сетевого слоя ушел из команды еще до того, как его раскатали на пользователей. Казалось бы, новый сетевой слой, не успев проявить себя, сразу превратится в легаси? Но нет, он действительно оказался качественно продуман, спроектирован и реализован. Близится год со дня, когда Apple презентовала виджеты на WWDC 2020, но по-прежнему далеко не все умеют с ними работать. Пора это исправить. Цель доклада — показать, насколько WidgetKit простой фреймворк, и как быстро можно создать виджет с нуля. Также Александр расскажет об основных шагах, которые нужно проделать для создания виджета и о способах его конфигурации. Это не сложный доклад, под капот виджетов лезть не станем, но мы разберем все необходимое для их создания.  Чем хорош спикер: Реализовал виджет в своём приложении, поэтому знает о некоторых подводных камнях, с которыми поделится. Чем хороша тема: Виджетов пока мало — меньше, чем стоило бы. Это стоит исправить. Apple закрывает доступ к AdvertisementID. Все сервисы трекинга во главе с Facebook воют, что все пропало и так жить нельзя. Вероятность того, что пользователь согласится дать доступ к идентификаторам, очень низка. Однако вместо этого Apple выдала нам возможность проследить установку приложения без всякой эвристики. Теперь мы можем использовать deeplink не только в установленном приложении, но и с учётом его установки на устройство. Чем хорош спикер: Дмитрий подробно изучил, каким образом считается эффективность рекламных кампаний с использованием IDFA, и предлагает способ получать необходимые данные для этого без использования IDFA, а также сторонних фреймворков.  Чем хороша тема: В марте с релизом iOS 14.5 Apple отключила доступ к IDFA без разрешения пользователя, поэтому вопрос «как измерять эффективность рекламы своих приложений без этого доступа» актуален для многих. По очевидным причинам тулинг и технологии вокруг Kotlin Multiplatform несколько отставали на платформах от Apple. Все-таки Kotlin — полноправный гражданин в Android-разработке, но не в iOS-мире. Айдар (JetBrains) расскажет, что делается, чтобы это исправить. Вы узнаете про Kotlin/Native-плагин для AppCode: для чего он был создан и что умеет на данный момент. Спикер покажет свежие разработки в области Kotlin Multiplatform, которые ещё толком не оформились в конечные продукты, и расскажет, как они работают изнутри. Чем хорош спикер: Можно будет узнать о деталях работы нового плагина для AppCode от спикера, который непосредственно разрабатывал это решение. Чем хороша тема: Детали работы IDE и нюансы компиляции под капотом — интригующая тема, интересно узнать о том, как работают инструменты, которыми пользуешься. Доклад об использовании библиотек, написанных на Kotlin Multiplatform (далее KMM), с точки зрения iOS-разработки. Разработку и поддержку каких бизнес-процессов можно оптимизировать с помощью KMM-библиотек? Какую эволюцию KMM-библиотеки прошли в компании спикера? Как там работают с элементами UIKit в связке с KMM? Чем хорош спикер: В приложении ДомКлик уже давно применяют KMM, и Степан готов рассказать про наработки, полученные при использовании этой технологии. Чем хороша тема: KMM растёт и развивается, всё больше людей используют технологию, и у них возникают проблемы, которые пока не освещены на конференциях. В эпоху самоизоляции мы все постоянно используем видеосвязь, и даже конференции освоили онлайн-формат. Одна из технологий, которая делает всё это возможным, называется lip sync — «губосинхронизация». Она нужна, чтобы звук не убегал от картинки, а картинка от звука. Из данного доклада вы узнаете о теоретических основах A/V-синхронизации, а также о том, как это реализовано в Android. Чем хорош спикер: Федор лично работал над синхронизацией видео и звука для «созвонов» в настольном видео-телефоне (название приложения под NDA) Чем хороша тема: Решение задачи по синхронизации видео и звука и раньше было полезно, а теперь стало ещё актуальнее. Как форкнуть проект и вернуть его обратно? Как разрабатывать одинаковые фичи под два разных бэкенда? Как сменить приложение в рантайме, да еще чтоб пользователь не заметил? Ответы на эти вопросы — в докладе Александра Агейченко. Его команда уже наступила на все нужные грабли, вам не нужно повторять то же самое — приходите на доклад учиться на чужих ошибках. Чем хорош спикер: Спикер является тимлидом описанного в докладе проекта и непосредственным участником событий. Чем хороша тема: Задумывались ли вы когда-либо о том, чтобы переписать приложение с нуля? Александр расскажет интересный кейс, как они попытались это сделать и через какие испытания они прошли на этом пути: проблемы одновременной поддержки двух приложений и разработки фич для двух кодовых баз, сложности с git, раскол и конфликты в команде. Не допускайте подобных ошибок — ведь они уже совершили их за вас. Доклад про погружение в мир оптимизации Gradle-билдов на нескольких уровнях: Чем хорош спикер: У Сергея большой практический опыт работы с Gradle, и он очень заинтересован в донесении темы до людей. Чем хороша тема: Проблемы с Gradle актуальны всегда, но очень много разработчиков не обладают достаточной квалификацией для их решения. Знакомый многим Android-разработчикам Денис Неклюдов в ходе воркшопа наглядно покажет, как добавить в приложение библиотеку CameraX для работы с камерами устройства, которая не только умеет делать фото и снимать видео, но также распознает лица, мимику, тексты на фото, а самое главное — скелет человека и его позы. Вам понадобится стабильно работающее окружение для Android-разработки и возможность клонировать публичный GitHub репозиторий. Чем хорош спикер: Google Developer Expert по Android, Pay и IoT.
Внес лепту в мобильные приложения нескольких стартапов в России, Азии и Европе, сейчас работает в Lyft в солнечной Калифорнии.
Денис внедряет CameraX и Camera2 в одном из проектов Lyft Чем хороша тема: Возможности работы с CameraX и Camera2 в Android-разработки почти не раскрыты, но API используются во многих проектах Денис расскажет, как приложение делится на модули и как внедряется DI в получившемся многомодульном приложении. Покажет несколько фишек с использованием Dagger 2. Доклад предполагает, что аудитория что-то знает про Dagger 2, но будет полезен и тем, кто его лично не использует. Подход позволяет его не использовать или использовать только частично (а также постепенно переходить на Dagger 2 или постепенно от него отказываться). Чем хорош спикер: У спикера 10 лет опыта Android-разработки. Чем хороша тема: Денис рассказывает интересный кейс использования Dagger 2 в многомодульном проекте. Есть интересные технические решения, которые могут натолкнуть на нестандартные подходы к применению Dagger 2. Александр Крылов и Севастьян Жуков хотят рассказать про запуск и поддержку UI-тестирования Android-проекта. Вы увидите несколько этапов эволюции инфраструктуры от прогонов на одной машине до полноценного impact-анализа и фермы в K8s и узнаете, почему были внедрены те или иные решения и почему впоследствии от них отказались. Чем хорош спикер: Последние годы спикеры работают в infrastructure team и непосредственно занимаются настройкой Gradle, CI/CD, разработкой и поддержкой инфраструктуры. Александр возглавляет эту команду. Чем хороша тема: Рассказывают весь путь совершенствования CI/CD инфраструктуры в компании: и почему были внедрены те или иные решения, и почему впоследствии от них отказались. Корутины все чаще используются в Android-проектах, но вот тема их отмены недостаточно раскрыта. Павел Ильичёв исправит это своим докладом: он расскажет в каких случаях может потребоваться отменить рабочую корутину вручную, как это сделать правильно, а также как отловить сам момент отмены. Если вы уже пользуетесь корутинами или хотите начать, вам пригодится этот доклад. Чем хорош спикер: У Павла наработан большой опыт эффективной работы с корутинами в различных задачах. Чем хороша тема: Чем дальше, тем чаще в Android-разработке можно встретить корутины — так что даже если вы не сталкиваетесь с вопросом их отмены сегодня, можете столкнуться завтра.  Оптимизация сборки — вишенка на торте мобильного приложения. К счастью, существуют инструменты, проверенные временем и заслужившие доверие сообщества. К сожалению, оптимизацию не всегда воспринимают всерьез и не уделяют ей должного внимания.
Дружно вместе: Чем хорош спикер: Плотно работал с ProGuard, R8, D8 и написал большую статью о них.  Чем хороша тема: Каждый Android-разработчик знает о ProGuard, R8, D8. Но вот практической информации о том, как лучше работать с ними, в сети мало. Хотите посмотреть на развитие Kotlin со стороны команды Kotlin-компилятора? Ильмир Усманов на примере корутин и инлайн-классов расскажет, как специалисты из JetBrains решают, какие языковые фичи брать в разработку, как меняется их видение в процессе обкатки, когда фичу стоит делать стабильной и как развивать её дальше. Чем хорош спикер: Спикер работает в Kotlin Language Research Team и непосредственно отвечает за разработку корутин и инлайн классов. Чем хороша тема: Возможность глубже взглянуть на устройство языковых фич и понять, с какими трудностями сталкиваются разработчики языка и как это влияет на его развитие. Анна Жаркова расскажет, как организовать работу с DI в приложении на Kotlin Multiplatform: Чем хорош спикер: Анна применяет KMM в своей работе на текущей проекте, выработала решение проблемы общего DI для приложений на KMM, и ей есть что рассказать на эту тему. Чем хороша тема: Про KMM уже были доклады (в том числе и на Mobius), но это первый Advanced-доклад, рассказывающий про построение DI на уровне мультиплатформенного кода. Flutter for Mobile в релизе, Flutter for Web в бете, Flutter for Desktop (MacOS, Linux и Windows) в альфе — круто, что Flutter официально поддерживает целых шесть платформ. Но что, если мы хотим запустить свое приложение на телевизоре? К сожалению, о Flutter for TV ничего не слышно, кроме чего-то подобного: «Since no official support is there yet, presumably you'll be on your own if you try». В проекте, над которым Александр сейчас работает, поддерживаются Android TV и Apple TV. Да, приложение Flutter можно запустить на ТВ. В этом выступлении спикер расскажет, как это сделать, с какими трудностями и проблемами можно столкнуться и как их решить. Чем хорош спикер: Dart & Flutter GDE и лид Flutter-компетенции в EPAM. Чем хороша тема: Доклад основан на уникальном опыте. Никто еще не пробовал запускать Flutter-приложения на тех платформах, про которые будет рассказывать спикер. Сейчас разработчиков уже не удивить названием Jetpack Compose — но в том случае, когда речь идёт об Android. А на Mobius будет кое-что новенькое: рассказ об применении этого фреймворка для десктопа и о переиспользовании кода между Android и десктопом. Переносом Jetpack Compose для этой цели занимается компания JetBrains — а Николай Иготти именно оттуда, так что информация из первых рук. Чем хорош спикер: Николай является лидом разработки проекта Compose Desktop в JB
Чем хороша тема: Сейчас Compose Desktop — новое и уникальное решение для разработки UI под десктопные платформы. В ходе воркшопа Андрей создаст полнофункциональное приложение, на практике продемонстрировав некоторые интересные особенности Flutter. Приложения реального времени имеют несколько отличные от привычных принципы. Начнём с того, что состоянием управляет удалённый сервер и некоторая очередь событий. С учетом жизненного цикла мобильных приложений приходится не только «пинговать» и восстанавливать подключение, но и предусматривать механизмы back pressure, когда клиент не может справиться с «лавиной» данных. «Под капотом» мессенджера будет протокол websocket, который тоже потребует небольшого «тюнинга». Как выглядит работа со всем этим во Flutter?  Чем хорош спикер: Flutter-разработчик с большим опытом. Работает в Surf, в компании, одной из первых в России собравших большую команду Flutter-разработчиков. Чем хороша тема: К 2021-му "Hello world" на Flutter все уже освоили, а вот наглядная информация по более продвинутым сценариям полезна. Все так или иначе сталкиваются с задачами аналитики в своих проектах. Нужно отслеживать какие-то действия, собирать какую-то статистику, считать цифры. В случае с мобильными приложением нужно делать это для каждой платформы, и вот тут начинается: кто-то забыл повесить событие на кнопку, кто-то ошибся в названии параметра, и спустя некоторое время у нас месиво вместо аналитики. В ManyChat придумали кроссплатформенное решение, которое помогает не только держать один source of truth, но еще и минимизировать ручной труд. Они живут с этим решением уже полгода, а теперь Александр Лавриненко поделится им и с вами. Чем хорош спикер: Хорошо знаком сразу с обеими платформами (iOS и Android), ранее уже успешно выступал на Mobius. Чем хороша тема: Каждый разработчик так или иначе сталкивался с задачей реализации аналитики в своих проектах. Ярослав и Артем расскажут о том, как две совершенно разных команды, начав изучать Flutter, решая разные архитектурные задачи, в итоге пришли практически к одному и тому же решению.
Цель — представить собственный вариант реализации архитектуры для Flutter-приложений с решением некоторых концептуальных проблем, связанных с навигацией между экранами и DI. Рассказать, чем не устроили уже существующие решения, почему в итоге было сделано именно так и какая от этого выгода. Целевая аудитория — разработчики на Flutter, которых не устраивает архитектура «vanilla», описанная в документации, и которые задаются вопросами о том, как упорядочить архитектуру своего приложения и сделать ее чище. Чем хорош спикер: Артём и Ярослав — авторы своих собственных архитектурных решений. Оба специалиста независимо пошли по одному и тому же пути. Чем хороша тема: Когда казалось, что все возможные архитектуры уже обсуждены, появление Flutter положило начало новому витку обсуждений. В докладе Геннадий поделится рецептом разработки функциональности для создания и отображения панорам 360° на мобильном устройстве. Расскажет, как команда пришла к такому решению, с чего начать, как продолжить и как успешно завершить разработку и внедрение на мобильные клиенты. Доклад будет полезен в первую очередь тем, у кого есть необходимость использовать на мобильном устройстве достаточно сложную функциональность, которую можно перенести в кроссплатформенную библиотеку. Ингредиенты: Доклад о том, как в Яндексе строили инфраструктуру для отправки метрик скорости работы приложения. А также, как ускорялись и искали причины деградаций скорости.
Целевая аудитория: middle+ Android и iOS-разработчики.
Вы узнаете: Чем хорош спикер: Имеет большой опыт работы в данном направлении и сам занимался построением мониторинга. Чем хороша тема: Построение инфраструктуры по мониторингу работы приложения всегда является нетривиальной задачей для каждой компании. В данном случае спикер старается рассказать общий подход, который независим от платформ.  С каждым днём декларативный UI набирает обороты. Android, iOS, Flutter и React Native-разработчики активно переходят на MVI/Redux/TEA/BLoC и т.д. Но при всех своих плюсах UDF требует от нас решения новых проблем. Одна из них – моделирование состояния вашего приложения. И у неё есть решения! В докладе сперва разберём Algebraic Data Types и почему для моделирования стейта нам они пригодятся больше, чем ООП. Затем мы перейдём к более сложным вещам – научимся работать с нашим стейтом как с миниатюрной базой данных. Все эти трюки будут снабжены практичными примерами и корявыми комиксами докладчика для лучшего усвоения материала.
Доклад будет интересен разработчикам среднего уровня и выше. Стоит посмотреть каждому, кто считает, что мода на архитектурные доклады должна остаться в прошлом. Чем хорош спикер: Спикер известен не только как автор телеграм-канала с Android-мемами «Сохранёнки Джейка Вортона», но и как специалист, прекрасно разбирающийся в проектировании архитектур мобильных решений. Чем хороша тема: Настало время раскрыть правду: архитектуры — это не только про разделение кодовой базы на слои, но и про то, что происходит внутри этих слоёв. Управление состоянием — это один из сложнейших и недооценённых аспектов этой темы. Еркебулан расскажет, как и где будет полезно использовать Backend Driven UI, и поделится решением частых кейсов с небходимостью подстраивать UI под разные группы пользователей. Также вы узнаете, как изменять интерфейс без ожидания нового релиза, когда это нужно продукту. Более того, с помощью Backend Driven UI у маркетинга будет мощный инструмент, помогающий сэкономить время разработчиков и самих маркетологов. Из доклада вы узнаете, как важно найти золотую середину между гибкостью и излишне объёмным ответом API. Спикер надеется, что данная сессия будет интересна разработчикам, желающим сократить время работы над постоянными изменениями UI (Layout, шрифты, цвета) и уставшим от бесконечных A/B-тестов. Чем хорош спикер: Реализовывал данную технологию у себя в приложении. Чем хороша тема: Backend Driven UI давно знаком, но доклад позволяет посмотреть на него с другой стороны. Мы забываем, что это отличный инструмент для A/B тестирования и не только.  Последние несколько лет Екатерина активно преподавала — и в этом докладе она хочет рассказать о том, есть ли смысл разработчику идти в преподавание: Чем хорош спикер: У Кати большой опыт преподавания и взаимодействия с различными образовательными площадками. Чем хороша тема: Рынок онлайн IT-курсов вырос за последние годы в разы и почти каждому разработчику уже предлагали заняться преподаванием на этих курсах. Однако существует огромное количество площадок и видов самих курсов, и самостоятельно в этом разобраться не так уж и просто. Разработчикам доступно много готовых инструментов. Но в крупных проектах этого порой оказывается недостаточно — и тогда приходит время создания собственных инструментов
Тимур и Мишель работают в Facebook, где кастомных решений немало. Опираясь на примеры плагинов к Flipper, они расскажут: Чем хороши спикеры: Непосредственно причастны к Flipper и кастомным инструментам. Чем хороша тема: При разработке крупных мобильных приложений ценной разобраться, когда собственные инструменты — это прихоть разработчиков, а когда реальная необходимость. На Mobius часто рассказывают о крутых решениях от больших команд, но они могут быть неприменимы в рамках небольших команд. Как не ударяться в карго-культ и не тащить в свой проект то, что ему не нужно, просто потому что «так делают большие»? В своём докладе Игорь хотел бы сравнить и оценить эффективность применения самых известных принципов и практик в Android (SOLID, Clean, Modularization, Architecture и т.д.) в зависимости от того, какой проект мы разрабатываем, чтобы каждый мог лучше понимать зачем применяются те или иные инженерные практики, и когда игра стоит свеч. Чем хорош спикер: Игорь является опытным ведущим Android-инженером продукта Okko, где лично применяет множество инженерных подходов на практике Чем хороша тема: Выступлений в духе «мы затащили себе такую-то штуку» множество — а вот докладов «давайте разберёмся, нужна ли вам такая штука» особо не видно. Каково вносить что-то новое в гигантский проект? Обычно внедрение — это довольно предсказуемый и простой процесс, где после небольшой изначальной настройки всё идёт по стандартной схеме «пишем код → билдим код → деплоим код». Но оказывается, что этот опыт не особо масштабируется на проекты действительно большого размера. Спикеры расскажут, как устроен процесс внедрения Kotlin в Facebook. Вы узнаете, с какими проблемами ребята столкнулись в попытке затащить Kotlin в крупнейшую мобильную кодовую базу: от поддержки языка существующей инфраструктурой до хардкорных оптимизаций JVM-байткода. В докладе присутствует кровавый DEX-код. Чем хорош спикер: Спикеры напрямую занимаются внедрением Kotlin в крупномасштабном проекте. Чем хороша тема: Это возможность узнать из первых рук о том, как происходит добавление нового в огромный проект со своей инфраструктурой и своими особенностями. Напомним, что конференция — это не только доклады: Так что ждём вас и на докладах, и на всём остальном. Полная информация и билеты — на сайте. ContentProvider