До конференции Mobius остался месяц, мы представляем Хабру её программу. И такие хабрапосты всегда непросто структурировать.

Понятно, что доклады «про iOS» и «про Android» интересны разным разработчикам, поэтому текст хочется разделить пополам. Но как правильнее поступить с докладами по Flutter? А про Kotlin, когда есть KMP? А с теми, которые не привязаны к платформе?

В общем, не уделяйте слишком много внимания тому, как всё разделено на части — лучше смотрите, о чём будут сами доклады.

Содержание

  • Для обеих платформ

  • iOS

  • Android

  • Kotlin

  • Flutter


Для обеих платформ

Тулкиты кодогенерации Android vs iOS

Анна Жаркова

Usetech

Крутые разработчики не только пишут хороший код, но и умеют пользоваться различными инструментами для упрощения, ускорения и оптимизации. Во время доклада Анна расскажет, какие средства можно использовать для Android и iOS, в каких кейсах их можно применять, и приведет пару небольших практических примеров.


BDUI как стратегия мобильного приложения

Денис Александров

Яндекс

Как писать мобильное приложение, если хочется иметь time to market в несколько часов, минуя сторы? В Яндексе дали бизнесу такую возможность, плавно перекатив обычное мобильное приложение на BDUI, без отрыва от разработки фич. Во время доклада Денис расскажет:

  • почему выбрали BDUI;

  • что понадобилось дописать;

  • насколько бизнес доволен результатом;

  • к каким неожиданным выводам про BDUI и мобильную разработку в целом можно прийти.


Фантастические баги: как их ловить и править

Дмитрий Кузнецов

Поговорим об опечатках в коде, которые приводят к крашам спустя несколько лет.

Затронем вопрос работы с мультимедиа на Android и узнаем, почему в ExoPlayer свои собственные парсеры медиафайлов.

Выясним, для чего нужны логи в мобильных приложениях и как заставить «краснеть» кого угодно.

В заключительной части доклада поговорим про потребление памяти


Multiplatform UI with Compose

Алексей Гладков

Mobile Developer

Мультиплатформенные технологии идут широким шагом, и «мобильщики» постепенно сталкиваются с проблемой фронтов. Им нужно поддерживать огромное количество различных экранов. В докладе Алексей рассмотрит, как это удобно делать на Compose Multiplatform.


KMP на ОС Аврора: проблемы и пути их решения

Денис Супрун

Независимый консультант

По мере выхода ОС Аврора в публичное пространство среди существующих мобильных разработчиков постоянно звучат просьбы о том, чтобы появилась возможность использовать KMP (Kotlin Multiplatform) для разработки приложений под эту операционную систему.

Рассмотрим примеры того, что из KMP уже можно использовать, как это сделать, а что — нельзя и почему. Поговорим о перспективах развития и о том, что мы можем сделать, чтобы приблизить KMP к состоянию production-ready на ОС Аврора.


Figma Mockup to Server-driven UI

Абакар Магомедов

Альфа-Банк

Владислав Чешенко

Альфа-Банк

При разработке фич на SDUI разработчикам приходится верстать экраны на JSON. Это тяжелая и скучная работа, особенно когда фичи довольно простые, и все, что нужно сделать, — это посмотреть, какой набор компонентов используется в Figma, описать его в JSON и прокинуть те же настройки, что и в Figma.

Возникают особые проблемы, когда SDUI «натягивается» на готовую дизайн-систему, и оказывается, что она не синхронизирована с платформами.

Спикеры расскажут, как трансформировали дизайн-систему в понятный алгоритм действий и описали его в коде и как SDUI помог выявить критические проблемы в дизайн-системе.


Замена иконок — что может быть проще?

Александр Тотилас

hh.ru

«Замена иконок — что может быть проще?» — подумал Александр. А теперь он расскажет про боль, грабли, ошибки, лайфхаки и сам процесс масштабного рефакторинга двух Android-приложений из сотен модулей.

В докладе будет все: анализ текущей структуры модулей, баги автогенерации иконок из Figma, палки в колеса от Android Studio, коммуникация с командой, и, конечно, ретроспектива.


Дизайн-система 2.0: менеджеры нужны

Анна Шабаева

hh.ru

Павел Стрельченко

hh.ru

До разработки дизайн-системы может показаться, что задача сформулирована крайне просто. Есть дизайнер — он рисует UI-элементы. Есть разработчик — он реализует компоненты в коде.

