ヒトにもAI Agentにも優しいMarkdownの仕様まわりのメモ

CommonMark

2004年3月にJohn Gruber氏によって公開されたMarkdown syntax1は構文にあいまい性があり、特に、空行や入れ子など未定義な部分が多かった。そこで、Markdownの標準規格と包括的なテストスイートの作成を目指して、CommonMarkプロジェクトが2014年10月にスタートした。

Markdownという名称の利用をGruber氏が好まなかったため2、CommonMarkという名前になっている。

CommonMark Specをみると、オリジナルのmarkdown.plの挙動に準拠しつつ、構文としての仕様を提供している。

現時点では、2024年1月28日のバージョン0.31.2が最新。まだバージョン1にも、ましてやRFCなどで標準化されたわけでもないが、多くのMarkdown変換処理がこちらを採用しているため、実質その役割は果たしていると言える。

GitHub Flavored Markdown

略してGFM。我々がMarkdownと呼んでいるものは多くはGFMであり、実質的なデファクト。

Markdownを採用してから長らくMarkdownの方言としてやってきたが、2017年に、CommonMarkをベースにするというアナウンスがあり3GitHub Flavored Markdown Specが公開された。

GFMが独自に足しているTask listやTableは、extensionとして記述されている。このextensionは異常処理部分の記述がほとんどないため、CommonMarkと同等のレベルで"仕様"と呼べるかは議論がある。

HugoでMarkdown変換に使用しているyuin/goldmarkの考え方が非常に明確で良い。どれが仕様?というの議論は今はあまり意味をなさない。黙ってGFMを見よ。

GitHub-Flavored Markdown is widely used and is based upon CommonMark, effectively mooting the question of whether or not CommonMark is an ideal specification.

goldmark > Motivation > Standards-compliant