ごらくらいふ

プログラミングしたりゲームしたり

ObsidianのリンクはWikiリンクを使うように戻ってきちゃった

最近、仕事寄りな個人的メモのために保管庫を切って、そこでのリンクは Markdown形式 を使うようにした。が、一週間も経たないうちに Wikiリンク形式 に戻ってきてしまった。

なんでまた保管庫の分離を?

業務知識をひたすらノートに起こしていき、いずれ誰かに資料として引き渡せるのではないかと考えたから。

また、デイリーノートに求める運用がプライベートと異なることも影響している。 プライベートではその日作成したノートの集約が主な使い方だ。 一方、仕事用の場合はノートの集約だけでなく、その日の作業内容の列挙や完了したタスクを書き込んだりしていく。 日報として書き貯め、週報として振り返り、月報としてまとめたらかっこいいと思ったのだ。 これが 1on1 で「この半期なにをしましたっけ?」と面談で話がふわふわすることを避けてくれるだろうと期待している。

Markdown形式 を選んでみた理由

Wikiリンク方式では、Markdownファイルだけを渡してもリンクを辿れない。 「可能であれば最短経路」のルールで内部リンクを使用しているのでなおさらである。 これが Markdown形式であれば、リンクは絶対パス相対パスになるため、Markdownファイルを渡しても追跡可能になるだろうと考えた。

実際のところ、赤裸々に書いたりする場面もあるので、まるまる渡せるような代物ではなくなってしまった。

Obsidianでノートを取って10ヶ月が経過した - ごらくらいふ プライベート保管庫のススメ 参照。

MarkdownリンクとWikiリンクの違い

Markdownリンクは以下のような形式だ。Obsidianの内部リンクとして使う場合、ファイル名とリンクで同じ内容が書かれ冗長になる。

[表示用文言](リンク)

Wikiリンクは以下のような形式だ。表示用文言さえもない内部リンクとして使う場合、冗長な部分はなくなる。

[[リンク|設定されれば使われる表示用文言]]

実際につかってみた感想

Markdown形式では、リンク切れの表現が甘い

Wikiリンク形式では、存在しないファイルへのリンクはグレーアウト表現によってリンク切れがわかる。Markdown形式では区別できなかった。

これは ObsidianというソフトのUI表現上の都合なので、リンク切れ表現が改善されれば不満点でなくなる。

そもそも絶対パスで通じない

絶対パスとは、どこに記述されてもその所在を完全に説明するパスのことだ。

C://Program Files/someprogram/program.exe だとか、 /var/www/html/index.html だとかだ。

Markdownとは元々プレーンテキストからHTMLを生成するために開発された軽量マークアップ言語だ。となれば絶対パスとは 絶対URL に倣っていることが望ましい。

URL とは何か - ウェブ開発を学ぶ | MDN

暗黙に省略されるのは Vaultのルートパスまでで、絶対パスといえば / から始まるパス表現であるべきだ。 しかし Obsidian が絶対パスとして生成するリンクは先頭に / がない。 「絶対パスを使う」設定で /foo.md へのリンクを張った時、 [foo](foo.md) と記述されるのだ。

/foo.md
/inbox/content.md
/inbox/foo.md

上記のファイルがあったとき、 /inbox/content.md[foo](foo.md) と記載されていたらどれが参照されていると思うだろうか。

Obsidian における答えは /foo.md である。相対URL的に馴染み深い /inbox/foo.md を指定するには、リンク部を ./foo.md と表現する必要がある。 なお、この状態で /foo.md を削除すると、参照先が /inbox/foo.md になる。

つまり、 [foo](foo.md) というリンク表現は、柔軟に参照先を変える記述ということだ。 設定で絶対パスを使うよう指定してもこの記述になるため、気を抜くと絶対パスではないパスが埋め込まれることになる。

絶対パスとして挿入されるリンクがまるで相対パスのような表現で、その実態は柔軟すぎる参照なのである。

これはもうObsidianの設計の都合なので、変わることはないだろう。リンクはObsidianの根幹であり、その挙動を今更変えるのは悪影響が大きすぎる。 せいぜい 絶対パスとして生成するリンクが / から始まるようになればマシというところか。

全体ファイル検索から「検索結果をコピー」する際の不都合

デイリーノートの運用で、その日作成したノートの集約という使い方をするが、それに活用しているのが全体ファイル検索とその「検索結果のコピー」だ。

/foo.md
/inbox/foo.md

というファイルがあるとき、 file:foo として検索し、「検索結果をコピー」するとどうなるか。

- [foo](foo)
- [foo](foo)

と提案されるのである。結果が壊れている。

「パスを表示」のトグルスイッチを有効にした結果は、

- [foo](foo.md)
- [foo](inbox/foo.md)

となり、それぞれを識別可能になるが前述のとおりこれは絶対パスではない。

だからやめた

Markdown形式にしても冗長だし、その割にリンクは直感に反するのでそのままファイルを引き渡しても通用しないしで、「可能であれば最短経路」の「Wiki形式リンク」に戻ってきてしまったのだった。

ファイル生成にルールを定め、いざ引き渡す時にかける変換スクリプトを用意したほうがマシである。

最短経路Wikiリンクを支える特別な事情

「可能であれば最短経路」の「Wikiリンク」を使うことにしたが、これが混乱を起こさない運用上の特別な事情がある。

自分の場合、「ほぼすべてのファイル名に重複がない」のだ。

デイリーノートは /daily/{YYYY-MM-DD} に生成するし、通常のノートは「ユニークノートクリエイター」を使って、/inbox に生成するようにしている。その他、たとえばテンプレートファイルは t-プレフィックスをつけるようにしている。

だから、Wikiリンクはいつでもファイル名だけのシンプルな形になるし、いざ引き渡すとなればパスを補完するような変換スクリプトがあればよいのだ。