Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
В 2018-м App Store и Google Play исполнилось 10 лет. За это десятилетие некоторые приложения, начинавшиеся как маленькие стартапы, разрослись в гигантские проекты — а по пути преодолели множество трансформаций, набили множество шишек и извлекли множество уроков.
Мы открыли видеозаписи Mobius 2018 Moscow, и публикуем на Хабре 10 лучших (согласно зрительским оценкам). И в некоторых из них спикеры, работающие в крупных компаниях, описывают как раз изменения, связанные с ростом. Другие темы тоже есть: например, часто ли в случае с видео вы спускаетесь на уровень кодеков и сокетов?
Доклады в списке идут по возрастанию рейтинга — так что самые полюбившиеся зрителям будут в самом конце текста. А для тех, кого интересуют и не вошедшие в десятку доклады, даём также ссылку на плейлист.
Монорепо: путешествие обратно. История модуляризации в Badoo
Платформа: iOS
Спикер: Антон Щукин
Презентация доклада
На 10-м месте — как раз «история роста и приходящего с ним опыта». В Badoo
занимаются iOS-разработкой уже девять лет, а за это время изменилась не только компания, но и вся индустрия (сложно представить, но когда-то человечество существовало без CocoaPods).
Неудивительно, что подход к структуре репозиториев и проектов в Badoo тоже существенно менялся, и это было не линейным движением из точки А в точку Б — начав с одного репозитория, можно в итоге прийти снова к нему же, но уже на другом уровне. Каким получился маршрут, и какие были причины для изменений в каждом конкретном случае?
Как кэшировать информацию в Android-приложении и не стрелять себе в ногу
Платформа: Android
Спикер: Дмитрий Васильев
Презентация доклада
Казалось бы, задача кэширования (в том числе на Android) не нова — но менее актуальной она от этого не становится, а ошибки в ней совершать не перестают, так что и доклады остаются полезными. Ну, недаром из двух главных проблем computer science одна связана с кэшированием!
Виды кэширования, фигурирующие в докладе:
- Lazy cache
- Synchronized cache
- Write-through cache
- LRU cache.
Мобильная архитектура в большой команде
Платформа: Android/iOS
Спикер: Александр Михайлов
Презентация доклада
Uber — возможно, самый известный в мире пример «большой мобильной команды», их сотни разработчиков стали притчей во языцех. Неудивительно, что компания сталкивается со сложностями, которые маленькие команды не затрагивают. При этом она, как и Badoo, пришла в мобильную разработку как стартап, так что путь к нынешнему состоянию был долгим и извилистым. Каким именно, к каким сложностям пришли, и как с ними борются?
Количество практической пользы, которую вы можете получить от доклада, отчасти коррелирует с размером вашей команды — если вы работаете в маленькой, вам это может не пригодиться в ваших непосредственных задачах. Но в любом случае интересно же, что там у гигантов!
Архитектурный подход к обработке ошибок
Платформа: Android/iOS
Спикер: Дмитрий Михайлов
Презентация доклада
Кому хочется иметь дело с обработкой ошибок? Хочется делать стройные замки новых систем, а не возиться со случаями, где что-то пошло не так. В итоге важная тема часто остаётся обделённой вниманием.
Но этот доклад, объединяющий её с архитектурными вопросами, может заставить посмотреть на проблему по-новому: чтобы обрабатывать ошибки как следует, надо как раз выстроить стройную систему, правильно подходящую к каждому из слоёв.
Как приготовить хорошо прожаренный MVI под Android
Платформа: Android
Спикер: Сергей Рябов
Презентация доклада
От доклада, где в названии архитектура, кто-то может ожидать сплошных UML-диаграмм. Не тут-то было: здесь на слайдах много конкретного кода. Настолько, что некоторые зрители даже жаловались — воспринимать столько подряд живьём сложновато. Но при просмотре видеозаписи есть кнопка паузы, так что можно употреблять «хорошо прожаренный MVI» по частям и смаковать, а не давиться.
Kotlin Puzzlers vol. 2
Платформа: Android
Спикер: Антон Кекс
Что будет, если в Kotlin попробовать передать в Int-параметр значение -2_147_483_648.inc()? А почему? Антон показывает случаи, когда Kotlin ведёт себя неочевидно, и предлагает сначала угадать правильный вариант, а затем объясняет, что происходит.
Это уже второй его доклад о неочевидном поведении языка, а мы для обоих этих докладов делали на Хабре текстовые версии — так что тут можно не только посмотреть, но прочитать:
- Kotlin Puzzlers
- Kotlin Puzzlers vol.2
Стриминг и воспроизведение видео поверх голых сокетов и кодеков
Платформа: Android/iOS
Спикеры: Александр Тоболь и Иван Григорьев
Потребление видеоконтента в ОК гигантское, а с появлением OK Live к нему добавился ещё и стриминг. Неудивительно, что в мобильной разработке там подходят к соответствующим вопросам куда глубже, чем «возьмём стандартный плеер и выведем», и в докладе делятся своей экспертизой. Чем эппловская технология HLS уступает DASH? Какие три приоритета в стриминге оказываются недостижимы одновременно, и в пользу какого из них предрасположен WebRTC? В каких случаях вместо стандартных решений стоит делать собственное?
Доклад разделён на две части, о простой передаче с воспроизведением (когда пользователь только потребляет видео) и о мобильном стриминге (где создают его сами пользователи в прямом эфире) — и если вторая для вас неактуальна, полезно посмотреть хотя бы первую.
Compilers. Dalvik. ART. And everything in between
Платформа: Android
Спикер: Йонатан Левин
Кто-то помнит Йонатана по шоу-кейноутам, но здесь вместо костюмированных выступлений он полез вглубь: что такое D8 и R8, зачем они понадобились, и что о внутренностях Android надо знать, чтобы это понять? И получился хороший баланс серьёзного и увлекательного: тема вполне себе серьёзная, но благодаря Йонатану всё не превращается в монотонную лекцию, а подано очень живо.
В отличие от «Kotlin Puzzlers», этот доклад мы не расшифровывали, но Йонатан по его следам сам сделал блог-пост — так что и здесь, если вам удобнее читать, есть такой вариант.
Крайности тестирования: хитрости из темных уголков мобильных интерфейсов
Платформа: Android/iOS
Спикер: Виталий Фридман
Если пользователи в среднем проводят 169 минут в день в мобильных приложениях, а 11 минут в мобильном браузере, какой вывод напрашивается для любой конкретной компании? «Приложение в 15 раз важнее мобильного сайта, сосредоточимся на нём». Но если всмотреться, выяснится, что почти все эти 169 минут у пользователя приходятся на несколько любимых приложений — а там обосновались всякие фейсбуки, составить им конкуренцию крайне затруднительно. И в таком случае расклад сил становится куда менее однозначен.
Это один из любопытных фактов, озвученных Виталием Фридманом. В отличие от докладов с обилием кода, здесь кейноут, в котором не учат какой-то конкретике — зато сообщают много интересных общих вещей, помогающих понять, какую конкретику вообще правильнее воплощать.
Android builds at Lyft
Платформа: Android
Спикер: Артём Зиннатуллин
Наконец, лидер рейтинга. Число модулей в Android-приложении Lyft превышает 800, что сказывается на сборке. Тут кто-то может подумать «если мы в жизни до такого не доберёмся, то к чему нам это слушать» — но оценки зрителей показывают, что доклад получился интересным не для гигантов, а для всех.
Среди прочего в докладе звучит заявление «Bazel — это будущее», и на тот момент оно казалось очень смелым. Но вот свежая новость: в документации Android Q заметили пример Bazel-конфигурации. Кажется, будущее настаёт, а доклад теперь стоит посмотреть, чтобы к нему приготовиться.
Как можете видеть, на декабрьском Mobius было много интересного. Если хочется подобных докладов, но ещё и с возможностью лично поспрашивать спикера — обратите внимание, что 22-23 мая в Петербурге состоится следующий Mobius, и на сайте уже есть описания большинства докладов. Текущая цена на билеты действует до конца марта, дальше они подорожают.