一ヶ月以上前のことだが、新しい規格のアウトライナーを自分用に作ろうとしていた。結局没にしたが、最初はいいことを思いついたと思ったのでここに書いて供養する。
通信環境に縛られる問題
常日頃書いているように、アウトライナーはDynalistを使っている。基本的には機能面で物足りなさを感じることはない(あっても大抵自分で解決する術がある)。ただし、自分のデータに対する自分の裁量という面で言うと、微妙に足りないところがある。
というのは、まずインターネットが遮断されたらアクセスできないという問題がある。自分の環境の都合もあるし、Dynalist側のサーバーエラーも最近は珍しくない。通信会社が障害を生じる場合もある。そうなると参照したいタイプの情報を入れていると危ない。必要な時に限ってトラブルに見舞われるものである(マーフィーの法則)。
これは別にDynalistに限った問題ではなく、ローカルファイルを扱うアプリケーションでなければどれも同じだ。なので、まず「データをローカルに置くDynalistライクなアウトライナーがほしい」という思いが生まれた。
人間の読み書きと機械の読み書き
そうしたときに問題になるのはデータのかたちだ。
参考としてDynalistのデータがどうなっているかまとめてみる。
- エクスポート形式はOPMLとtxt
- APIを使えばJSONで出力できる
- インポートできるのはOPML
- プレーンテキストのインデントはDynalist上でペーストすれば反映させられる
アウトライナーのデータ形式として一般的なのがOPMLだが、これは機械のための形式であって、人間が直接編集するのは現実的ではない。データベースとして簡便なのがJSONだがこれも同様である。なので、これらの形式を使うなら、専用のアプリケーションを作った上で必ずそれを使って情報を読み書きする必要がある。
専用アプリケーションを作るにあたってネックになるのは、PCとスマートフォンという二種類の環境への対応だ。PC用なら慣れているが、スマートフォン用にアプリケーションを開発するのは容易でない。難しいというより、学習コストがかかって食指が伸びない。ローカルファイルを扱おうとするからそうなるのだということで、クラウドを使ったWebアプリケーションを作ってPCとスマートフォンの切り替えはCSSでレイアウトを変えるだけにするという手もあるが、そうすると結局インターネットが遮断されたらそのアプリケーションは使えない。
もしも専用のアプリケーションなしで直接編集できる形式なら、スマートフォンでは単にテキストとして扱い、PCではより便利に読み書きできるアプリケーションを通して編集するということができる。Dynalistの代替を考えているわけだから、スマートフォンでも不自由しないようでなくてはならない(出先で確認・編集できることもDynalistを利用している理由のひとつである)。
プレーンテキストでありながらアウトラインとして扱える形式というのが実は既に存在する。階層付きテキストというものである(発祥はWZ Editorだろうか?)。行頭のピリオドの個数で階層を表現してプロダクト型アウトライナー化するもので、対応しているアプリケーションがいくつかあるため自分で開発しなくても編集できる。アウトライン操作までしなくていいなら単にテキストエディタで開けばよい。
階層付きマークダウンアウトライナー
とはいえ、階層付きテキストでいいなら最初からPCでもそれを使っているのであり、Dynalistに頼る必要はない。
私がDynalistを使っている大きな理由として、Dynalistがプロセス型アウトライナーであることと、各ノードに自由にメタデータを持たせられるということがある。Dynalistの機能として備わっているのはHeadingとColor、チェックボックスだが、勝手にノート欄をプロパティを書く場所として使いスクリプトでそれを機械的に解釈することで、ノード単位で好きなようにプロパティを添えることができる。
あとは本文の表現についても、画像埋め込みやリンクなどいくつかのMarkdown記法は使えた方がいい。完全なプレーンテキストだとあまりに物足りない。
そう考えて思いついたのが、まず大枠を階層付きテキストとし、各ノードの本文をフロントマター付きのMarkdownとして解釈する形式である。これを「階層付きマークダウンアウトライナー」と仮に呼ぶことにした。
.親要素
---
created: 2025/05/29
---
本文
[Noratetsu House](https://noratetsu.deno.dev/)
..子要素
---
created: 2025/05/30 20:58
---
本文
.タイトル
フロントマターはなくてもいい
..本文もなくてもいい(タイトルが本文でいい)
このような形。スマートフォン上では、階層付きテキストを扱えるエディタで開けばアウトライン操作ができるし、Markdownエディタで開けばアウトラインは操作できないが本文中のMarkdown記法はプレビューできる。完全な操作ができないもどかしさはあるが、一応は普通に読めて普通に編集できることになる。
PC用に、これを読み込んでDynalistのように扱うアプリケーションを作れば、Dynalistの操作感でありかつローカルにデータを置けてかつスマートフォンでも読み書きできなくはないという環境ができあがる。
実際にビューワまでは作った。ビューワができれば半分できたようなもので、エディタも多少時間をかければ作れなくはなかった。
だがしかし
しかし開発はここでやめてしまった。
階層付きマークダウンアウトライナーというのは、つまりMarkdownのファイル(=mdファイル)群に親子関係を付与したものとほとんど同じである。
てことは――Obsidianのプラグインを作ってmdファイル間を関係づけたらいいのでは?
というわけで次回に続く。