1. 개요

요즘 메모와 글쓰기를 위한 앱과 서비스들이 너무나 다양합니다. 앱마다 특색이 다르고, 지향하는 방향도 다릅니다. 그렇다보니, 한 서비스 안에서 모든걸 처리하기 보다는 각 서비스의 개성을 파악해 본인의 Workflow에 맞는 몇개의 서비스를 선택해 사용하는 것이 유리합니다.

이 글에서는 아이디어와 일상을 메모로 기록하기, 메모 정리하기, 메모를 글로 다시쓰기 등 각 단계별로 어떤 서비스들을 사용하면 좋을지에 대해 소개하고자 합니다.

2. 아이디어 기록

갑자기 떠오른 아이디어를 놓치지 않기 위해서는 빠르고 간편하게 기록할 수 있는 모바일 앱이 필요합니다. 그와 동시에, 기록한 아이디어를 다시 점검하고 발전시키기 위해 데스크탑 환경에서도 동일한 서비스를 사용할 수 있어야 합니다.

Simplenote

오로지 텍스트만 저장할 수 있는 간단한 노트앱입니다. Wordpress로 유명한 Automattic의 무료 서비스이며, 거의 모든 플랫폼의 모바일앱과 데스크탑앱을 안정적으로 지원하고 있습니다.

저는 떠오른 아이디어를 임시로 저장하는 Inbox 용도로 사용하고 있습니다. 받은 편지함에 읽지 않은 편지가 없게끔 하라는 Inbox Zero 철학에 따라, Simplenote에 저장된 대부분의 메모는 주기적으로 정리되어 사라지게 됩니다.

3. 일상의 기록

일상의 기록은 아이디어 기록과 마찬가지로 빠르고 간편하게 사용할 수 있는 모바일앱이 필요합니다. 데이터 백업을 위한 Export 기능은 반드시 필요하지만, 다수의 기기와 동기화할 필요는 없습니다.

Bear

Bear는 앞서 소개한 Simplenote 보다는 기능이 조금 더 많고 디자인이 좋습니다. 특히 마크다운 편집화면을 편리하고 예쁘게 만들어 놓았습니다. 다만, iOS와 macOS만 지원하는 것이 유일한 단점입니다.

저는 서울비님의 글에서 힌트를 얻어, iOS의 Shortcut 기능을 활용해 Journal 전용으로 사용하고 있습니다. Journal Shortcut을 아이폰에 설치하고 실행하면 작은 팝업창이 열리는데, 여기에 글을 적으면 아래와 같이 저장됩니다. 과거에는 DayOne이나 Diaro Pro를 이용했지만, 지금은 Bear와 Shortcut으로 아주 간편하게 일상을 기록하고 있습니다.

# Journal 2020-09

## 2020-09-20 11:23
첫번째 입력

## 2020-09-20 11:25
두번째 입력

Bear를 무료로 사용하려면 기기간 데이터 동기화는 포기해야 합니다. 월 2,000원, 연 18,000원을 지불하면 다수의 기기와 데이터를 동기화할 수 있는데, Journal 용도로만 사용한다면 동기화가 꼭 필요하진 않으므로 무료로 사용할 수 있습니다. 데이터 백업을 위한 Export 기능은 무료 사용자에게도 제공됩니다.

4. 메모 정리하기

기록한 메모를 다시 살펴보지 않는다면, 그 메모는 아무런 의미가 없습니다. Simplenote와 Bear에 새롭게 추가된 메모를 주기적으로 살펴보고 정리하며, 잊혀져가는 기억을 되새겨보는 습관을 들이는 것이 좋습니다.

여기서 한 발 더 나아가, Building a Second Brain의 차원에서 Zettelkasten 방식을 도입해 자신만의 지식체계를 구축할 수도 있습니다.

Zettelkasten

Zettelkasten은 Slip-Box의 독일어로, 인덱스 카드(slip)를 모아놓은 상자(box)라는 의미입니다. Zettelkasten의 중요한 규칙은, 한 장의 인덱스 카드에는 단 한가지 주제에 대해서만 기술해야 한다는 것입니다. 각 카드의 고유 번호를 이용해 관련 있는 다른 인덱스 카드를 참조할 수도 있습니다. 이쯤되면, ‘어? 그거 위키랑 비슷한데?’ 라는 생각이 드실겁니다.

