Подумайте, где на самом деле проводятся Измерения: в овощном отделе супермаркета с одним делением сети, в подвальном техпомещении, гараже или на лестничной клетке между квартирами. Если вашему приложению для Измерений нужен сервер, оно подведет вас именно там, где оно нужнее всего. Поэтому самое первое архитектурное решение не подлежало обсуждению: каждая запись, каждое Измерение и каждый сохраненный результат работают без подключения к сети. И это не урезанный офлайн-режим, а основной. Здесь просто нет онлайн-режима, до которого можно было бы «урезаться».

Что на самом деле дает работа на устройстве

Скорость, которая меняет подход к Измерениям

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

Конфиденциальность на уровне архитектуры, а не правил

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

Структура расходов, которая не мешает продукту

Вычисления в облаке означают, что каждое Измерение стоит разработчику денег, что в конечном итоге приводит к подпискам, лимитам или рекламе. Вычисления на устройстве не стоят ничего при каждом использовании, поэтому нет причин вас ограничивать. Этот баланс интересов незаметен, но важен: приложение, предельные издержки которого равны нулю, может позволить вам измерять сколько угодно.

Весь каталог хранится на телефоне, облако — лишь копия

Всё, что вы измеряете, заносится в локальный каталог — Объекты, Сценарии, Измерения, метки — и локальная база данных всегда остается единственным источником истины. Вход через аккаунт Google добавляет только одно: ручную, осознанную синхронизацию, которая обновляет облачную копию и подтягивает изменения на ваше устройство, чтобы на втором устройстве или в веб-версии отображался тот же каталог. Ручной режим — это фича, а не ограничение: синхронизация происходит по вашему запросу, в понятном вам направлении, а не в виде фонового процесса, результаты работы которого могут вас внезапно удивить.

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

Ограничение, которое заставляет играть честно

У приоритета офлайна есть и менее очевидный плюс: он не позволяет инженерам лениться. Нельзя замаскировать плохой набор функций, натравив гигантскую облачную модель на необработанный звук. Всё должно запускаться на процессоре телефона и укладываться в секунду, что заставляет делать алгоритмы анализа компактными, интерпретируемыми и обусловленными законами физики: резонансная частота и коэффициент затухания вместо эмбеддинга из «черного ящика», соотношение сигналов на одном приемнике вместо абсолютного уровня звука. Именно эти характеристики переносятся между моделями телефонов без индивидуальной калибровки устройства — ограничение и качество работают на общую цель. (Подробнее об этом правиле проектирования читайте в обзоре Инструментов и статье об Измерении шума с двух телефонов.)

Чего не означает приоритет офлайна

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