Zettelkasten メソッドのための機能を備えた Markdown エディタに Zettlr がある。ローカルディレクトリ上に通常の Markdown ファイルとしてデータを保存するタイプで、ロックインの心配が無く他のツールと併用できる好みのアプリだ。インストールして1日使ってみた。
Homebrew では以下で。
$ brew install --cask Zettlr
今日時点でインストールされるのが 1.8.3 でちょっと古かったので
からバイナリビルドされた 1.8.6 をダウンロードしてインストールした。
ヘッダを大きめに表示したりリンクの URL を隠したりと一部プリレンダリングされるタイプ。日本語も問題無さそう。
ファイル末のあたりで文字入力するとエディタがガクガク揺れるは今後改善されると嬉しい。
見出し単位で折り畳む機能やサイドバーで目次を表示する機能があり、長めの文章を書くための支援が揃っている。
ファイルツリー上にディレクトリとファイルの両方を表示する Combined モード以外に、ファイルツリー(ディレクトリツリー)とファイルリストの両方を表示する Expanded モード、ファイルツリーとファイルリストのどちらかを表示する Thin モードがある。
Expanded モードを選ぶと iA Writer や Ulysses などでもお馴染みのスタイルになりノートアプリとして使いやすくなる。
ファイルシステム上のディレクトリをルートディレクトリとしたワークスペースを複数同時に開いておける。用途別にディレクトリを分けている場合に便利だ。
全文検索はワークスペース単位。内部リンクもワークスペース単位で機能する。 自分は複数のワークスペースを横断的に全文検索したいので、本格的に使うなら1つのディレクトリの下にまとめる必要があるな。
ファイルの拡張子は md ではなく txt でも OK なので、ファイルを同期した Google ドライブ上で全文検索させられるのが嬉しい(Markdown ファイルの拡張子を md にすると Google ドライブで不便)。 md 固定の Obsidian より柔軟だ。
Makrdown ファイルから Markdown ファイルへファイルベース名を指定して 「[[ファイルベース名]]」の形で内部リンクできる(パス名は不要)。
また Markdown ファイル内にユニークな ID を書いておき、その ID を指定して「[[ID]]」としてリンクもできる。後者を使えばファイル名変更が気軽にできる。 ID の形式やリンクの開始文字列 [[ ・終了文字列 ]] もカスタマイズできて柔軟なのも良い。
iA Writer では
ia-writer://open?path=/Locations/path/to/file.txt
のような URL を発行して擬似的にリンクするさせるしかないので比べると圧倒的に便利。
今メインで使っている Mac アプリケーションの iA Writer に比べると Electron ベースの Zettlr は美しさで負けるのは仕方ないところかな。
Zettlr をテキストファイルノートアプリとして内部リンクを活用しながらパーソナルナレッジベースを作っていくのありだな。
[ ノート・日記はテキストファイルに ] [ Mac アプリケーション ]
ファイル内に ID を埋め込みリンクする。ID 形式はカスタマイズ可能。またファイルベース名でもリンク可能。
ファイルベース名を ID としてリンクする。
[ Zettelkasten ]
昨日から使い始めた Zettelkasten メソッドのための機能を備えた Markdown エディタの2日目。昨日の時点で使い続けるかちょっと迷ったんだけれど、もうちょっと使い方を探ってみようと今日も使ってみている。内部リンク(ノート間リンク)の活用方法がちょっと分かってきて楽しい。
エディタ上で内部リンクを「command + クリック」「control + クリック」すると「リンク先のファイルを開く」と同時にその「リンク文字列での検索」が実行される。ファイルを開くと同時にいい感じに関連するファイルのリスト(実質バックリンクリスト)が表示されて便利。内部リンクを充実させたい気持ちが高まってきた。
アプリケーションに依存する Markdown ファイルを作らないという Zettlr の原則により Markdown ファイル中のどこに ID を書いてもいい仕様になっている。
自分としてはプレビュー時に文中に出ないように、昨日ひとまず ID を HTML コメントの形式で Markdown ファイルに埋め込んでみていた。 Zettlr やメインで使っている iA Writer、プレビューに使っている Marked 2 が YAML front matter に対応しているのでそこの方がわかりやすいかな。 front matter に ID を書くことにした。
日時については基本「2021-01-20-095836」という書式を使っているので Zettlr の ID のパターンも初日に「%Y-%M-%D-%h%m%s」にカスタマイズしたのだけれど「%Y%M%D%h%m%s」に戻した。過去のノートファイルに現在日時の ID を付与するというズレが心理的に気持ち悪かったので。
Also, our own experiences show that when one doesn't use easy-to-recognise IDs, one is less prone to assume stuff, making them better suited to cross-link files. Just try it yourself! — https://docs.zettlr.com/en/academic/zkn-method/
というの納得。
内部リンクは Zettlr をナレッジベースとして使う上で便利だが、単独の Markdown ファイルをエクスポートして共有する際には不要だ。
Markdown ファイルを各種フォーマットに変換する Marked 2 に自作のカスタムプリプロセッサを通す機能があるので、 Zettlr で管理している Markdown ファイルを共有する際は Marked 2 を呼び出して
- [[...]]
を含む行を消してしまうように設定した。ノート関係の宣言のための内部リンクは上記のように独立した行に書いておこう。
これで個人的なナレッジベースとしてノート間リンクの充実させるという要求と、一部はエクスポートして共有したいという要求を満たせそうだ。
Zettlr 4日目。18,000 弱テキストファイルがあるディレクトリーツリーをワークスペースとして開いたらかなり重かった。使い込んでいくにはパフォーマンスに問題があるな。
Zettlr をしばらく使ってみて、UI とエディタが美しい iA Writter が恋しくなってきた。 iA Writer ならファイル数が 19,000 超えても問題ないし安心だし iA Writer メインに戻ることにしよう。
ローカルホスト上のテキストファイルで管理していると、アプリケーションを乗り換えやすくていい。
Zettlr を使っていいなと思った内部リンクのための記述方法
は iA Writter で取り入れてみてもいいな。
現在日時で %Y%M%D%h%m%s 文字列を生成する Alfred ワークフローを作った。それから
cd ~/notebook pt -l -e "^ID:\\s+$query" . | head -n 1
で見つかったファイルを iA Writter で開く Alfred ワークフローを作成し、ID を指定して iA Writer を開けるようにした。 もっとサクッと開けるように PopClip のエクステンション化もしておきたいな。
キーを「ID」ではなく「ZID」に変更した。
[ ノート・日記はテキストファイルに ] [ Zettelkasten ]
cd ~/notebook pt -l -e "^ID:\\s+$query" . | head -n 1
で見つかったファイルを iA Writer で開く PopClip エクステンションを作った。 iA Writer 上で 20210125215723 という文字列を選択したあとにポップアップした PopClip でこのエクステンションを実行すれば
YAML front matter に
--- ID: 20210125215723 ---
と書いておいた Markdown ファイルを iA Writer でささっと開ける。 iA Writer でのノート間リンクを実現。先週 Alfred で開けるようにしたものの PopClip 版。
PopClip 便利。
キーを「ID」ではなく「ZID」に変更した。
[ ノート・日記はテキストファイルに ] [ Zettelkasten ]
Markdown エディタ Zettlr で内部リンク(ノート間リンク)を
- [[yyyymmddHHMMSS]] タイトル
のように書き、エクスポートする時は Marked 2 のカスタムプリプロセッサで消す(記事)というマイルールを作った(yyyymmddHHMMSS は ID)。が Zettlr から iA Writer に戻し、ノート間リンクは自作の PopClip エクステンションで開けるようにした(記事)ので、必ずしも [[yyyymmddHHMMSS]] 形式で内部リンクを表現しなくても良くなった。であれば、最初から変換した時にドキュメントに現れない形式で Markdown ファイルに内部リンクを書いておきたい。
Markdown ファイル中に HTML コメント形式で内部リンクを書いておけば、 HTML 等に変換した時にドキュメントに出現しなくて済むのだが iA Writer だと全文検索にひっかからないので却下。
ドキュメントに出現しない表記にはもう1つ「リンク定義」があるのでこれを使うことにした。
[yyyymmddHHMMSS]: <> "title"
として内部リンクを書いておけばプレビューしたドキュメントには現れない。若干やぼったい感じもするがなかなかいいんじゃない。
[ ノート・日記はテキストファイルに ] [ Zettelkasten ]
Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。