맞습니다. Zettelkasten은 아나로그 시대의 개인위키였다고 볼 수 있습니다. 요즘 우리는 위키위키의 창시자인 Ward Cunninghamc2.com은 모르더라도, 위키페디아나무위키 덕분에 위키에 대해서 아주 익숙합니다. 그런데, 2017년 출간된 How to Take Smart Note를 통해 Zettelkasten이 재조명되었고, Zettlekasten을 디지털로 구현한 서비스들이 늘어나기 시작했습니다.

물론, 오래전부터 MediaWikiDokuWiki를 개인위키로 사용해온 분들도 많고, HTML 파일 하나로 작동하는 TiddlyWiki의 인기도 여전합니다. 그러나 최근에는 Roam Research, Obsidian 등 웹과 데스크탑에서 개인위키를 구현한 서비스들이 많이 등장하고 있습니다. 꼭 위키 형태가 아니더라도, 소규모 프로젝트 관리에 사용되는 칸반보드 컨셉의 Trello를 이용해 Zettelkasten을 구현하는데 활용하는 예시도 있습니다.

저는 Zettelkasten 구현을 위해 여러가지 서비스들을 사용해 보았는데, 최종적으로 3가지의 서비스를 이용하기로 했습니다.

Github

Github는 소스코드 버전관리 및 저장소를 제공하는 서비스입니다. 많은 오픈소스 프로젝트들이 Github에서 개발되고 있습니다. 2019년부터 무료 사용자도 자료가 외부에 공개되지 않는 private 저장소를 만들 수 있게 되면서 활용도가 더 커졌습니다.

저는 Zettelkasten를 구현하기 위해 Github에 private 저장소를 만들어 노트를 저장하고 있습니다. Slip을 저장하는 Box가 곧 Github 저장소인 셈이죠. 이렇게 하면 특정 서비스에 종속되지 않고, 모든 노트를 자신의 PC와 Github에 저장할 수 있게 됩니다. Github에 올려놓은 자료는 Github 모바일 앱으로 어디서나 확인할 수 있어 좋습니다.

Github의 개념과 사용법이 익숙하지 않다면, Github에서 제공하는 Guide를 먼저 보시면 좋겠습니다. 윈도우와 맥에서는 Github Desktop을 이용하면 Github에 명령어를 직접 입력하지 않고도 자료를 손쉽게 저장할 수 있습니다.

참고로, Github의 private 저장소는 Zettelkasten 외에도 Hugo로 렌더링할 블로그 파일들이나, 각종 설정파일 모음(dotfiles) 등 다양한 개인자료 저장용으로 활용할 수 있습니다.

Zettlr

Zettlr는 데스크탑용 오프라인 마크다운 에디터입니다. Electron으로 개발되어 윈도우를 비롯해 맥과 리눅스 환경을 모두 지원합니다.

Zettlr 사용법은 단순한 텍스트 편집기로 생각하고 접근하면 쉽습니다. 앞서 언급한 Github의 저장소 디렉토리를 Zettlr의 프로젝트 디렉토리로 열어 노트를 마크다운 파일(.md)로 작성하면 됩니다. 마크다운 문법이 익숙하지 않다면 CommonMark에서 제공하는 Tutorial을 따라해 보시면 도움이 되실겁니다.

Zettlr의 장점은, Zettlr를 이용해 Zettlekasten을 구현하는 과정에 Zettlr에 대한 의존성이 거의 생긴다는 않는다는 것입니다. 다시 말해, Zettlr를 쓰다가 어느날은 Visual Studio CodeObsidian를 사용해도 아무런 지장이 없습니다.

참고로, Zettlr는 파일명으로 위키링크를 인식하는 기본기능 외에도, 파일명 변경에 대비해 파일명 대신 노트 본문에 입력한 고유한 식별번호를 이용해 위키링크로 인식시킬 수 있습니다. 그러나, 아래에서 소개할 Gollum은 위키링크를 파일명으로 매칭하기 때문에 노트 본문에 식별번호를 넣는 Zettlr의 기능은 사용하지 않습니다.

Gollum

Gollum은 반지의 제왕에 나오는 그 골룸이 맞습니다. Gollum은 Ruby로 작성된 오픈소스 프로그램인데, Github의 위키 시스템을 구현하는 것에서 출발해 최근까지도 프로젝트가 진행되고 있습니다.

