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

timestamp (когда)\n- location (где), если разрешено\n- идентификатор пользователя/устройства (кто)\n- категория по умолчанию (что), на основе текущего экрана или последнего выбора\n\nЗапрашивается только при необходимости:\n\n- Количество (например: 1 стакан vs 2)\n- Заметки или фото в подтверждение\n- Степень / статус (обычно vs срочно)\n\nПолезное упражнение: запишите запись как предложение. Пример: “At 3:42 PM, I took my medication (Dose A) at home.” Если любое слово в этом предложении требует решения, подумайте, можно ли его сделать значением по умолчанию, запомнить с прошлого раза или отложить.\n\n### Выберите метрики успеха заранее\n\nВыберите несколько измеримых целей, чтобы последующие дизайн‑решения имели понятный компромисс.\n\n- Time-to-log (от тапa до сохранения): цель вторые, а не шаги\n- Error rate: неправильная категория, неверное количество, дубликаты\n- Completion rate: как часто пользователи завершают запись после начала\n\nКогда вы можете описать пользователя, окружение, точную сохраняемую запись и метрики, вы достаточно определили сценарий, чтобы спроектировать действительно быстрый однотаповый опыт.\n\n## Спроектируйте данные, которые нужно захватить\n\nПрежде чем рисовать экраны, решите, что такое одна запись («log»). Однотаповые приложения успешны, когда каждый тап создаёт чистую, согласованную запись, которую можно потом суммировать.\n\n### Начните с базовой формы события\n\nДержите основную запись небольшой и предсказуемой. Хороший дефолт:Включите краткое подтверждение (например, тонкий toast) с Undo, и добавьте всегда доступную опцию Edit last entry. Люди логируют быстрее, когда знают, что они могут исправить ошибку без долгих поисков в истории.\n\n### Включите доступность в понятие «быстро»\n\nУлучшения доступности часто делают приложение быстрее для всех.
Начните с определения точного момента логирования, который вы оптимизируете: кто логирует, в каких условиях (дождь, перчатки, яркое солнце, прерывания) и что означает «успех».
Затем сделайте так, чтобы действие одним тапом приводило к одной предсказуемой записи (обычно timestamp + type + опциональное value), чтобы тап всегда делал одно и то же.
Определите основного пользователя и перечислите ограничения, которые замедляют ввод:\n\n- офлайн или нестабильная связь
Дизайнерские решения (значения по умолчанию, отмена, локальное хранение) должны напрямую решать эти ограничения.
Напишите запись как предложение (например: “At 3:42 PM, I took Dose A at home.”). Любое слово, требующее решения — это фрикция.
Старайтесь:
Практичная минимальная форма события:
timestamp (автозаполнение)type (выбранная категория)value (опционально — число/выбор)note (опционально; никогда не обязательно)Это удерживает логирование последовательным и упрощает сводки/экспорт.
Добавляйте контекст только если пользователи могут объяснить, зачем он им позже. Подходящие кандидаты:
location (с ясными подсказками о разрешениях)tagsattachment (фото/аудио) для подтвержденияmetadata для отладки (версия приложения, устройство) — отдельно от пользовательского контентаЕсли это не будет использоваться в сводках, фильтрах или экспортe — не собирайте.
Держите таксономию маленькой и стабильной — часто 5–12 типов, которые помещаются на одном экране. Избегайте глубокой иерархии.
Если нужны детали, предпочитайте:
value (Small/Medium/Large)Это сохраняет скорость и оставляет полезную фильтрацию.
Используйте один доминирующий главный элемент на домашнем экране, затем опирайтесь на значения по умолчанию:
Когда нужна дополнительная информация, позвольте пользователю сначала залогировать, а затем сразу отредактировать без блокировки тапa.
Добавьте быструю возможность восстановления:
Это снижает страх ошибиться и делает пользователей более уверенными при быстром логировании.
Запись должна выполняться локально и мгновенно, а синхронизация — позже. Рассматривайте локальную БД как источник истины в момент захвата.
Используйте:
syncState (pending/synced/error)Показывайте статус ненавязчиво (например, “Offline • 12 to sync”), не мешая процессу логирования.
Отслеживайте метрики, связанные с основным обещанием:
Сохраняйте аналитику минимальной и не собирайте чувствительный контент (, точный GPS), если он не нужен.
timestamp: когда это произошло (автозаполнение; разрешить быстрое редактирование)
type: что произошло (кнопка/категория, на которую нажали)
value: опциональное числовое или выборное значение (например, 1–5, “маленькое/среднее/большое”)
note: опциональный свободный текст, но никогда не обязательный\n\nЭта структура поддерживает многие сценарии — привычки, симптомы, полевые проверки, посещения продаж — без навязывания лишних шагов.\n\n### Добавляйте контекст — только если он окупается\n\nКонтекст мощный, но каждое дополнительное поле рискует замедлить поток тапов. Рассматривайте контекст как опциональные метаданные, которые можно захватить автоматически или добавить после тапa:
location: GPS (с понятными подсказками о разрешениях), или простой селектор «дома / на работе»
контекст устройства/приложения: модель устройства, версия ОС, версия приложения (для отладки и аналитики)
теги: пользовательские метки для последующей фильтрации (оставьте теги опциональными)
вложения: фото/аудио, если это действительно помогает (полевые инспекции, чеки)
оценка настроения / интенсивности: лёгкая шкала для записей о самочувствии или инцидентах\n\nПравило: если пользователи не могут объяснить, как поле им поможет потом — не спрашивайте его сейчас.\n\n### Держите таксономию компактной\n\nСписок type — это основа однотапового логирования. Стремитесь к небольшому, стабильному набору категорий (часто 5–12), которые помещаются на одном экране. Избегайте глубоких иерархий; если нужна детализация, используйте второй шаг, например быстрый выбор value или один тег.\n\n### Запишите требования к приватности заранее\n\nЕсли вы собираете данные о здоровье, на рабочем месте или местоположении, задокументируйте:
какие поля чувствительны
следует ли по умолчанию держать данные на устройстве
как долго хранятся логи
что пользователь может экспортировать или удалить\n\nТакая предварительная ясность предотвращает болезненные переработки, когда позже вы добавите синхронизацию, аналитику или экспорт.\n\n## Создайте однотаповый UX, который остаётся быстрым\n\nОднотаповый регистратор работает только если главное действие очевидно и всегда быстро. Ваша цель — сократить «время на размышление» и «количество тапов», не заставляя людей бояться случайной записи.\n\n### Спроектируйте главный экран вокруг одного основного действия\n\nНачните с одной доминирующей кнопки, соответствующей базовому событию (например: «Log Water», «Check In», «Start Delivery», «Symptom Now»). Сделайте её визуально более тяжёлой, чем всё остальное, и разместите там, где палец естественно отдыхает.\n\nЕсли вам действительно нужна второстепенная кнопка, держите её подчинённой: меньшая кнопка, свайп или долгое нажатие на главную. Два равнозначных выбора замедляют пользователей.\n\n### Используйте значения по умолчанию, чтобы люди редко печатали\n\nСкорость приходит от умного автозаполнения. Каждый раз, когда вы просите вводить текст, вы рискуете нарушить обещание «одного тапа».\n\nИспользуйте:
последние использованные значения (та же величина, то же место, та же категория)
быстрые пресеты (“Small / Medium / Large”, “On-site / In transit / Done”)
умные предложения на основе времени и паттернов (например: по умолчанию «Кофе» в 8 утра, если это часто)\n\nКогда нужно дополнительное поле, спрячьте его за опциональной панелью: тапните один раз — запись сделана, затем можно развернуть панель для заметок или правки.\n\n### Снижайте страх с помощью «отмены» и «редактировать последнюю запись"\n\nОднотаповый опыт делает ошибки дорогостоящими. Сделайте восстановление лёгким.
Используйте большие цели касания и ясные промежутки, чтобы избежать ошибочных тапов
Предложите гаптику (лёгкая вибрация) для подтверждения действия без взгляда
Рассмотрите голосовой ввод для сценариев с занятыми руками (полевые работы, перчатки, ограниченная подвижность)\n\nНаконец, измеряйте «быстроту» простой метрикой: время от открытия приложения до сохранения лога. Если оно растёт по мере добавления функций, UX уходит от однотаповой идеи.\n\n## Выберите архитектуру и стек технологий\n\nОднотаповое приложение выигрывает за счёт скорости и надёжности, поэтому архитектура должна минимизировать задержки, избегать тяжёлых экранов и сохранять простой путь «лог → сохранено», даже когда появляются дополнительные фичи.\n\n### Выберите подход к платформе\n\nЕсли вы ориентируетесь сначала на одну экосистему, натив (Swift для iOS, Kotlin для Android) даёт лучший контроль над производительностью и системной интеграцией, например виджетами и быстрыми действиями.\n\nЕсли нужны iOS и Android одновременно, кросс‑платформенные решения тоже подходят для рабочих процессов мобильного логирования:
Flutter: согласованный UI, хорошая производительность, сильная история офлайн‑первого логирования.
React Native: быстрая итерация и большая экосистема, но придётся полагаться на нативные модули для «мгновенных" UX‑деталей.\n\nЕсли вы хотите прототипировать и быстро итератить перед полной нативной сборкой, платформа быстрой разработки типа Koder.ai может быть полезна: вы описываете однотаповый поток в чате, генерируете рабочее React‑web или Flutter‑приложение и быстро улучшаете UX — затем экспортируете исходники, когда готовы владеть и расширять проект.\n\n### Решите, какой бэкенд вам действительно нужен\n\nНачните с минимального бэкенда, который поддержит ваш кейс:
Только локально: проще всего; идеально для приватных трекеров привычек, где данные не покидают устройство.
Синхронизация: добавляет непрерывность между устройствами и бэкапы, но требует идентификации, обработки конфликтов и мониторинга.
Общий доступ в командах (полевые приложения): добавляет роли, журналы аудита и строгие права доступа.\n\nПрактическое правило: если вы не можете описать конфликты синхронизации в одном предложении, оставьте v1 локально‑первым.\n\n### Выберите локальное хранилище данных\n\nДля быстрого ввода локальное хранилище должно быть проверенным и простым:
iOS: Core Data или SQLite
Android: Room (SQLite)
Кросс‑платформенно: SQLite с локально‑первым слоем, если позже нужна простая синхронизация\n\nЭтот выбор формирует подход к вашей схеме БД для логирования, миграциям и производительности экспорта.\n\n### Оцените усилия по набору функций\n\nОднотаповое логирование — это маленькая функция; всё вокруг неё — нет. Ожидайте быстрого роста сложности при добавлении: вход + синхронизация, графики и сводки, экспорт (CSV/PDF), push‑уведомления, виджеты и события аналитики. Планируйте дорожную карту так, чтобы основной цикл «тап → сохранено" был завершён в первую очередь, затем добавляйте функции, не замедляя этот цикл.\n\n## Постройте простую гибкую модель данных\n\nВаша модель данных должна быть «скучной» в лучшем смысле: предсказуемой, лёгкой для запросов и готовой к будущим возможностям, таким как синхронизация, экспорт и сводки.\n\n### Основные таблицы/коллекции\n\nБольшинству приложений достаточно четырёх строительных блоков:
entries: собственно события логов (то, что создаётся одним тапом)
entry_types: типы записей (например: “Coffee”, “Headache”, “Site Visit”)
tags: опциональные метки для фильтрации и группировки (например: “Work”, “Travel”)
users (если есть): только если вы поддерживаете аккаунты, несколько профилей или синхрон между устройствами\n\nЗапись entry обычно хранит: entry_id, entry_type_id, created_at, опциональное value (число/текст), опциональное note, опциональные tag_ids и опциональное metadata (например точность местоположения или источник).\n\n### Идентификаторы, временные метки и мягкое удаление\n\nИспользуйте стабильные ID, которые можно создать офлайн (UUID — обычный выбор), а не сервер‑назначенные целые числа.\n\nДобавьте временные метки для:
created_at (когда пользователь зарегистрировал запись)
updated_at (когда что‑то в записи изменилось)\n\nДля удаления предпочтительнее soft‑delete поля вроде deleted_at (или is_deleted), а не физическое удаление записей. Это облегчает позднее разрешение конфликтов при синхронизации.\n\n### Производные значения: храните с целью\n\nДашборды часто нуждаются в итогах вроде «чашек в день». Вы можете вычислять их по сырым записям, что сохраняет данные чистыми. Храните производные поля (например day_bucket или entry_count_cache) только если действительно нужен прирост производительности — и убедитесь, что их можно пересчитать.\n\n### Планируйте миграции с первого дня\n\nПриложения эволюционируют: вы добавите поля, переименуете типы или поменяете поведение тегов. Используйте версионированные миграции, чтобы обновления не ломали существующие установки. Держите миграции маленькими, тестируйте их на реалистичных данных и всегда предоставляйте безопасные значения по умолчанию для новых колонок/полей.\n\n## Добавьте офлайн‑поведение и синхронизацию\n\nОднотаповое приложение должно предполагать ненадёжную сеть. Если пользователь нажал «Log», это должно сработать мгновенно — даже в режиме полёта — а затем синхронизироваться позже без его участия.\n\n### Сохраняйте тап локально моментально\n\nКэшируйте записи мгновенно; никогда не блокируйте тап ожиданием сетевых запросов. Рассматривайте локальную базу как источник истины в момент захвата: сохраните запись локально, обновите UI и позвольте слою синхронизации догонять в фоне.\n\nПрактичный паттерн — хранить у каждой записи syncState (например: pending, synced, error) плюс метки времени createdAt и updatedAt. Это даёт достаточно метаданных для синхронизации и обратной связи пользователю.\n\n### Очередь задач синхронизации, повторные попытки\n\nСтавьте задачи синхронизации в очередь и позвольте им безопасно повторяться (backoff, обработка конфликтов). Вместо «отправить сразу», помещайте лёгкую задачу, которая может выполниться, когда:
возвращается соединение
приложение открывается
ОС даёт фоновое время\n\nПовторы должны использовать экспоненциальный backoff, чтобы не разряжать батарею и не нагружать сервер. Держите задачи идемпотентными (безопасными при многократном выполнении), присваивая каждой записи стабильный уникальный ID.\n\n### Определите, как решать конфликты\n\nЗадайте правила разрешения конфликтов: last‑write‑wins или слияние по полям. Конфликты появляются, когда пользователь редактирует одну и ту же запись на двух устройствах или быстро нажимает тап, пока предыдущая синхронизация в ожидании. Для простых логов often подходит last‑write‑wins. Если запись имеет несколько полей (например, “mood” и “note”), рассмотрите слияние по полям, чтобы не затирать несвязанные изменения.\n\n### Показывайте статус синха без шума\n\nПоказывайте понятный статус синхронизации без отвлечения от логирования. Избегайте модальных окон. Небольшой индикатор (например, “Offline • 12 to sync”) или тонкая иконка в списке истории успокоят пользователя, что ничего не потеряно, сохраняя однотаповый поток быстрым.\n\n## Обеспечьте безопасность, приватность и управление разрешениями\n\nБыстрое логирование не должно означать небрежное обращение с личными данными. Однотаповое приложение часто собирает чувствительные сигналы (здоровье, привычки, местоположение), поэтому задайте ожидания заранее и проектируйте так, чтобы по умолчанию минимально раскрывать данные.\n\n### Запрашивайте минимум — в нужный момент\n\nМинимизируйте разрешения: запрашивайте местоположение/камеру только когда это нужно. Если основной поток — «тап, чтобы залогировать», не блокируйте первый запуск стеной разрешений.\n\nВместо этого объясняйте выгоду простым языком прямо перед использованием функции («Добавить фото к этой записи?»), и предоставляйте аккуратный обход («Пропустить пока»). Также подумайте, можно ли предложить грубое местоположение, ручной ввод или «только примерное время" для тех, кто хочет меньше слежения.\n\n### Защищайте данные в покое и в пути\n\nЗащищайте данные на устройстве (шифрование) и при передаче (HTTPS). Практически это значит:
хранить логи с использованием встроенных платформенных шифров, где доступно
шифровать особо чувствительные поля (заметки, теги), если вы управляете собственной локальной БД
использовать HTTPS для каждого сетевого запроса и избегать передачи сырых идентификаторов без крайней необходимости\n\nБудьте осторожны с «невидимыми" данными: отчёты о падениях, события аналитики и дебаг‑логи не должны включать содержимое пользовательских записей.\n\n### Опциональная блокировка приложения для чувствительных логов\n\nДобавьте опциональную блокировку паролем/биометрией для чувствительных записей. Сделайте её по желанию, чтобы не замедлять обычных пользователей, и добавьте быстрые настройки «блокировать при уходе в фон" для тех, кому это нужно. Если вы поддерживаете совместные устройства (семейный планшет, полевой девайс), подумайте о «приватном режиме", скрывающем превью в уведомлениях и в переключателе приложений.\n\n### Политики хранения, экспорта и удаления, которые вы можете выполнить\n\nОпишите ясный подход к хранению, экспорту и удалению данных (не давайте обещаний, которые не сможете выполнить). Укажите:
Что остаётся на устройстве vs что синхронизируется на сервер (если есть)
Как долго могут храниться бэкапы или серверные копии
Как пользователь может экспортировать свои логи в читаемом формате
Что означает удаление данных (устройство, облако, бэкапы)\n\nЯсность строит доверие — а доверие заставляет людей продолжать логировать.\n\n## Превратите логи в полезные сводки и экспорт\n\nОднотаповый регистратор оправдан, когда мелкие записи превращаются в ответы. Прежде чем проектировать графики, запишите вопросы, которые пользователи будут задавать чаще всего: «Как часто?», «Я последовательный?», «Когда это происходит?», «Каково типичное значение?» Стройте сводки вокруг этих вопросов, а не вокруг того, какой тип диаграммы проще нарисовать.\n\n### Сводки, отвечающие на реальные вопросы\n\nДержите вид по умолчанию простым и быстрым:
Частота: записей в день/неделю/месяц, плюс понятная динамика относительно предыдущего периода
Серии: текущая серия, самая длинная серия и мягкий индикатор «серия под угрозой», если актуально
Временные паттерны: небольшая гистограмма (утро/день/вечер) или почасовые бакеты
Средние и итоги: среднее в день, итого за неделю, min/max — только если в логе есть числовое поле\n\nЕсли вы поддерживаете несколько типов логов, показывайте метрики только там, где это уместно. Для да/нет привычки «среднее» не должно быть фронтовым показателем, а измеряемая запись — да.\n\n### Лёгкие фильтры\n\nФильтрация — это то, где инсайты становятся персональными. Поддерживайте несколько высокоценностных контролов:
Type (если есть несколько категорий)
Tag (пользовательские метки)
Период (последние 7/30/90 дней, кастом)
Location (только если вы её собирали и с ясным согласием)\n\nОтдавайте предпочтение предвычисленным агрегатам для популярных периодов, а подробные списки загружайте только при углублении.\n\n### Экспорт, которому можно доверять\n\nЭкспорт — это аварийный выход для продвинутых пользователей и бэкапов. Предложите:
CSV для таблиц
JSON для интероперабельности
опции шаринга через системный share sheet и вложение в письмо\n\nВключите таймзону, единицы измерения и небольшой словарь данных (названия полей и их смысл). Держите сводки лёгкими — они должны казаться мгновенными, а не порождать тяжёлый отчёт.\n\n## Добавьте напоминания, виджеты и быстрые действия\n\nНапоминания и ярлыки должны снижать трение, а не создавать шум. Цель — помочь людям логировать в нужный момент — даже не открывая приложение — при этом сохраняя опыт в одном тапе.\n\n### Напоминания, которые помогают\n\nИспользуйте локальные уведомления для напоминаний и follow‑up, когда сценарий выигрывает от временных подсказок (гидратация, лекарства, ежедневное настроение, полевые проверки). Локальные уведомления быстрые, работают офлайн и избегают проблем доверия, связанных с серверными пушами.\n\nДержите текст напоминаний конкретным и ориентированным на действие. Если платформа поддерживает, добавьте действия типа “Log now” или “Skip today”, чтобы пользователь мог завершить взаимодействие прямо из уведомления.\n\n### Умные подсказки (не спам)\n\nДобавьте лёгкие nudges, которые реагируют на поведение:
Напоминание о пропущенном дне: если кто‑то обычно логирует ежедневно и пропустил день, напомните один раз — потом остановитесь.
Подсказки по целям: если пользователь ставит цель (например 8 записей/неделя), мягко напомните при отставании.\n\nДелайте подсказки условными и с лимитом по частоте. Хорошее правило: не более одного «догоняющего" напоминания в день и никогда не складывать уведомления за один и тот же пропуск.\n\n### Дайте пользователям контроль: частота и «тихие часы"\n\nПредоставьте чёткие настройки для:
Частоты напоминаний (ежедневно, по рабочим дням, кастом)
Часов тишины / режима «не беспокоить"
Опциональных follow‑up (вкл/выкл)\n\nПо умолчанию выбирайте консервативные настройки. Пусть пользователи сами включают более частые напоминания.\n\n### Виджеты и ярлыки для настоящего однотапового логирования\n\nПоддержите виджет на домашнем экране (или на экране блокировки, где доступно) с одной крупной кнопкой Log и, опционально, 2–4 избранными типами логов. Добавьте быстрые действия (long‑press на иконку приложения) для тех же фаворитов.\n\nПроектируйте эти входные точки так, чтобы они вели прямо к завершённой записи или минимальному подтверждению — без лишней навигации.\n\n## Инструментируйте аналитику и отслеживание надёжности\n\nОднотаповое логирование выигрывает или проигрывает доверие: тап должен регистрироваться мгновенно, данные не должны исчезать, и приложение не должно удивлять пользователя. Лёгкая аналитика и отслеживание надёжности помогут вам подтвердить этот опыт в реальном использовании — без превращения приложения в инструмент слежки.\n\n### Определите только важные события\n\nНачните с маленького, намеренного списка событий, привязанного к основному потоку. Для однотапового приложения обычно достаточно:
Tap logged (включите тип лога и онлайн/офлайн состояние)
Undo и Edit (чтобы выявлять случайные тапЫ)
Sync success и Sync failure (включите категорию ошибки, а не сырые ответы сервера)
Export created (формат экспорта)\n\nИзбегайте сбора свободного текста, GPS, контактов или «про запас" метаданных. Если это не нужно для улучшения продукта — не трекайте.\n\n### Измеряйте производительность в терминах пользователя\n\nТрадиционные метрики не всегда показывают болевые точки в быстро вводимых приложениях. Добавьте измерения, которые соответствуют субъективному опыту:
Time-to-log: от тапa до подтверждающей обратной связи
Cold start time: запуск приложения до первого интерактивного экрана
Crash rate: краши на сессию (или на активного пользователя)\n\nОтслеживайте распределения (p50/p95), чтобы заметить, что небольшая группа испытывает плохой опыт.\n\n### Будьте прозрачны и уважительны\n\nОбъясняйте, что вы трекаете и зачем, простым языком в приложении (например, в Настройках). Предложите лёгкий отказ от аналитики, не связанной с надёжностью. Держите идентификаторы анонимными, периодически обновляйте их при необходимости и избегайте комбинирования данных так, чтобы можно было идентифицировать человека.\n\n### Добавьте отчёты об ошибках, которые помогают исправлять баги\n\nАналитика скажет «что-то не так»; отчёт об ошибке — «что и где». Фиксируйте:
исключения со stack trace
версия устройства/ОС/приложения
небольшой breadcrumb trail (последние экраны/действия), без личного контента\n\nОповещайте о всплесках в сбоях синхронизации и крашах, чтобы ловить крайние случаи быстро — до того, как они превратятся в плохие отзывы.\n\n## QA, юзабилити‑тесты и чеклист перед запуском\n\nОднотаповое логирование выигрывает в доверии: сработал ли тап, осталось ли всё быстро и предсказуемо ли поведение в реальных условиях. QA для такого приложения — это не экзотические кейсы, а повседневные моменты, когда люди действительно логируют — в движении, усталыми, офлайн или отвлечёнными.\n\n### Практический QA‑чеклист (реальные условия)\n\nТестируйте на нескольких устройствах и версиях ОС, но фокусируйтесь на сценариях, которые ломают доверие:
Офлайн‑режим: залогируйте несколько записей без соединения, закройте приложение, откройте, подключитесь и убедитесь, что всё синхронизировалось ровно один раз.
Режим полёта: UI не должен зависать при попытке синхронизации; сообщение «сохранено локально" должно быть ясным.
Низкий заряд / энергосбережение: фоновые синхры и напоминания должны деградировать аккуратно.
Мало места: приложение должно корректно обрабатывать ошибки записи в БД и не терять предыдущие логи; показать понятное сообщение при переполнении.
Приложение убито и возобновлено: тапните для лога, сразу силой закройте приложение, затем откройте — лог должен остаться.
note