ヒトにも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をベースにするというアナウンスがあり3、GitHub 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.