Но у задачи создания дизайн-системы есть не только техническая сторона, но и процессная. В технической есть множество нюансов, в процессной — тоже.

В hh.ru начали разработку новой дизайн-системы больше года назад. За это время наткнулись на множество подобных нюансов. Опытом их обработки спикеры и поделятся с сообществом.


Архитектурное собеседование — по обе стороны баррикад

Кирилл Володин

Тинькофф

Рассмотрим архитектурное собеседование с обеих сторон — с позиции компании и с позиции кандидата. Кирилл расскажет о том, с какими потребностями и проблемами в найме столкнулись в Тинькофф, как выстроили систему оценки кандидатов.

Также спикер немного раскроет поведенческое или фит-интервью: его очень часто соискатели умудряются завалить даже с хорошими навыками архитектуры, платформы и кодинга.


VK Звонки: поднимаем планку качества WebRTC-звонков

Иван Шафран

VK / VK Звонки

Команда Звонков ВКонтакте уже более пяти лет занимается развитием видеосвязи на основе фреймворка WebRTC. Этот набор технологий широко используется для быстрой реализации звонков один на один, однако имеет ряд точек для улучшения. К тому же с каждым годом пользователи предъявляют все больше требований к качеству сервиса.

В докладе будут представлены улучшения для аудио, видео, демонстрации экрана и соединения между устройствами. Например, будут описаны оптимизации захвата экрана для разного контента. Наработки разбиты по уровню сложности для применения, поэтому участники конференции с разным опытом в видеосвязи смогут почерпнуть полезные идеи.


Единая авторизация Ozon ID. Как мы повышаем комфорт юзеров, снижая затраты компании

Денис Долгополов

Ozon

Знакомство юзеров с продуктом начинается с авторизации — двух небольших экранов. Но за этими двумя экранами скрывается около семи видов авторизации, позволяющих повысить комфорт пользователей и сэкономить деньги компании.

Денис занимается разработкой и внедрением Ozon ID-авторизации в приложения Ozon. В рамках доклада он расскажет, зачем им такое разнообразие, а также как сэкономить на ней и поднять конверсию.


iOS

Выжмем из SwiftUI Preview еще больше

Дмитрий Куркин

Xymatic

В 2022-м ребята из Ozon показали, как можно создавать различные тесты на базе Preview при помощи кодогенерции. Теперь посмотрим, как сделать то же самое без кодогенерации. А вместе с идеями интерактивных тестов откажемся от Micro Apps в пользу Preview.


UICollectionViewLayout from scratch

Евгений Ёлчев

VK

UICollectionViewLayout — довольно запутанный класс, который нужно расширять довольно неочевидными способами. К сожалению, документация не очень помогает разобраться с этим вопросом. Нет по этой теме и подробных статей.

В прошлом году Евгений потратил несколько месяцев, чтобы разобраться с вопросами создания своих лейаутов для UICollectionView: как не просто расставить элементы, но и точечно обновлять коллекцию, добавлять кастомные анимации, произвольно менять позицию скролла, добавлять любые декорации — и применил все эти знания в Маркете ВКонтакте. Теперь он хочет поделиться этим с вами.


Как укротить виджеты в супераппе?

Егор Болдырев

Тинькофф

Доклад содержит опыт создания iOS-виджетов и их интеграции в Тинькофф Мобильный банк, от самых простых до сложных: обновляемых в течение дня, учитывающих типы пользователей, работающих с удаленным сервером и реагирующих на меняющиеся параметры в режиме реального времени.


Борьба с утечками памяти: от задачи до победы

Артём Колосов

VK

Влияние утечек на всю работу приложения — от роста графиков до проблем у пользователей. Выявление и профилактика утечек, а также борьба с ними с помощью инструментов XCode и подручных средств. Подводные камни при работе с инструментами и как их обойти.


А так ли нужны акторы в Swift Concurrency?

Василий Усов

Райффайзен Банк

В Swift 5.5 Apple предоставили разработчикам новый подход к конкурентному программированию — механизмы Task, async/await и акторы. В прошлогодней сессии Василий рассказал об истории концепции корутин, которая легла в основу нового подхода, а также о том, как именно реализован и функционирует механизм тасок.

Этот доклад станет логическим продолжением прошлогоднего. В нем мы вновь обратимся к историческим причинам появления нового подхода, проблемам GCD, развитию модели акторов и ее текущей реализации в Swift Concurrency. Вы узнаете, что такое актор, как им пользоваться, какие проблемы он позволяет решить.


Mobile App Performance: расшифровка метрик

