🗂

マークダウンソフトにデータベース機能を追加しました

2025/02/13に公開

マークダウンソフトの開発日記

今回は、マークダウンソフトにデータベース機能を追加しました。

できること

すべてのファイルに対してリンクを設定できる。
プロジェクト、タグという概念はなく、ファイルのつながりによって、ユーザが自らそういった関係を作る。
すべてがフォルダであり、すべてがファイルな感じ。
このデータベースは、別窓で開くが、移動した場合には、エディタ上でそれが同期される。
エディタで文書を開いた場合もまた、データベース側が同期される。

また、新しいファイルを作成する際は、今いるファイルに紐づける形でデータベースに追加される。

参照を固定し、どこで新規ファイルを作っても、同じ場所に作成するように設定も可能。


従来のデータベース


今回のデータベース

listでファイルIDの組を保存する形をとっているので、どんなつながりでも許容する。

なぜ、普通のタグ、文書のデータベースにしなかったのか。
それは、以下の動画を参考にしたからだ。

https://youtu.be/cCK_hGfi2cY?si=pD5JlnLX112jL5UY

上記の動画では、ノーションでの文書ファイル管理について、解説している。
タグとタグをさらにデータベース化したような構造で文書を管理しているということが紹介されている。

これは、有用であり、面白いと感じたので、自分のメモアプリのデータベース設計のベースにこれを据えようと考えた。

最終的に、これらは、タグ、プロジェクト、文書の三つになるのではないかという風な解釈をし、
開発を進めた。

しかし、タグ、プロジェクト、文書の三種類のデータベースを別に作る必要があり、とても時間がかかることがわかってきた。

今回、データベースはすべて自作しているため、できるだけ、保守がしやすいようコンパクトにする必要があった。

結果として、複数の要素を独自に定義できる、無指向性のデータベースを作成するに至った。

実際の画面

モードが2属性あり、
表示、編集である。

表示は全部のファイルを表示するか、今開いているファイルにつながっているものだけを表示するか

編集は三つモードがある。

  • 移動 ファイルをいどうできる
  • 結合反転 ファイル同士を結び付けたり、離したりする。
  • 削除 選択した要素を削除する(データベースから表示は消えるが、データは消えない)

また、ROOT_FILE と書かれていますが、これは今開いているファイルの名前です。

一番左のくるくるはリロードです。

また、この結合のデータは、マークダウンのエディタ側で

[.database]{適当な文字}

で表示できるようになっている。
また、適当な文字でなく、ファイルパスを指定すると、それでデータベース検索を行い、その結果を表示してくれる。AND検索にも対応している。

また、起動時に開くファイルを設定できるので、同じプロジェクトが続いている場合には、そのプロジェクトを起動時の設定にして運用するなどできる。

感想

満足はしているが、まだまだ、改善すべき点も多くあるように感じた。

ファイル検索は、ファイルの個数の2乗くらいの計算量ですし、新しい要素にIDを振るのにも線形時間かかっている。

ほかには、些細なことですが、英語の綴りミスがありました。
検索の英語のsearchの綴りが、毎回出てこず、Tを入れたがる症状が多発してました。
seatch??
sertch??

これを機に覚えます。
.

.

.

課題は残っていますが、形にすることが大事なので、今回はこれでいいものとします。

試行錯誤する過程は楽しかったですし、個人ブログにもたくさん助けられました。

解説を投稿してくださっている方々、本当にありがとうございます。いつも助かっています。

以上。

Discussion