Gollum은 별도의 데이터베이스를 사용하지 않고, 파일시스템에서 데이터를 읽어와 위키 웹사이트로 만들어주는 역할을 합니다. 보다 정확히 말하면, 데이터를 읽어오는 곳은 단순한 파일시스템이 아닌 Git 저장소입니다. 따라서, 추가/수정/삭제시 Commit 절차를 자동으로 거치기 때문에, 모든 변경사항에 대한 이력을 남길 수 있어 좋습니다.

사실 Github에서 저장소를 만들어도 위키가 기본적으로 제공됩니다만, 아쉽게도 무료 사용자는 public 저장소에서만 위키를 사용할 수 있습니다. 참고로, Github와 달리 BitBucket에서는 private 저장소에도 위키를 제공합니다. 하지만 말그대로 프로젝트를 위한 위키 기능이기 때문에 Zettelkasten을 구현하는 측면에서는 Gollum이 더 적합한것 같습니다.

Github에서 private 저장소를 사용하기로 했다면, Oracle Cloud Free Tier와 같은 별도 서버에 Gollum을 설치해 두고, 데이터는 Github에서 끌어와 위키 웹사이트를 보여주도록 하면 됩니다. Github의 데이터 변경시에는 Github 서버가 SSH로 Gollum 서버에 접속해 Github의 저장소를 pull 하도록 Action을 만들어 두면 됩니다.

Gollum은 기본적으로 사용자 인증 기능이 없다보니, 누구나 글을 작성하고 수정할 수 있는 상태입니다. 이러면 개인위키라 볼 수도 없고, private 저장소를 활용하는 잇점 또한 전혀 없습니다. 따라서, Google Developers Console이나 Github Developer Settings에 OAuth 2.0 인증을 해주도록 설정하고, Gollum 설정파일(config.rb)에 OmniGollum 기능을 추가해 주시면 됩니다.

덧붙여, Git 데이터를 위키 웹사이트로 보여주는 프로그램은 Gollum 외에도 Node.js로 만들어진 Jingo도 있는데, Gollum 대비 두가지 단점이 있습니다.

  1. 디렉토리 구조를 전혀 지원하지 않으며,

  2. 위키링크에 빈칸을 넣으면 하이픈(-)으로 대체합니다. 예를들어, Jingo는 [[빈칸이 들어간 파일]]라는 위키링크에 해당하는 실제 파일명은 빈칸이-들어간-파일.md이어야 합니다. Gollum은 위키링크에 빈칸을 넣으면 파일도 빈칸이 들어간 파일.md이면 됩니다.

Bear

만약 데스크탑에서 macOS를 사용하시고, Github와 친숙하지 않으신 분이라면 메모용으로 사용했던 Bear를 Zettelkasten 용도로도 사용하실 수 있습니다. Bear는 장점이 너무나 많은 서비스인데, 그중에 [[위키링크]] 지원이 있기 때문입니다. 메모/글쓰기/생산성 분야의 블로그인 MentalPivot에서도 애플 사용자라면 Zettelkasten 구현에 Bear를 추천하고 있습니다.

5. 글 작성하기

메모를 정리했다면, 그중에 한 개의 메모나 여러개의 메모를 모아 블로그 등에 포스팅할 글로 작성하고 싶을 때가 있습니다. 꼭 블로그와 같이 외부에 공개되는 것이 아니더라도, 메모를 심도있게 정리해 자신만의 언어로 글을 작성하는 것은 여러모로 도움이 됩니다.

앞서 언급한 How to Take Smart Note에서도 순간적으로 떠오른 아이디어를 놓치지 않기 위해 임시로 짧막한 메모(Fleeting Notes)를 먼저 작성하고, 차후에 자신만의 언어로 다시 정리(Permanent Notes)하면 활용가치가 높은 아이디어를 얻을 수 있을 것이라 합니다.

Microsoft To-do

메모와 글쓰기 앱을 소개하던 중간에 To-do가 등장한 이유는, 메모에서 글쓰기로 넘어가는 과정의 Workflow를 자연스럽게 이어주기 때문입니다. 예를들어, Simplenote와 Bear에 새롭게 추가된 메모를 정리하다 조금 더 심도있게 글을 작성하고자 할 경우, 메모를 To-do에 옮겨놓고 편안한 시간에 마무리하는 것입니다.