Максим Гришутин

Ozon

Рассмотрим, что такое performance-метрики приложения и зачем они нужны. Также обсудим, как их собирать и где хранить.

Не забудем и о темных сторонах: как обойти систему и почему не все в восторге от того, чтобы закопаться в коде исправлять перфоманс. В конце обсудим, как мотивировать себя и других следить за производительностью.


Ускоряем SwiftUI с Observable

Дмитрий Чернов

Ozon

Дмитрий расскажет, почему же Apple представила новый макрос Observable, и приведет сравнение со старым подходом — ObservableObject. В ходе сравнения разберет, как применять Observable и какие у него еще преимущества перед старым подходом. Немного расскажет про его реализацию и о том, как этот макрос способен ускорить SwiftUI. В конце поделится личным опытом перехода на новый макрос в большом приложении.


SwiftPM — фреймворки вместо кофе

Евгений Рыжов

Ozon

Представьте, что вы — счастливый мейнтейнер проекта с SPM. Возможно, вам даже представлять не пришлось. Вопрос — как ускориться?

Ответ — в докладе. Разберемся, как можно пропускать целые этапы билда при помощи кэша зависимостей проекта, как этот кэш может выглядеть, как его получить и как им управлять.


Эволюция презентационных паттернов SwiftUI

Николай Пучко

Яндекс

Доклад раскрывает историю разработки приложения Яндекс Путешествий полностью на SwiftUI без прикрас. Выводы построены на компиляции их опыта за два года промышленных архитектурных экспериментов.


Реактивный Swift Concurrency

Башир Арсланалиев

Яндекс 360

В iOS-команде Яндекс Мессенджера обкатывается реактивный подход при использовании Swift Concurrency без Combine или RxSwift. Построен он на прогреве стримов событий с помощью транзакций. В докладе Башир расскажет, с какими сложностями столкнулись при переходе на SC, как их решили, что есть сейчас и что хотят делать с этим в будущем.


Swift 5.9: разбираем интероп и «женим» с С++

Андрей Филипенков

Kaspersky

В Swift версии 5.9 добавили прямой интероп с С++ в обе стороны. Рассмотрим, какие возможности это открывает, а также какие есть ограничения на текущий момент. Попробуем добавить интероп в реальный проект.


DriverKit: гоняем данные по проводу без мам, пап и MFi

Светослав Карасев

hh.ru

Wi-Fi, Bluetooth — вот что мы обычно используем для взаимодействия с периферийными устройствами. Но что, если нам надо передавать большой поток данных и быть онлайн? Или внешнее устройство просто не имеет модулей беспроводной связи? Тогда остается еще один вариант — USB.

С iOS 16 нам стал доступен DriverKit, который позволяет писать драйверы для подключаемых устройств и не участвовать в программе MFi.

Светослав расскажет, для чего это может быть полезно, как его использовать, и покажет пример подключения собственной «железки» на основе ESP32 к iPad.


Вам не нужно хранилище в приложении

Андрей Зонов

Тинькофф

Доклад по стопам предыдущего про персистентность в iOS.

Во время конференции было много дискуссий о необходимости применять персистентность. Андрей понял, что есть что рассказать и о том, почему не всем нужно «тащить» хранилище.


Макросы спустя полгода: не все так гладко

Дмитрий Головин

Ozon

Зачем нужны новые макросы в Swift? С какими проблемами придется столкнуться? Как их решать? А действительно ли макросы быстрые? Стоит ли вообще внедрять к себе в проект макросы как основной инструмент генерации кода? Во время выступления Дмитрий ответит на эти вопросы на основе полученного опыта — в Ozon Seller написали свою библиотеку с макросами и внедрили в крупный проект.


Есть ли ORM круче SwiftData

Сергей Балалаев

Ozon

Поговорим об альтернативах SwiftData в ключе удобства, возможностей и производительности. Сергей поделится 15-летним опытом использования различных фреймворков, приведет собственные исследования самых свежих версий. Вас удивит, как преуспели малопопулярные решения. В конце он предложит шкалу выбора решений в зависимости от масштабов вашего проекта.


Время прощаться с XCAssets. Настраиваем экспорт картинок из Figma на CDN, а оттуда — в наше приложение

Александр Евтухов

Банк Открытие

