Markdownで記事を書けるようにした

#71
2022.10.27

すごく今更感がありますが、Markdownからブログの記事を書けるようにしてみました。今まさに、この記事をMarkdownで書いています。MarkdownパーサーにはRemarkを使用しました。まだ実験的な実装であり、全てのノードをサポートしているわけではありませんが、原理上は実装できます。

今までの書き方

今までは独自定義のXMLを直接編集して書いていました。この独自XMLはHTMLを踏襲しつつ、数式用の要素を追加したりしたものです。個人的に、XMLの曖昧性の無さ、そして互換性の高さが気に入っていたのです。しかし、文章を書く上では、その厳密性が仇となっていました。段落毎に<p>タグを打ち込んだり、<>記号を文章として入力するために&lt;&gt;と入力しなければならなかったのです。

ではMarkdownはどうか

一方で、Markdownはと言うと、書き方が一様に定まらなかったり、処理系によって機能差があったりと、長期的に生きながらえるフォーマットではないような気がします。ですが、Markdownの方が圧倒的に書きやすいのは明らかです。ほとんどプレーンテキストの要領で書けますし、エスケープもよしなにやってくれます。良い意味でも悪い意味でも、曖昧で柔らかい印象があります。

マークアップされた文章というのは結局のところはSyntax Treeなわけです。以上のことを踏まえると、Syntax Treeを格納する、という側面ではXMLの方が優れており、Syntax Treeを生成する、という側面ではMarkdownの方が秀でていると言えるでしょう。

私のアプローチ

そこで私が思いついたアプローチは、格納形式としてXMLを使いつつ、Markdownでドラフトを書く、という方法です。MarkdownをXML編集のためのインターフェースとするのです。

なんでこんな方法にしたかと言いますと、個人的にMarkdownを「ソース」と呼ぶことに抵抗があるからです。私が思うに、MarkdownはあくまでSyntax Tree生成のための「インターフェース」なのです。

Unification

このアプローチはなにも、Markdownに限って使える話ではありません。この世にはいくつもの軽量マークアップ言語と呼ばれる言語があるのです。これらの言語も同様に、Syntax Treeを変換するコードを書けば、XMLの形式に統一して格納することができます。

まあ、一つのフォーマットに統一することができれば、XMLではなくJSONでも良いのですけどもね。ただドキュメントとしての見栄えを考えるとXMLかなと思います。