Microsoft To-do는 독일에서 만들었던 Wunderlist를 Microsoft가 인수한 것입니다. 당시Wunderlist는 군더더기 없는 깔끔한 기능이 특징이었는데, Microsoft에 인수되어 몇가지 기능이 추가된 후에도 원래의 특징은 여전히 유지되고 있습니다.

Dynalist / Workflowy

Dynalist와 Workflowy는 온라인 아웃라이너 서비스입니다. 아웃라이너는 글의 초안을 작성할때 문단의 구조를 계층적으로 구성하는데 사용됩니다. 지금 이 글도 Microsoft To-do에서 약 2주간 아이디어 메모로 머물렀다가, 주말을 이용해 Dynalist에서 작성되고 있습니다.

Dynalist와 Workflowy는 단순히 아웃라이너 수준에서만 사용하는 서비스는 아닙니다. 글의 구조를 잡아가는 중간에 떠오르는 아이디어로 살을 붙이고, 최종적으로 본문을 작성하는데도 큰 불편함이 없습니다. 특히나 데스크탑에서 작성하던 글을 랩탑이나 핸드폰, 또는 테블릿에서 계속해서 이어나갈 수 있다는 점이 매우 편리합니다.

Dynalist나 Workflowy로 본문까지 작성할때 팁이라면, 마크다운으로 소제목을 의미하는 ##, ### 등을 미리 붙여두면, 글을 완성한 후 ‘들여쓰기 없는 텍스트 형식’으로 Export 했을때 곧바로 사용할 수 있는 마크다운 파일을 얻을 수 있습니다

Dynalist는 Workflowy를 본떠 만든 서비스입니다. Dynalist는 후발주자인 만큼, Workflowy 대비 몇가지 장점이 있습니다.

  1. Dynalist는 Dark Theme을 무료 사용자에게도 제공합니다. Dark Theme이 없으면 침대에서 잠깐이라도 사용하고 싶을때 밝은 화면 때문에 무척 곤혹스럽습니다.

  2. Dynalist는 폴더 기능을 제공합니다. 한창 Workflowy 위주로 사용하던 시기에는 Dynalist의 폴더 기능이 거추장스럽게 느껴졌습니다. 그러나, PARA Method를 구현하기 위해서는 폴더 기능이 필요하게 되었습니다.

Dynalist에서 작성이 완료된 글은 Hugo를 통해 블로그에 올려집니다. 블로그에 올린 이후에는 Dynalist의 글은 Gollum으로 옮깁니다. 블로그에 올린 글을 Gollum에 다시 저장함으로써, 자신의 아이디어를 한 곳에 모을 수 있게 됩니다.

Hugo

Hugo는 마크다운 텍스트를 블로그로 렌더링해주는 프로그램입니다. 마크다운 파일이 Hugo의 입력이며, HTML/CSS 등으로 이루어진 정적 웹사이트가 Hugo의 출력입니다. Hugo와 같은 프로그램을 Static Site Generator라고 부르는데, StaticGen에 거의 모든 Static Site Generator 들이 정리되어 있습니다.

Hugo의 특징은 Go 언어로 작성되어 속도가 무척 빠르며, 실행파일 하나로 배포되기 때문에 설치가 무척 간편하다는 것입니다. 그냥 원하는 폴더에 저장해두고 실행시키면 됩니다. Hugo는 사용자의 수가 많아서 멋진 테마도 많이 갖추고 있습니다.

Hugo를 이용해 Zettlekasten을 테마의 형태로 구현한 Zettels도 있습니다. 당연히 설치해 테스트 해보았는데, 위키링크를 소문자로 바꾸고, 띄어쓰기도 하이픈(-)으로 치환해 버리기 때문에 사용하지 않기로 했습니다.

6. 마치며

제가 메모와 글을 작성하는 Workflow를 소개하고, 각 단계별로 사용하는 프로그램과 서비스들에 대해서 설명해 보았습니다. 끝으로, 본문에 언급하지 못한 몇가지 서비스들을 몇가지 더 소개하고 마칠까 합니다.

  • 사이드로 진행하는 프로젝트를 관리하는 PivotTracker
  • 북마크를 저장하는 Instapaper
  • 온라인에서 간편하게 사용할 수 있는 마크다운 에디터 StackEdit
  • 아웃라이너와 플래시카드를 결합한 서비스로, 영어 공부를 위한 문장/단어 메모용으로 사용하고 있는 RemNote