Lambdaカクテル

京都在住Webエンジニアの日記です

Invite link for Scalaわいわいランド

Obsidianのタグはスラッシュで階層化できる / 多元的な階層化の良さ

しばらく前からObsidianというMarkdownのエディタを愛用している。

blog.3qe.us

blog.3qe.us

blog.3qe.us

原稿執筆やメモ書きにとても良いエディタなので、ぜひ使うことをおすすめする。

今回は主として既にobsidianを使っている人向けの記事であるが、使っていない人にとってはこういう機能もあって便利ですよ、という良さの共有として読んでほしい。

Obsidianのタグ

Obsidianでは、記事中に#ほげほげと入力するとそこがタグになり、記事をタグで検索できるようになる。タグは一覧でき、同じタグを持つ記事はグループ分けされるようになる。

スクリーンショット

ドキュメントでは単にタグとしてしか表記されていないが、#記号を使うのでハッシュタグと呼んでもさしつかえないだろう。

タグは主に、記事の索引付けや分類を目的として使われる。同一のハッシュタグを使っている記事の一覧を探して情報をまとめたりできる便利なツールだ。

Obsidianのタグは多元的である

さきほど、タグは記事を分類する仕組みにあたると説明した。記事を探す視点から見ると、記事がある分類に従って木のようにぶら下がるような構造になる。

flowchart LR
h1("#技術")
d1["Scalaの記事1"]
d2["電子工作の記事1"]
h1 --> d1
h1 --> d2

記事は複数のタグを持てるから、複数の木に記事が所属するという構造を生み出せる。これはかなり便利で凄いことだ。

flowchart LR
h1("#技術")
h2("#すぐ読める")
h3("#長編")
d1["Scalaの記事1"]
d2["電子工作の記事1"]
h1 --> d1
h2 --> d1
h1 --> d2
h3 --> d2

複数の木に所属するということは、記事の集合を別の切り口で分類できるということにほかならない。ある局面では「技術記事かどうか」という絞り込みができるし、別の局面では「記事が長いかどうか」という側面で絞り込める。ハッシュタグの良いところは、よくある木構造型のドキュメント管理ツールのように無理矢理1つの木、1つの分類形態にドキュメントを適合させる(そもそも、そんなことはどだい無理である)ことを巧妙に回避しつつ、複数軸で記事を分類するという柔軟な知的生産を可能にするところだ。

まとめると、タグは複数の軸によって記事を分類できる、多元的なツールだといえる。

Obsidianのタグは階層的である

ここからがとても面白いところ。なんとobsidianのタグは/文字によって階層を切ることができる。例えば#言語/Scala#言語/Rustという2つのタグがある場合、自動的に#言語という階層が認識される。その結果、#言語というタグで検索すると#言語/Scala#言語/Rustもその検索によってヒットするタグになる。

flowchart LR
classDef dot stroke-dasharray: 5, 5
h1("#言語"):::dot
h2("#言語/Scala")
h3("#言語/Rust")
d1["Scalaの記事1"]
d2["Rustの記事1"]
h1 --> h2
h1 --> h3
h2 --> d1
h3 --> d2
h1 -.-> d1
h1 -.-> d2

これもまた検索で便利だ。上位階層にあるタグで検索すると下位階層のタグを付けている記事もヒットするからだ。

多元的階層化がもたらすメリット

階層があるだけだと単純にディレクトリ管理を敷いているドキュメント管理ツールと同じだが、素晴らしいのはこれを前述の多元的な分類と組み合わせられることだ。記事が階層管理されつつも、複数の階層によって管理できているという状況を生み出せる。言い換えると記事が多重にディレクトリ管理できるということだ。

例えば、以下のようなタグが運用されているとする:

  • #ブログ/長編
  • #ブログ/短編
  • #言語/Scala
  • #言語/Rust
  • #技術/ジェネリクス

タグが多元的に階層化されていることにより、「Scalaのブログ記事で、ジェネリクスに言及しているもの」といった複雑な絞り込みも可能になる。これを実現するためには記事にタグを付けておくだけでよく、煩雑な階層管理は不要だ。もしタグが重複するようなら、プラグインを使えばタグをマージできる。

まとめると

タグが階層化されていることに驚いたのでこの記事を書いた。タグは記事を横に分類するための仕組みであり、階層は記事を縦に分類するための仕組みだ。両者はまじわらないと勝手に思っていたが、これが合体することですごく情報を引き出しやすくなったと思う。

★記事をRTしてもらえると喜びます
Webアプリケーション開発関連の記事を投稿しています.読者になってみませんか?