Рано или поздно каждый разработчик столкнется с тем, что дизайнеры в его команде решат создать дизайн-систему. В этой дизайн-системе будут иконки и, может быть, какие-то иллюстрации. В рамках доклада мы поговорим о том, как настроить экспорт этих картинок из Figma, разместить их на CDN и начать удобно с ними работать. Также обсудим, как подружить iOS и векторную графику. Раскроем некоторые секреты работы xcassets и узнаем, как, отказавшись от них, можно более эффективно хранить ассеты в пакете приложения.


Android

Переходишь на Compose? Не спеши!

Максим Качинкин

Dodo Engineering

Вас влечет мир Jetpack Compose, или вы уже на пороге перехода с View на этот фреймворк?

Максим поделится основными трудностями, с которыми столкнулась его команда при переходе, расскажет о том, как удалось с ними бороться. Он также перечислит метрики, которые использовали для оценки. В результате получилось улучшить работу, и из доклада вы узнаете, как именно.


Размер имеет значение: как измерить и уменьшить вес Android-приложения

Илья Воробьев

Во время доклада вы узнаете, какие типы размера приложения бывают, как измерить каждый из них и почему каждый важен по отдельности. Рассмотрим инструменты и техники оптимизации размера и применим их на практике, уменьшив размер open source-приложения I/O Schedule от Google.


Шифруем файлы в Android

Андрей Матюшин

VK

Андрей познакомит слушателя с миром криптографии и покажет, что этот мир не такой страшный, как кажется на первый взгляд. Расскажет про опыт внедрения шифрования локальных файлов в приложении VK Teams, в том числе про подводные камни и неочевидные моменты, с которыми пришлось столкнуться.


Укрощаем UDF state-based архитектуры. Реальные кейсы в больших приложениях

Игорь Кареньков

hh

UDF-архитектуры, которые отдают единый state (TEA, MVI, Flux, Redux, MVU), все больше проникают в Android-разработку, и ими интересуется много людей. Но как использовать такие архитектуры в большом, работающем проекте? Как мигрировать на них и решать распространенные проблемы элегантно и просто?

Игорь расскажет об этом через призму архитектуры TEA.


В сетях сетевого слоя

Артемий Клименко

VK

Артемий расскажет про способ создания масштабируемой сетевой подсистемы в рамках Android-приложения с примерами кода и схемами. Для примеров будет использовать Retrofit и OkHttp, но принципы, лежащие в основе, могут использоваться и с другими технологиями. Расскажет про открытые, анонимные, авторизованные и адаптивные зоны и про обеспечение работ с анонимной и авторизованной сессией.


Как избавиться от рекурсии, или Как мой код попал в Google

Максим Сидоров

SberDevices

Исследование различных подходов к оптимизации рекурсии. Сравним и измерим их все, чтобы получить наглядные цифры.

Во время исследования Максим обнаружил проблему с производительностью стандартной функции ViewGroup.descendant. Он расскажет, как ее обнаружил и поделится опытом контрибьюции в Google. Ему удалось ускорить функцию в сотни раз, и эти изменения уже приняты Google.


Gradle-сборка. Измеряем самое важное

Юрий Анисимов

Тинькофф

Время выполнения Gradle-сборки (и не только сборки) зависит от множества факторов. В какой момент произошла деградация? Как повлияют изменения на время сборки? Ответить на эти и подобные вопросы позволяет наличие метрик.

В Тинькофф разработали собственный Gradle-плагин сбора метрик Android-билдов. Юрий расскажет, что побудило разработать собственное решение, какие данные собирают в Тинькофф и что интересного узнали из метрик. Он проведет экскурс по устройству плагина и сделает обзор информации, которую можно извлечь из Gradle.


Паттерны SDUI

Абакар Магомедов

Альфа-Банк

Александр Гирев

Go Invest

Итак, вы задумались о том, чтобы принести SDUI на свой проект. В докладе с вами поделятся опытом реализации различных SDUI-подходов в зависимости от целей и задач разрабатываемой функциональности. Каждый подход является своеобразным паттерном SDUI со своими возможностями, сферой применения и особенностями реализации. Вы узнаете, какой паттерн подходит вашему проекту и как не допустить ошибок в реализации.


ByteWeaver. Инструментирование байт-кода во имя великого блага

Александр Асанов

VK / OK

Александр расскажет о ByteWeaver — небольшом инструменте для патчинга байт-кода во время сборки, который бывает полезен в разработке под Android. В ОК этот инструмент используется для автоматического сбора некоторой статистики, а также для поиска багов в тех местах, где правки в исходном коде не помогают.


Установка Android-приложений от доисторических времен до наших дней

Анатолий Гусев

VK / RuStore

