Эффективное ведение дел или Obsidian + GTD
https://habr.com/ru/articles/743628/
7.1KУправление проектами*GTD*СофтЛайфхаки для гиковТуториал
Иногда сложно справиться с большим потоком задач и информации, особенно если это касается работы. Поэтому создание персональной базы знаний для своих текущих дел становится весьма актуальным. Но простая фиксация данных не всегда эффективна: легко потеряться в куче заметок. Различные методики помогают правильно организовать процесс. Вместе с тем информация не существует сама по себе, она, как правило, неразрывно связана со всеми нашими проектами, задачами и другими событиями. Если это учитывать, то проще оперировать данными, находить нужные факты. Через задачу легко выйти на связанную с ней информацию или, наоборот, через данные можно найти проект или задачу, в рамках которых они появились. Однако на практике все это будет эффективно работать, если получится создать единую среду для ведения дел и хранения всех связанных с ними данных.
Существующие приложения, как правило, не могут предоставить готовое решение для работы в таком контексте. Приходится придумывать или создавать что-то свое. Самое простое — это начать с каких-то стандартных заметочников, например Evernote или OneNote, и приспособить их под себя. Однако с появлением Roam-подобных программ пришло понимание, что можно создать очень гибкую систему, которую легко настроить под ведение любого вида задач, проектов и хранение различного типа связанной с ними информации. В этой статье познакомимся с примером настройки и практического использования маркдаун-заметочника Obsidian.md совместно с методологией Getting Things Done (GTD) Дэвида Аллена.
Все по-разному пытаются управлять своими делами. Чаще всего применяется простой подход: задачи ведутся в to-do-приложении или удерживаются в голове, а связанная с ними информация раскидывается весьма хаотично. Документы хранятся на диске или в облаке, обсуждения — в email или мессенджерах, заметки — на бумаге или в специализированных приложениях, ссылки на ресурсы — в браузере.
Возможны различные комбинации, но очевидно, что такой подход не слишком эффективен. Для ведения дел и хранения связанных данных удобно использовать один инструмент, например Obsidian. Это не обычный заметочник, как OneNote или Evernote, — он относится к Roam-подобным приложениям (Roam Research с начала 2020 года задал новый стандарт в классе). Основные отличительные возможности и полезные фишки такого типа приложений:
- Ссылки между заметками.
- Обратные ссылки (Backlinks).
- Визуализация связей между заметками (в виде графа).
- Markdown-разметка.
- Шаблоны заметок.
- Ежедневные заметки.
- Расширяемость через плагины.
Благодаря системе прямых и обратных ссылок, а также их визуализации стала возможна сетевая организация заметок вместо иерархической. Эта организация играет ключевую роль в описанном далее решении.
К Roam-подобным приложениям также относятся Logseq, Notion, RemNote, Foam, TiddlyWiki и другие — смотрите подробнее:
• What are the best knowledge base systems for personal use?
• My 2d Brain Networked Notebook App
Основные достоинства приложения Obsidian:
- Полностью бесплатное для персонального использования.
- Возможна работа в офлайне, данные хранятся локально на диске в текстовом формате.
- Удобный пользовательский интерфейс.
- Много плагинов.
- Большое сообщество.
- Работает на платформах Mac, Windows, Linux, iOS/Android.
В качестве методики управления делами будем использовать проверенную временем и до сих пор популярную систему Getting Things Done (GTD) Дэвида Аллена. Для более детального знакомства с GTD рекомендую статьи на Habr:
- GTD за 15 минут: прагматическое руководство
- Исчерпывающее руководство Getting Things Done (GTD) метода с примерами
- GTD. Мифы, ошибки, заблуждения
Общая концепция
Для начала рассмотрим общий вид будущего решения. Идея остается прежней — в рамках одного приложения реализовать ведение дел и хранение связанной с ними информации. В качестве управляющей системы использовать GTD.
В Obsidian определяем пять основных типов заметок:
- Inbox — заметка для фиксации идей, мыслей, планов и т. п.
- Task — задача. Единичное действие.
- Project — проект. Активность, требующая планирования. Состоит из одного и более действий.
- Meeting — встреча, собрание, то, что требует напоминания.
- Reference — справочные материалы.
- Согласно GTD, заметки Inbox являются источником для создания всех других типов заметок. Справочные материалы (Reference) рождаются в процессе работы и связываются с конкретными задачами, проектами или другими элементами.
Никакой иерархии не существует, все заметки находятся на одном уровне и связываются между собой через линки.
Заметки в Obsidian будут создаваться не напрямую, а через шаблоны. Для каждого типа заметки свой шаблон. В нем определяется структура заметки, тег типа и при необходимости дополнительные элементы.
Тегами типов заметок будут inbox, project, task и т. д. Для некоторых типов, например для task или reference, добавляются подтипы (через вложенные теги).
Для task вложенные теги определяют вид действия:
- task/now — выполнить сейчас;
- task/next — потом/отложить;
- task/waiting — поручено/контроль;
- task/someday — когда-нибудь/может быть.
Также в Obsidian потребуется установить и настроить три комьюнити-плагина: obsidian-dataview, obsidian-checklist-plugin и obsidian-reminder. Необходимы для визуализации в интерфейсе приложения:
- панель с активными проектами;
- панель с активными задачами, сгруппированными по виду действия;
- панель с событиями, требующими напоминания о времени.
По итогам всех настроек алгоритм работы в Obsidian будет выглядеть следующим образом:
- Создать новую заметку.
- Применить к заметке шаблон выбранного типа.
- Заполнить заметку, установить связи с другими заметками.
- Просматривать и управлять задачами/проектами на боковых панелях (плагины).
- Получать напоминания о предстоящих событиях.
Настройка конфигурации Obsidian
Для тех, у кого нет времени или желания настраивать вручную, я подготовил хранилище Vault Obsidian и выложил на GitHab obsidian_gtd_vault. Vault настроен и заполнен первичными данными. Можно подключить хранилище, все примеры в статье приводятся на его основе.
- Проверяем, что в разделе «Встроенные плагины» (Core plugins) подключены:
- Панель тегов (Tags).
- Шаблоны (Templates).
- Избранное (Bookmarks).
- В Сторонних плагинах (Community plugins) находим и устанавливаем плагины:
- Dataview (obsidian-dataview).
- Checklist (obsidian-checklist-plugin).
- Reminder (obsidian-reminder).
- В настройках плагина «Шаблоны» указываем путь к папке с шаблонами, например Templates.
- В настройках плагина Checklist:
- В Tag Name устанавливаем два значения — task и project (каждое значение в отдельной строке).
- В Group By выбираем Tag.
- В Group Sort выбираем “A -> Z”.
- В Include Files указываем
!Templates/**
. - В пункте настроек «Файлы и ссылки» (File & Links):
- В списке «Место для вложенных файлов по умолчанию» (Default location for new attachments) выбираем значение «В папке, указанной ниже» (In subfolder under current folder).
- В текстовом поле «Путь к папке для вложенных файлов» (Subfolder name) указываем Attachments.
- Завершаем настройки и возвращаемся в главное окно программы:
В итоге должно получиться примерно так:
Настройка шаблонов Obsidian
Создадим пять шаблонов для каждого из типа заметок. Напомню, это:
- Inbox — заметка для фиксации идей, мыслей, планов и т. п.
- Task — задача, подразумевает единичное действие.
- Project — проект, состоит из одного и более действий.
- Meeting — встреча, собрание, то, что требует напоминания.
- Reference — справочные материалы.
Шаблоны — это обычные заметки, размещаются в директории Templates файлового менеджера.
В шаблонах будет, в частности, использоваться функциональность плагина Dataview. Плагин позволяет формировать представления на основе запросов к заметкам Obsidian. Общий формат запросов такой:
```dataview <QUERY-TYPE> <fields> FROM <source> <DATA-COMMAND> <expression> <DATA-COMMAND> <expression> ... ```
Сделаем так, чтобы в каждой нашей заметке мы сразу видели все ее обратные (backlinks) и исходящие (outgoing) ссылки. Для этого в шапку всех шаблонов добавляем следующий dataview-запрос:
```dataview TABLE without id file.outlinks AS "OUTGOING", file.inlinks AS "BACKLINKS" WHERE file.name = this.file.name ```
Очень удобно видеть всю информацию о ссылках непосредственно в документе. Также это сэкономит место в интерфейсе, так как панели для входящих/исходящих ссылок можно будет убрать.
Если кому-то важно видеть в заметке дату ее создания и последней модификации, то можно добавить еще такой запрос:
```dataview TABLE without id dateformat(this.file.ctime, "dd.MM.yyyy HH:mm") as created, dateformat(this.file.mtime, "dd.MM.yyyy HH:mm") as "last modified" WHERE file.name = this.file.name ```
Далее определим шаблоны для каждого типа заметки, названия шаблонов будут совпадать с типами. Все шаблоны обязательно должны находиться в созданной нами директории Templates.
Шаблон Task
```dataview TABLE without id file.outlinks AS "OUTGOING", file.inlinks AS "BACKLINKS" WHERE file.name = this.file.name ``` #task/now %% now | next | waiting | someday %% - [ ] {{title}} # Links # Description
В тексте шаблона могут присутствовать комментарии (не отображаются в режиме просмотра документа). Комментарий начинается и заканчивается двойным символом процента: %%. В примере присутствует комментарий с перечислением всех возможных подтипов задачи.
- Тег, обозначающий вид действия (по умолчанию всегда task/now — выполнить сейчас).
- Чекбокс
- []
для фиксации статуса заявки: активная/завершена. - Переменная {{title}}. В момент применения шаблона подменяется на заголовок заметки.
- Два раздела — Links (для размещения ссылок на внешние или внутренние ресурсы) и Descriptions (описание, текст заметки).
Здесь и далее шаблоны имеют упрощенный вид, и их можно и нужно подстраивать под себя. Однако чекбоксы и теги должны оставаться в исходном виде.
Шаблон Project
```dataview TABLE without id file.outlinks AS "OUTGOING", file.inlinks AS "BACKLINKS" WHERE file.name = this.file.name ``` #project - [ ] {{title}} # Todo List > [!todo] Active > ```dataview > TASK > FROM [[]] > WHERE !completed > SORT file.ctime desc > ``` > [!todo] Completed > ```dataview > TASK > FROM [[]] > WHERE completed > SORT file.ctime desc > LIMIT 30 > ``` # Links # Description
Шаблон проекта аналогичен предыдущему, обозначается тегом project. Дополнительно в нем присутствует раздел Todo List, в котором через Dataview отображается список активных (Active) и завершенных (Completed) задач, ссылающихся на проект.
Шаблон Meeting
```dataview TABLE without id file.outlinks AS "OUTGOING", file.inlinks AS "BACKLINKS" WHERE file.name = this.file.name ``` #meeting - [ ] {{title}} (@{{date}} {{time}}) # Links # Attendees # Agenda %% Write down the nain topic to discuss %% # Notes %% Cover any key information disscused in the meeting %%
Шаблон для встреч, собраний обозначается тегом meeting. В конце строки с чекбоксом присутствует набор значений (@{{date}} {{time}})
:
{{date}} {{time}})
— переменные, автоматически подменяются текущей датой и временем в формате YYYY-MM-DD HH:MM.(@...)
— относится к функциональности плагина Reminder. Более подробно смотрите документацию. Внутри скобок указывается точная дата и время события, которое отображается на панели Reminders, и в назначенный час в интерфейсе Obsidian сработает напоминание.
Шаблон Inbox и Reference
Последние два шаблона самые простые. Содержат только соответствующий тег inbox или reference и какие-то дополнительные разделы. Настраиваются по собственному усмотрению.
#inbox # Description
```dataview TABLE without id file.outlinks AS "OUTGOING", file.inlinks AS "BACKLINKS" WHERE file.name = this.file.name ``` #reference # Links # Description
Как это все работает
А теперь разберемся, как будет выглядеть работа в Obsidian после всех настроек. Логика работы так или иначе должна соответствовать базовым принципам Get Things Done.
Inbox
Создаем заметку и применяем к ней шаблон Inbox, когда нужно зафиксировать какие-то мысли, идеи, дела, планы.
Рекомендую в настройках Obsidian перейти в раздел «Сочетание клавиш» (Hotkeys) и в пункте «Шаблоны: вставить шаблон» (Templates: Insert template) задать клавиши для быстрой вставки шаблона.
Данный шаг можно пропустить (сразу перейти к созданию Task, Project или др.), если есть полное понимание, что делать с данными, и есть время для их обработки прямо сейчас.
Периодически обрабатываем накопленные в Inbox заметки. На их основе создаем новые заметки Task (задача), Project (проект), Reference (справочные материалы), Meeting (встреча). Неактуальные inbox-заметки удаляем.
Для контроля inbox-заметок можно создать пустую заметку Inbox Notes (добавить в «Избранное») и разместить в ней dataview-запрос, который отображает все существующие inbox-заметки:
```dataview LIST FROM #inbox and -"Templates" ```
Task
Для каждой задачи создаем заметку и применяем к ней шаблон Task. В зависимости от того, нужно ли приступить к выполнению сразу, потом или делегировать, меняем тег на task/now, task/next или task/wait соответственно. Если не требуется немедленных действий, но, может быть, когда-нибудь мы еще вернемся к этой работе, исправляем тег на task/someday.
Project
Если предполагаются комплексные работы с необходимостью планирования, создаем заметку из шаблона Project.
В рамках планирования для каждого шага проекта создаем отдельные задачи (шаблон Task). Для связи задач с проектом во всех задачах в разделе Links указываем markdown-ссылку на проект [[имя проекта]]
.
Если одну из задач отметить выполненной и вернуться на страницу проекта, то в разделах Active и Completed (Dataview) отобразятся все активные и завершенные задачи, связанные с проектом. В Backlinks увидим список заметок, ссылающихся на проект. В интерфейсе на боковой панели плагина Checklist (Todo List) отобразятся активные проекты и задачи, сгруппированные по виду действия.
Meeting
Если планируется встреча или собрание, создаем заметку из шаблона Meeting.
К сожалению, встроенной в Obsidian функциональности напоминаний не существует. Реализуется через комьюнити-плагины, например Reminder. В панели компонента отображается список запланированных событий, а в установленное время в интерфейсе появляется окно с напоминанием.Дата и время события прописывается в заметке в строке с чекбоксом в формате (@YYYY-MM-DD HH:mm)
. Формат меняется в настройках плагина.
Reference
Если данные являются справочной информацией, фиксируем их в заметке (шаблон Reference).
Для большей гибкости и удобства в Reference лучше всего добавить подтипы. Тогда для каждого подтипа потребуется сделать отдельный шаблон. Например, шаблон Ref-Person — для фиксации информации по людям (тег reference/person), Ref-Instruction — для инструкций (reference/instruction), Ref-document — для документов (reference/document) и т. д.
Рассмотрим пример с Ref-Person (reference/person). Через шаблон создаются заметки, каждая из которых соотносится с конкретным человеком. Тогда появляется возможность линковать задачи, проекты, встречи с конкретными исполнителями, участниками. Это удобно: так, в заметке «человека» в обратных ссылках (Backlinks) будет присутствовать вся информация о делах, в которых он был когда-либо задействован.
В качестве префикса в заголовке заметки Person лучше всего подставлять символ @ — это позволит быстро находить людей в списке.
В заметке персоны можно фиксировать любую дополнительную информацию о человеке в тексте или во frontmatter (также см. Metadata). Данные из всех frontmatter визуализируются через Dataview, например, так:
```dataview TABLE phone, department, position_ FROM #reference/person and -"Templates" SORT file.name ```
Best practice
Горячие клавиши
Рекомендую изучить и подстроить под себя сочетания клавиш (Hotkeys) для работы в интерфейсе. Это значительно повысит удобство и скорость работы. Базовые сочетания, которые могут пригодиться (Windows):
Ctrl + ,
— открыть настройки.Ctrl + N
— создать новую заметку.- Вставка шаблона в заметку — задать в настройках, придумать сочетание.
Ctrl + Alt + <-
— вернуться.Ctrl + E
— переключиться между режимами редактирования и просмотра.Ctrl + O
— меню быстрого перехода, поиск по заголовкам заметок.Ctrl + Shift + F
— глобальный текстовый поиск по содержимому заметок.
Избранное
В системе можно создавать заметки, не связанные с задачами, проектами или встречами. Чтобы они не потерялись, их следует заносить в избранное. Своего рода аналог закрепленных сообщений. Отображаются на панели Boolmarks. Например, это могут быть заметки, содержащие:
- данные о важных ресурсах, веб-ссылки;
- справочную информацию;
- дашборды с динамическими отчетами, формируемыми через плагин Dataview.
Как пример дашборда, можно создать заметку с Dataview, полностью воспроизвести функциональность плагина Checklist (панель Todo List).
> [!note] Meetings > ```dataview > task > from #meeting and -"Templates" > where !completed > sort file.ctime desc > [!important] Projects > ```dataview > task > from #project and -"Templates" > where !completed > sort file.ctime desc > [!todo] Tasks >> [!todo] Now >> ```dataview >> task >> from #task/now and -"Templates" >> where !completed >> sort file.ctime desc >> ``` > >> [!todo] Next >> ```dataview >> task >> from #task/next and -"Templates" >> where !completed >> sort file.ctime desc >> ``` > >> [!todo] Waiting >> ```dataview >> task >> from #task/waiting and -"Templates" >> where !completed >> sort file.ctime desc >> ``` > >> [!todo] Someday >> ```dataview >> task >> from #task/someday and -"Templates" >> where !completed >> sort file.ctime desc > [!done] Completed > ```dataview > task > from #task > where completed > sort file.ctime desc > limit 10 > ```
Внедряемый контент
Obsidian позволяет через обычную вставку внедрять контент из других файлов или даже веб-источников (через <iframe>). Это помогает сделать контент заметки более живым и понятным. Поддерживаются различные форматы.
Есть возможность рисовать схемы, диаграммы, которые также внедряются в текст заметки. Это можно делать через плагины:
- Excalidraw (obsidian-excalidraw-plugin)
- Diagrams (drawio-obsidian)
- PlantUML (obsidian-plantuml)
- Mermaid Diagrams (встроенный плагин)
Заметки в виде графа
В интерфейсе можно визуализировать заметки (Graph view) в виде неориентированного графа, где вершины — это заметки, а ребра — это связи (линки) между заметками. Как это использовать, исходя из текущего контекста, каждый решает сам. Однако какой-то смысл в этом есть. При накоплении большого количества данных наверняка получится увидеть интересные взаимосвязи между задачами, проектами, информацией.
У Graph view много настроек отображения — в частности, можно задать цвет заметок (вершин графа) в зависимости от условий, например по тегам.
Заключение
Obsidian — это действительно очень интересный и разносторонний инструмент. Можно сказать, «комбайн» заметок, легко настраиваемый под разные цели. Этому очень способствует большой набор комьюнити-плагинов. Есть мобильное приложение. Правда, трудность освоения Obsidian чуть выше, чем других приложений, но, уверен, оно того стоит.
Предложенное в статье решение является основой для настройки под свои потребности и способы ведения дел. Существуют другие плагины, с которыми можно поэкспериментировать в контексте статьи и при необходимости подстроить под себя:
- Tq-obsidian
- obsidian-tasks
- Obsidian TODO Plugin
- Kanban
- Daily Notes (встроенный плагин), легко встраивается в концепцию управления задачами
Надеюсь, статья была полезна всем, кто интересуется темой, или даже новичкам.