안녕하세요! 지난 구미코딩모임에서 옵시디언의 기초와 활용법을 나누며 기록의 즐거움을 함께 확인했었죠. 하지만 노트가 하나둘 쌓이다 보면 "예전에 적은 그 코드가 어디 있더라?", "지금 진행 중인 프로젝트들만 모아서 보고 싶다" 같은 고민이 생기기 마련입니다.
왜 데이터뷰(Dataview)인가요?
우리 개발자들은 파편화된 정보를 구조화하는 데 익숙합니다. 하지만 일반적인 메모 앱은 노트가 많아질수록 '검색'에 의존하게 되고, 전체적인 흐름을 한눈에 파악하기가 어려워집니다. 폴더 정리는 한계가 있고, 수동으로 링크를 거는 것은 금세 귀찮아지죠.
데이터뷰는 바로 이 지점에서 힘을 발휘합니다. 옵시디언 안에 흩어진 수많은 마크다운 파일들을 하나의 '데이터 행(Row)'으로 인식하게 만들어 줍니다. 마치 데이터베이스나 엑셀에서 원하는 조건만 필터링해서 표를 만들듯, 내 노트들을 실시간으로 수집하고 요약해서 보여주는 도구입니다.
자동으로 관리되는 노트 정리
#학습이라는 태그를 붙여두기만 하면, 미리 만들어둔 대시보드에 그 노트가 자동으로 추가됩니다. 일일이 목록을 찾아가며 링크를 추가할 필요가 없어지는 것이죠.작동 원리는 간단합니다. 데이터뷰 엔진이 로컬 폴더를 스캔하여 각 노트가 가진 속성(생성일, 태그, 지정한 속성 등)을 읽어 들입니다. 그리고 우리가 원하는 조건을 쿼리로 작성하면, 그에 맞는 결과물을 리스트나 표 형태로 즉시 렌더링해 줍니다.
단순한 메모를 넘어선 '데이터'
데이터뷰로 유용한 대시보드를 만들려면, 먼저 노트 안에 데이터뷰가 읽을 수 있는 '데이터' 를 잘 남겨두어야 합니다. 데이터뷰가 인식할 수 있는 정보, 즉 **프로퍼티와 메타데이터 **를 어떻게 설정하는지 알아볼게요.
노트에 속성을 부여하는 프로퍼티(Properties)
Key: Value 형태로 정보를 적어주는 것이 핵심입니다.예를 들어 코딩 문제 풀이 노트라면
난이도: 상, 알고리즘: DFS, 해결여부: true 같은 식으로 속성을 추가하는 거예요. 이렇게 정형화된 데이터는 나중에 "난이도가 '상'인 문제만 모아줘"라고 쿼리할 때 결정적인 기준이 됩니다. 단순한 텍스트가 아니라, 시스템이 처리할 수 있는 '값'이 되는 과정입니다.흐름을 깨지 않는 인라인 필드(Inline Fields)
[분류:: 알고리즘] 또는 소요시간:: 30분처럼 중간에 슬쩍 적어두기만 하면 됩니다. 글을 쓰는 맥락을 유지하면서도 필요한 데이터를 즉시 기록할 수 있어 개발 일지나 회고록을 쓸 때 정말 편리합니다.우리가 적지 않아도 생기는 암시적 데이터
file.name), 생성일(file.ctime), 수정일(file.mtime), 그리고 노트에 포함된 모든 태그(file.tags) 등이 여기에 해당합니다. "어제 수정한 노트만 보고 싶어" 같은 필터링이 가능한 이유도 데이터뷰가 이 숨겨진 메타데이터들을 항상 트래킹하고 있기 때문입니다.데이터 설계, 가볍게 시작하세요!
이제 데이터를 입력하는 방법을 알았으니, 내가 원하는 데이터만 골라내는 데이터뷰 쿼리 언어(DQL) 사용법을 알아보겠습니다. 낯설게 느껴질 수도 있지만, SQL이나 기본적인 개발 지식이 있는 분들이라면 금방 익숙해지실 거예요.
네 가지 기본 출력 방식: LIST, TABLE, TASK, CALENDAR
데이터뷰는 정보를 보여주는 네 가지 기본 형식을 제공합니다.
-
LIST: 조건에 맞는 노트를 단순한 목록으로 보여줍니다. 가볍게 훑어볼 때 좋죠.
-
TABLE: 엑셀처럼 여러 속성을 열(Column)로 나열합니다. 여러 프로젝트의 진행 상황이나 공부 시간을 비교할 때 가장 강력합니다.
-
TASK: 마크다운의 체크박스(
- [ ])들만 모아서 보여줍니다. '오늘 할 일' 대시보드를 만들 때 필수입니다. -
CALENDAR: 날짜 데이터가 있는 노트를 달력 형식으로 시각화합니다.
데이터를 다루는 필수 문법 (FROM, WHERE, SORT)
데이터를 불러오는 과정은 아주 논리적입니다. 보통 세 줄 정도의 코드로 완성되는데요.
-
FROM: "어디서 가져올까?"를 결정합니다. 특정 폴더(
FROM "Project")나 특정 태그(FROM #coding)를 지정할 수 있습니다. -
WHERE: "어떤 것만 보여줄까?"라는 필터입니다.
WHERE 난이도 = "상"혹은WHERE !completed(완료되지 않은 것) 같은 조건을 걸어줍니다. -
SORT: "어떤 순서로 정렬할까?"입니다. 생성일 순(
SORT file.ctime DESC)이나 이름 순으로 깔끔하게 정리해 줍니다.
실전 코드로 살펴보기
만약 여러분이 공부 중인 알고리즘 노트들만 모아서 표로 보고 싶다면, 노트에 아래와 같이 입력하면 됩니다.
TABLE 알고리즘, 난이도, 소요시간
FROM #algorithm
WHERE 해결여부 = true
SORT 소요시간 ASC
#algorithm 태그가 달린 노트 중 해결된 것들만 찾아내어 표로 그려줍니다. 새로운 노트를 추가할 때마다 결과가 즉시 반영되는 것을 보면 꽤 편리하다는 걸 느끼실 수 있을 거예요.쿼리와 친해지기
이제 기본 사용법을 익혔으니, 앞서 배운 내용들을 개발자의 일상에 바로 적용해 볼 수 있는 '실전 워크플로우' 를 세팅해 보겠습니다. 옵시디언이 단순한 메모 도구를 넘어 업무를 효율화하는 대시보드로 쓰이는 사례들입니다.
1. 기술 스택 트래커: 나의 성장 시각화
#공부 태그와 상태 프로퍼티를 활용해 보세요. WHERE 상태 = "진행중"이라는 간단한 쿼리만으로, 현재 내가 집중하고 있는 기술 목록과 학습 시작일을 한눈에 볼 수 있습니다. 학습을 마치고 상태를 "완료"로 바꾸기만 하세요. 대시보드에서 해당 항목이 자동으로 업데이트되며 내가 쌓아온 기술 스택의 궤적을 실시간으로 보여줍니다.2. 알고리즘(PS) 대시보드: 나만의 문제 은행
백준이나 리트코드 문제를 풀 때, 문제 번호, 난이도, 사용 알고리즘을 기록해 보세요. 데이터뷰를 사용하면 "난이도 골드 이상이면서 아직 다시 풀어보지 않은 문제"들을 리스트로 뽑아낼 수 있습니다. 시험이나 면접을 앞두고 복습할 문제를 고를 때 이보다 완벽한 도구는 없겠죠? 내가 어떤 유형의 알고리즘에 취약한지도 한눈에 파악할 수 있습니다.
3. 프로젝트 MOC(Map of Content) 구축
deadline)을 적어두고, 메인 대시보드에서 마감일이 가까운 순서대로 프로젝트를 정렬해 보여줄 수 있습니다. 오늘 당장 무엇에 집중해야 할지 고민하는 시간을 줄이고, 바로 작업에 몰입할 수 있는 환경을 만들어줍니다.더 먼 곳으로: DataviewJS와 공유의 가치
만약 기본 쿼리로 부족함을 느낀다면, 자바스크립트를 직접 작성할 수 있는 **DataviewJS **에 도전해 보세요. 복잡한 논리 연산이나 데이터를 가공하여 차트를 그리는 것도 가능해집니다. 개발자라면 이 지점에서 옵시디언의 확장성을 제대로 체감하실 수 있을 겁니다.
구미코딩모임의 매력은 서로의 지식과 삽질(?)을 나누는 데 있다고 생각합니다. 여러분이 만든 유용한 쿼리와 템플릿이 있다면 모임원들과도 널리 공유해 주세요. 이번 주말에는 옵시디언을 열고 나만의 대시보드를 한번 만들어보시는 건 어떨까요?