Анатолий расскажет о том, как менялся API установки приложений в Android от первых версий и до современности. Разберем связанные ограничения и особенности. Рассмотрим проблемы, которые появлялись у разработчиков Android, и как они их решали.


Бессмертное приложение

Матвей Плохов

Вспомним способы продления жизни приложения. Разберемся, как переживать force-stop и запускать процесс после скачивания приложения. Посмотрим, что делают китайские разработчики, чтобы процесс невозможно было остановить, и постараемся открыть activity из background.


5 уроков, вынесенных из опыта реализации pixel-perfect тестирования дизайн-системы в Android

Рустам Гумеров

Тинькофф

Как обеспечить pixel-perfect качество дизайн-системы?

Существующие подходы к скриншот-тестированию обладают рядом недостатков в удобстве и эксплуатации.

В докладе Рустам поделится двухлетним опытом реализации скриншот-тестирования. Он подскажет, как организовать скриншот-тестирование в своем проекте.


Радикальная оптимизация сборки: вынос сборки Android-проектов с машины разработчика на сервер

Павел Васильев

Positive Technologies

Вот о чем расскажет Павел:
Как собирать рабочий проект на мощностях удаленного сервера.
Какие существуют варианты организации подобной работы.
Инструменты и опыт работы Павла с ними.


Kotlin

Как коллбэк повзрослел — и стал корутиной

Александр Соколинский

Яндекс

Что вы представляете, когда слышите слово «корутина»? Если coroutineScope, launch, delay — вы не правы, это не имеет непосредственного отношения к корутине. Во время доклада пройдем путь, который прошла индустрия от коллбэка до современных корутин, и наглядно убедимся, что корутины и многопоточность — разные вещи.


Flutter

Архитектура white-label на Flutter: тонем в абстракциях

Марк Абраменко

Surf

Опыт проектирования white-label приложения на Flutter, ориентированного на разработчиков и проектные команды, которые создают масштабируемые и кастомизируемые мобильные приложения.
Марк расскажет о переходе с React Native на Flutter, освещая как проблемы, так и удачные решения, которые привели к успешной реализации проекта. Рассмотрит тему white-label с точки зрения ее отличий от темизации и стандартных решений «из коробки», подчеркивая важность индивидуального подхода и кастомизации.


Темная сторона изолятов в Dart

Станислав Чернышев

СПбГЭУ

Обсудим со Станиславом:

  • Изоляты и изоляционные группы.

  • Ограничения, которые накладывают на передаваемые сообщения.

  • Какие объекты хранятся в общей памяти для изоляционных групп и как построен этот механизм.

  • Как создаются объекты в Dart и какой у них жизненный цикл.

Это позволит лучше понимать процессы создания объектов в одной изоляционной группе. Также поймем, как можно оптимизировать передачу большого количества сообщений между изолятами одной группы в работающем приложении.


Создание indoor-карты здания во Flutter

Павел Гершевич

Аспирити

При разработке мобильных приложений может возникнуть одна очень интересная задача — размещение на одном или нескольких экранах внутренней карты здания. Во время доклада Павел расскажет, какие есть подходы и что выбрали для реализации собственного решения с использованием Flutter.

Будет полезно Flutter-разработчикам и разработчикам на других технологиях, так как рассматривается не только конкретная реализация, но и алгоритм решения проблемы.


Многомодульное приложение на Flutter

Кирилл Адещенко

Россельхозбанк

Как строить приложение на Flutter, над которым одновременно работают более 10 продуктовых команд. Как сделать так, чтобы все не сломать и стабильно выпускать релизы.

Случаи реализации Flutter-приложения в больших командах можно пересчитать по пальцам одной руки. Кирилл расскажет об опыте Россельхозбанка, о проблемах, с которыми столкнулись. Если вы не верите, что на Flutter можно создавать крупные приложения, то обязательно посмотрите доклад Кирилла.


Заключение

Если вы раньше не участвовали в Mobius, может быть не вполне очевиден формат. Поясняем: 23 мая все будут смотреть доклады онлайн, а вот про 31 мая и 1 июня можете самостоятельно выбрать, что вам лучше подходит: прийти на московскую площадку лично или подключиться к её онлайн-трансляции.

Задать вопросы спикерам вы сможете при любом выборе, за этим мы следим. Но, конечно, на площадке есть много живого общения, которое не передать полностью онлайном.

Напоследок остаётся напомнить ссылку на сайт конференции: там и вся информация о ней, и билеты.

Комментарии (0)