Подумайте про те, де насправді відбуваються вимірювання: у відділі овочів та фруктів супермаркету, де ледь ловить зв'язок, у підвальному підсобному приміщенні, у гаражі, на сходовому майданчику між дверима квартир. Якщо вашому додатку для вимірювань потрібен сервер, він підведе вас саме там, де він найбільше потрібен. Тому перше архітектурне рішення було водночас і найбільш безкомпромісним: кожне фіксування, кожен аналіз і кожен збережений результат працюють без підключення до мережі. І це не обмежений офлайн-режим — це основний режим. Тут немає онлайн-режиму, до якого можна було б скотитися.

Что насправді дає робота на пристрої

Швидкість, яка змінює спосіб вимірювання

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

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

Запис мікрофона, зроблений у вас вдома, — це саме той тип даних, які не мають нікуди передаватися. Тут вони й не передаються: необроблене аудіо аналізується на пристрої, а виділені характеристики зберігаються на ньому ж. Нічого не залишає телефон, доки ви не увійдете в акаунт і не натиснете кнопку синхронізації вручну — при цьому додаток повністю функціональний навіть без входу. Політика конфіденційності говорить про те, що компанія обіцяє робити з вашими даними; офлайн-архітектура робить більшість цих обіцянок просто непотрібними.

Структура витрат, яка не суперечить продукту

Обчислення в хмарі означають, що кожне вимірювання коштує розробнику грошей, що зрештою призводить до передплат, обмежень або реклами. Обчислення на пристрої безкоштовні для кожного використання, тому немає потреби обмежувати вас. Цей збіг інтересів є непомітним, але реальним: додаток, гранична вартість якого дорівнює нулю, може дозволити вам вимірювати стільки, скільки забажаєте.

Каталог зберігається на телефоні; хмара — це лише копія

Усе, що ви вимірюєте, заноситься до локального каталогу — об'єкти, сценарії використання, вимірювання, мітки — і локальна база даних завжди є першоджерелом. Вхід через Google додає лише одне: ручну, свідому синхронізацію, яка завантажує копію з хмари та надсилає туди вашу, щоб інший пристрій або вебпереглядач бачили той самий каталог. Ручний режим — це перевага, а не обмеження: синхронізація відбувається на вашу вимогу, у зрозумілому двосторонньому порядку, а не у фоновому режимі, який час від часу може підносити сюрпризи.

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

Обмеження, яке змушує всіх бути чесними

Пріоритет офлайн-роботи має ще одну непомітну перевагу: він не дає лінуватися інженерам. Ви не можете замаскувати слабкий функціонал, нацькувавши гігантську хмарну модель на необроблене аудіо. Усе має працювати на процесорі телефону за секунду, що змушує робити аналіз компактним, інтерпретованим і фізично обґрунтованим: резонансна частота та коефіцієнт згасання замість ембеддінгу з «чорної скриньки», відношення сигналів на одному приймачі замість абсолютного рівня. Саме ці характеристики переносяться між різними моделями телефонів без калібрування конкретного пристрою — обмеження та якість рухаються в одному напрямку. (Детальніше про це правило проектування дивіться в огляді інструментів та статті про вимірювання двома телефонами.)

Чого не означає пріоритет офлайн-роботи

Це не означає відмову від хмари. Синхронізація існує тому, що створений вами за місяці каталог заслуговує на резервну копію та другий екран. Це також не означає, що моделі ніколи не вдосконалюються: класифікатори навчаються централізовано на вимірюваннях, якими користувачі вирішили поділитися, додавши еталонні мітки — маховик набору даних — і надсилаються назад у застосунок, щоб, як завжди, працювати безпосередньо на пристрої. Мережа потрібна для передачі знань за вашим власним розкладом. А саме вимірювання відбувається у ваших руках.