Closed7

Markdown Refactoring Toolsを作るか考える

kyoh86kyoh86

背景

  • Markdownで色んなドキュメントをまとめたい
  • CMSがほしいわけじゃない
    • 中途半端な出来のエディタを使わされる苦しみ
    • チームメンバーに基盤を強制する苦しみ
    • タグやカテゴリが付けられます!ウェブサイトとして公開できます!我々の流儀に従えば
  • esa.ioやdocbase.ioのような「フラットに情報を置く」スタイルでは限界がある
    • 日本語における「検索」というハードルの高さ
    • 構造化からは逃れられないのではないか
    • タグやカテゴリは「見つけやすくするための一助」にはなるが、本質的に必要なものから逃げている
    • 情報が多くなればなるほど「自分が今、相対すべきものはコレだ」というスコープを少しずつ狭める体験=ディレクトリ/階層的構造には向き合わなくてはならないのではないか

成し遂げたいこと

相互リンクとディレクトリ階層を駆使して、体系化・構造化されたドキュメント群を構築したい。

kyoh86kyoh86

障害

掲げた目標に対して、目下障害となっていることがある。
「最初から完全な構造は設計できない」。
新しくドキュメント化しなければならないことが生まれる度、先の構造は否定されて新しい構造に置き換えるべき、となることがある。

障害を超える方法論

  • 障害自体を否定する: 最初から完全な構造を設計できる魔術を手に入れる
  • 障害を受け入れて共存する: 完全ではない構造からスタートできるようにする

→ すなわち、リファクタリングの平易さが欲しい

リファクタリング

Markdown文書群におけるリファクタリングとはどのような操作か

  1. 文書の分割
  2. 文書の結合
  3. 文書の移動

どの操作も、

  • テキストを移動する
  • 関連ドキュメント群の中で、カットしたテキストへのリンクを付け替える
  • (必要であれば)元の文書から新しい文書へのリンクを付ける

基本的にはこれだ。

  1. 文書の削除

これについては

  • テキストを削除する
  • 関連ドキュメント群の中で、カットしたテキストへのリンクを付け替える
kyoh86kyoh86

用意したいもの

文書の分割、結合、移動、削除を気軽に行える手段

サポートしたい環境

VimやVSCodeなど、テキストエディタにとらわれずに作業できるものが良い
→ CLIで作って、エディタ側の支援はよしなに、かな。

必要なもの

文書群の操作可能なMarkdown AST

必要な調査

CommonMark、GitHub Flavored Markdownを基軸として、Markdownの文法に対応したASTパースライブラリを持つスタックを使いたい

kyoh86kyoh86

ライブラリ調査

Go

https://github.com/yuin/goldmark が強すぎる。Hugoでも使われてるためか、Contributionも手厚い。
一応拡張性があり、CommonMark、GFM以外にも拡張できる模様。

JavaScript

https://github.com/remarkjs/remark こちらもほぼコレ。Deno対応、拡張はGFM以外未対応。

Rust

https://github.com/kivikakk/comrak これも競合なし。拡張性はGFMのそれをモジュールごとに対応している模様。ただ、それ以外はContribution待ち。

Rustはまだ不慣れだし、DenoかGoかなぁ

このスクラップは2022/04/28にクローズされました