アウトライン型データベースとしてのDynalistというのを以前書いた。このことについて、より正確な表現を目指して考えてみる。
データと文脈の分離
普通データベースというのは、ある規格のデータ(=レコード)によってテーブルが形成されており、それ以外のものはテーブル内に含まない。もしもレコード間の関係性を記述するならば、それは各レコードの中に書かれるか、或いは関係性を示すための別のテーブルをデータベース内に設ける。この場合決まった形を予め作らなくてはならない。
それ以外に関係性について考え記述するには、全く別の場(例えば研究ノートなど)を使うことになる。
このことで何か困った事態を引き起こすのかというと、別にない。そのような形になっていることでデータベースは汎用性が備わり、使う人を選ばないものになる。事実と解釈は分離しているべきである。
それはそれとして、もしも自分たった一人が使うデータベースというのがあるならば、そう厳密に分かれていなくても支障はないということになる。データベースとノートが有機的に統合しているような形になってしまっても構わない。データベースの維持管理にはコストがかかり、普段使いのノートと一体になっていていいなら楽である。
ただし完全に融け合っているとデータベースとして機能しなくなってくる。もしもこのデータベースとノートというのが紙で作られているならば、混ざっていったらただのノートになってしまう感がある。
しかしデジタルなら、ある書き方をしている部分だけをデータとして引っ張り出すという処理をすることで、「データベースが融けているノート」から「データベース」を抽出するというようなことが可能になる。そのためには書き方を事前に決めて統一していることが必要である。(AIの力を使えばその限りではないが、ここではAIについては置いておく。)
データベースであり且つデータベース的でない
ところでDynalistである。Dynalistは(というかプロセス型アウトライナーは)各ノードがひとつのレコードをなしたデータベースになっている。ゆえに検索をかければノード単位でヒットさせることができる。このデータベースには、DynalistならAPIを使えば直接アクセスできる。
一方で、普通に使っていてプロセス型アウトライナーをノードをレコードとしたデータベースとは思わないだろう。そのように解釈して使うということはもちろんあり得るが、多くの場合アウトライナーはテキストエディタの一行一行を動かせてインデントできるものといった感覚で使われるもので、その一行一行を「データ」とはあまり考えない。なにしろ規格らしい規格をあからさまには感じない。
まずこの二重性がポイントである。実際にデータベースであるので、一行一行をレコードとして任意のやり方で取り出せる。しかし使う際にはデータベース的でない使い方があり得て、むしろその方が普通なのである。
データ単位とノードの関係
次に、Dynalistの各ノードにはいくつかのプロパティがある。ユニークID、本文、ノート欄、コンプリートの有無、チェックボックスの有無、色の設定、見出しの設定、そして子要素とその並び方。
これらの要素があるので、ただアウトライン操作できるだけのシンプルなアウトライナーより、個別のノードはデータベースとして認識しやすいし、実際に処理がしやすい。何らかの設定をしたノードに対してこれはこういう意味のデータであると自分が解釈しやすいし、そしてAPIを通じてプログラムを使えばそれをそのように扱うことができる。
一方で、自分がDynalist上で主観的に捉えている「ひとつのデータ」の粒度は、ひとつのノードが単位とは限らない。むしろ違う場合のほうが多い。つまり子孫要素を含めてひとまとまりと認識しているということである。しかし逆に、ひとつのノードがイコールひとつのデータであり子孫要素とはデータとしては別、と解釈した方が都合が良いこともある。親子関係が関係あったりなかったりするのである。
この統一されなさはデータベースとしては厄介だが、統一しなければならないとなると自分の自由が損なわれる。データベースの都合に自分を合わせなくてはならないのは明らかに不自由である。
その不自由さを打破する術がDynalistにはある(他のアプリケーションにはないと言いたいのではない。単に私が使っているところのDynalistでは事実としてできますよという話である)。Dynalistはユーザーがデータベース全体に自由にアクセスできるので、データの構造の解釈も自由にできる。つまり、この条件ならノード単体でひとつのデータと見なし、こっちの条件なら子孫項目も含めてひとつのデータと見なす、ということが(コードを書けさえすれば)自在にできる。
アウトライナーにデータベースを融け込ませる
さてこの辺で前提に立ち戻ってみると、自分たった一人が使うデータベースならばノートと融け合ってしまっても構わないだろうという話だった。そしてそれがデジタルデータであればノートと融け合ったデータベースを(予め十分な用意をしておけば)抽出することができる。
Dynalistではそれが技術的に可能であり、しかもそれが比較的容易であるということをここまで書いてきた。
ではDynalistでそのようにすることの何が嬉しいのか。言い換えると、アウトライナーの中にデータベースを融け込ませられることの何が嬉しいのか。
ひとつ重要なことを強調しておくと、APIでDynalistのデータベースにアクセスしてデータを取得できるということはつまり、データはアウトライン構造とは一切関係なく直に取得できるということを意味している。すべてのデータは見かけ上アウトライン構造のどこかに位置づけられるが、それを利用するにあたってはアウトライン構造は完全に無視できるということである。子要素を辿っていくことはあるが、そのデータがアウトライン全体のどこに位置するかはどうでもよい。
少し混乱が生じる可能性を感じるので、Dynalistがユーザーのデータを保持するにあたって構築しているデータベース(APIでアクセスできるデータベース)と、アウトライナーの中に自分が融け込ませるデータベースを区別して、後者を「任意のデータベース」と表現する。
Dynalist(または同様のことが可能なアウトライナー)に任意のデータベースを融け込ませた場合、任意のデータベースの各データはアウトライン構造の中で何らかの意味を自由に持てて、且つアウトラインの影響を全く受けないという二重性がある。
ごく簡単な具体例を示してみる。例えばWebブックマーク用にアウトラインを作っているとする(実際にそのようなものを作っている)。そしてそれがこのような形になっているとしよう。
この中に、色のついたノード(子要素は含まない)をレコードとする任意のデータベースが融け込んでいるものとする。データベースとしては、本文からタイトルとURL、色からブックマークの種類、ノート欄から分類を取得してレコードを作っている。このデータベースは別の場所から参照して、例えば自分用Webページの生成などに使う。
融け込んだデータベースにとって、「2025年7月のブックマーク」の行や「四つのエッセンシャル・アウトラインとは:」の行などは一切意味を持たない。各ブックマークをデータとして見たい時にいつのブックマークかとかそのリンク先に具体的に何が書かれているかは必要ないと私が判断しているので、それらをプロパティに含めていないのである。
そしてこれらのブックマークのノードを「2025年7月のブックマーク」ではなく他の位置にある「のらてつの記事」というノードの下に置きたいなと思ったら、ただ動かしてしまえばいい。自分にとってそのノードがどういう意味を持つかは変化するが、データベースとしては何らの影響も受けない。
つまり、任意のデータベースの任意のデータを、任意の文脈に位置づけられるということである。データを抽出すればそれらはひとつのテーブルになるが、アウトライナーに融け込んでいる間、それらはテーブルの形式からは全く自由である。そしてそれは同時に、そのデータベースとは無関係な記述がデータとデータの間に入り込んでいることを意味している。私にとっては意味があるが、データベースにとっては無意味な情報である。
有機的なデータベースの意義
ひとつ疑問を持たれるかもしれない。データベースは別に作って(例えばNotionに)、アウトライナーなどのノートにはそれへの参照を書けばいいのではないか?
もちろん、それでも構わない。その方が合理性で言ったら上であろう。が、しつこいようだが自分ひとりが使うデータベースである。それをデータベースとしてきちんと整備してメンテナンスし続けられるかどうかという問題がある。システム上どんな合理性があっても「面倒くさい」「時間がない」には負ける。なので、文脈を扱うノートと一体にして有機的に管理したいという要求が生まれるのである。
普通にアウトライナーを使うように使って、「これはデータと解釈したい」と思ったノードに色なりノート欄なりを使ってちょっと印をつけるだけで、それが(Dynalistそのもののデータベースとは全く無関係の、自分が定義した)データベースになる。データベース用の場所も必要ないし、データベースのための作業もほとんど必要ない。自分の感覚によるノート作りをしているだけで同時にデータベースができていく。そしてそのデータベースは全く別の場所から利用することができる。
これは結構すごいことだと私は感動した。もしかしたら「融け込んだデータベースを更に他から参照して使う」ということのイメージを持つかどうかで話の印象は大きく違ってくるかもしれない。あくまで自分ひとりの世界の中に限られる話だが、完全にシステマチックな構造の中に全くシステマチックでない形のものが恰もシステマチックに作られているかのようにしれっと混じることができる、そのようなイメージである。
関連度が高いかもしれない記事
- アウトライン型データベースとしてのDynalist
- 内部処理の変更に伴うお知らせ/文章エディタとしてのDynalist
- Notion日誌:自己不在の不安が私を「データベース」に憧れさせた
- ツール製作日誌:HyperDatabase
- アウトライナー×つぶやき×平面配置②~ツール紹介編~
他の「Dynalist」タグの記事
- 【Dynalist】コメント書式をスクリプトで実現してみる
- 四つのエッセンシャル・アウトラインのその後と三つの四象限
- 【Dynalist】考え事を進める時に私が使っている記号
- 内部処理の変更に伴うお知らせ/文章エディタとしてのDynalist
- Dynalistのノードの見た目を粒状にして目が滑るのを防ぐ
- 【Dynalist】ノードリンクのスタイルをCSS上書きで見やすくする
- 【Dynalist】タイトルノードのノート欄にコードブロックでファイルの定義を書いてみる
- ノードリンクを活用し全てのノードに意味のあるアウトラインを作っていく
- アウトライン型データベースとしてのDynalist
- Dynalistにデジタルメモを集約した
- 『ライフハックの道具箱2024』にてCapacities紹介記事を書きました
- ノートツール環境スナップショット(2024/09)
- ノードの本文を判定して任意のスタイルを設定する(Dynalist)
- ライフ・アウトライン日記: ノート欄を楽しむ
- サイトの作り方④取得したデータを加工する
- サイトの作り方③Dynalist APIを理解する
- ノート欄に本文を貼る(Dynalist)
- 知見ノートを作る/タグ機能と仲良くなった②(Dynalist)
- Chrome拡張機能を自分で作って活用する(Dynalist)
- ブックマークレットを活用する(Dynalist)
- タグ機能と仲良くなった(Dynalist)
- ノート機能と仲良くなった(Dynalist)
- ファイル・フォルダ機能と仲良くなった(Dynalist)
- アウトライナー(Dynalist)と仲良くなった
- Dynalistでブログを書く
- アウトライナー日誌:バレットを「┠」にしたらバレット感に邪魔されなくなった
- デジタル日記の試み④~Dynalistに日記と日誌のファイルを作る~
他の「Dynalist API」タグの記事
他の「アウトライナー」タグの記事
- 階層付きマークダウンアウトライナーを作ろうとした
- Dynalistのノードの見た目を粒状にして目が滑るのを防ぐ
- ノードリンクを活用し全てのノードに意味のあるアウトラインを作っていく
- メールはアウトライナーで読む
- アウトライン型データベースとしてのDynalist
- ノードの本文を判定して任意のスタイルを設定する(Dynalist)
- 「文脈エディタ」としてのアウトライナー
- ライフ・アウトライン日記: ノート欄を楽しむ
- ノート欄に本文を貼る(Dynalist)
- 知見ノートを作る/タグ機能と仲良くなった②(Dynalist)
- Chrome拡張機能を自分で作って活用する(Dynalist)
- ブックマークレットを活用する(Dynalist)
- タグ機能と仲良くなった(Dynalist)
- ノート機能と仲良くなった(Dynalist)
- ファイル・フォルダ機能と仲良くなった(Dynalist)
- アウトライナー(Dynalist)と仲良くなった
- アウトライナーを前にしてやりたくなること
- アウトライナー×つぶやき×平面配置②~ツール紹介編~
- アウトライナー×つぶやき×平面配置①~経緯編~
- アウトラインではなくキューを作る
- ツール製作日誌:カード式アウトライナー③カードっていうかルーズリーフだった編
- アウトライナーと手帳と表紙
- タイムライン型・カード型・デスクトップ型②~デスクトップ型~
- タイムライン型・カード型・デスクトップ型①~タイムライン型とカード型を使い分ける~
- ツール製作日誌:カード式アウトライナー②背景説明編
- ツール製作日誌:カード式アウトライナー①機能説明編
- 座標のない平面
- ツール製作日誌:「面のアウトライナー」
- アウトライナー日誌:バレットを「┠」にしたらバレット感に邪魔されなくなった
- デジタル日記の試み④~Dynalistに日記と日誌のファイルを作る~
- アウトライナー日誌:アウトライナーとは何型のメモなのか
- 発想を文脈から解放するには④~余談~
- アウトライナー日誌:「設計図」または「説明図」という意識を持ってみた
- アウトライナーの使い方ド下手問題~はじめに~
他の「自分仕様にする」タグの記事
- Dynalistのノードの見た目を粒状にして目が滑るのを防ぐ
- ノードリンクを活用し全てのノードに意味のあるアウトラインを作っていく
- アウトライン型データベースとしてのDynalist
- B6バインダーを自作する(案)
- Obsidian再び
- ファイルというモノから解放されて漸くデジタルがデジタルになった
- ひとり掲示板で自由に呟く
- 【こういう】Scrapboxのページタイトルはスレタイ風に隅付き括弧を使うことにした【形式】
- NTA-DIY:1ヶ月目⑨~ブックマーク管理ツールを作ってみる~
- ツール製作日誌:HyperDatabase
- 2023/01/08 ―― アイコンと生まれる表現/ドット絵を描くツール
- ローカルのディレクトリの構造を大整理した
- のらてつの茶の間とは
- ツール製作日誌:プログラミングの勉強を開始して半年の振り返り
- ツール製作日誌:カード式アウトライナー②背景説明編
- ツール製作日誌:カード式アウトライナー①機能説明編
- ツール製作日誌:タスク&スケジュール把握ツール
- ツール製作日誌:三ヶ月で劇的ビフォーアフター②‡‡‡生き方改革編
- ツール製作日誌:三ヶ月で劇的ビフォーアフター①‡‡‡自作ツール紹介編
- アウトライナー日誌:バレットを「┠」にしたらバレット感に邪魔されなくなった
- Office日誌:フォントと背景で「自分の場」感を演出する
- Office日誌:思想を自分の手に取り戻そう
- HTML日誌:自分のためだけにHTMLを書く
- 知的生産を「自分の想像を大事にしようとすること」と言い換える
- Git日誌:テキストファイルをホワイトボードのように使う
他の「自分らしいコンピューターライフ」タグの記事