July 24, 2023

Эффективное ведение дел или Obsidian + GTD

https://habr.com/ru/articles/743628/

Средний

12 мин

7.1KУправление проектами*GTD*СофтЛайфхаки для гиковТуториал

Иногда сложно справиться с большим потоком задач и информации, особенно если это касается работы. Поэтому создание персональной базы знаний для своих текущих дел становится весьма актуальным. Но простая фиксация данных не всегда эффективна: легко потеряться в куче заметок. Различные методики помогают правильно организовать процесс. Вместе с тем информация не существует сама по себе, она, как правило, неразрывно связана со всеми нашими проектами, задачами и другими событиями. Если это учитывать, то проще оперировать данными, находить нужные факты. Через задачу легко выйти на связанную с ней информацию или, наоборот, через данные можно найти проект или задачу, в рамках которых они появились. Однако на практике все это будет эффективно работать, если получится создать единую среду для ведения дел и хранения всех связанных с ними данных.

Существующие приложения, как правило, не могут предоставить готовое решение для работы в таком контексте. Приходится придумывать или создавать что-то свое. Самое простое — это начать с каких-то стандартных заметочников, например Evernote или OneNote, и приспособить их под себя. Однако с появлением Roam-подобных программ пришло понимание, что можно создать очень гибкую систему, которую легко настроить под ведение любого вида задач, проектов и хранение различного типа связанной с ними информации. В этой статье познакомимся с примером настройки и практического использования маркдаун-заметочника Obsidian.md совместно с методологией Getting Things Done (GTD) Дэвида Аллена.

Все по-разному пытаются управлять своими делами. Чаще всего применяется простой подход: задачи ведутся в to-do-приложении или удерживаются в голове, а связанная с ними информация раскидывается весьма хаотично. Документы хранятся на диске или в облаке, обсуждения — в email или мессенджерах, заметки — на бумаге или в специализированных приложениях, ссылки на ресурсы — в браузере.

Возможны различные комбинации, но очевидно, что такой подход не слишком эффективен. Для ведения дел и хранения связанных данных удобно использовать один инструмент, например Obsidian. Это не обычный заметочник, как OneNote или Evernote, — он относится к Roam-подобным приложениям (Roam Research с начала 2020 года задал новый стандарт в классе). Основные отличительные возможности и полезные фишки такого типа приложений:

Благодаря системе прямых и обратных ссылок, а также их визуализации стала возможна сетевая организация заметок вместо иерархической. Эта организация играет ключевую роль в описанном далее решении.

К 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.

В 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 настроен и заполнен первичными данными. Можно подключить хранилище, все примеры в статье приводятся на его основе.

Заходим в настройки Obsidian:

  1. Проверяем, что в разделе «Встроенные плагины» (Core plugins) подключены:
  2. В Сторонних плагинах (Community plugins) находим и устанавливаем плагины:
  3. В настройках плагина «Шаблоны» указываем путь к папке с шаблонами, например Templates.
  4. В настройках плагина Checklist:
    • В Tag Name устанавливаем два значения — task и project (каждое значение в отдельной строке).
    • В Group By выбираем Tag.
    • В Group Sort выбираем “A -> Z”.
    • В Include Files указываем !Templates/**.
  5. В пункте настроек «Файлы и ссылки» (File & Links):
    • В списке «Место для вложенных файлов по умолчанию» (Default location for new attachments) выбираем значение «В папке, указанной ниже» (In subfolder under current folder).
    • В текстовом поле «Путь к папке для вложенных файлов» (Subfolder name) указываем Attachments.
  6. Завершаем настройки и возвращаемся в главное окно программы:
    • На панели файлового менеджера (Files) создаем две корневые папки — Templates и Attachments (названия папок должны совпадать с заданными в настройках в п. 3 и 5).
    • Компонуем боковые панели интерфейса по собственному вкусу. Ненужные удаляем.

В итоге должно получиться примерно так:

Настройка шаблонов 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).

Todo List dataview

> [!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>). Это помогает сделать контент заметки более живым и понятным. Поддерживаются различные форматы.

Есть возможность рисовать схемы, диаграммы, которые также внедряются в текст заметки. Это можно делать через плагины:

Заметки в виде графа

В интерфейсе можно визуализировать заметки (Graph view) в виде неориентированного графа, где вершины — это заметки, а ребра — это связи (линки) между заметками. Как это использовать, исходя из текущего контекста, каждый решает сам. Однако какой-то смысл в этом есть. При накоплении большого количества данных наверняка получится увидеть интересные взаимосвязи между задачами, проектами, информацией.

У Graph view много настроек отображения — в частности, можно задать цвет заметок (вершин графа) в зависимости от условий, например по тегам.

Заключение

Obsidian — это действительно очень интересный и разносторонний инструмент. Можно сказать, «комбайн» заметок, легко настраиваемый под разные цели. Этому очень способствует большой набор комьюнити-плагинов. Есть мобильное приложение. Правда, трудность освоения Obsidian чуть выше, чем других приложений, но, уверен, оно того стоит.

Предложенное в статье решение является основой для настройки под свои потребности и способы ведения дел. Существуют другие плагины, с которыми можно поэкспериментировать в контексте статьи и при необходимости подстроить под себя:

Надеюсь, статья была полезна всем, кто интересуется темой, или даже новичкам.

Теги:

Хабы: