🌰 donguri
一覧

Markdownとは何か・何が便利なのか

Report #66調査日: 読了時間: 約6分

要点

Markdownは、2004年にJohn Gruberが考案した「プレーンテキストのまま読み書きでき、後からHTMLに変換できる」軽量な記法。見出しや強調、リストなどを簡単な記号で書けるため、専門ツールがなくても構造化された文書を作れる点が便利で、GitHubなどのREADMEやドキュメント作成で広く使われている。ただし元の仕様には曖昧さがあり、実装ごとに解釈や拡張が異なる点には注意が必要だ。GitHubが使うGitHub Flavored Markdown(GFM)は、CommonMark仕様の厳密な上位互換として、表組みやタスクリストなどの拡張機能を加えたものである。

このノートの内容

調査結果

Markdownの正体

Markdownは、2004年にJohn Gruberが考案した軽量な記法であり、同時に公開されたPerl製の変換ツールでもあるDaring Fireball: Markdown[1]。

設計上いちばん大切にされているのは「読みやすさ」だ。Markdownで書いた文書は、HTMLに変換する前の生のテキストのまま読んでも意味が通るように作られている。#や*のような記号を使うのは、メールの平文形式にヒントを得たためだというDaring Fireball: Markdown[1]。

なお、設計フィードバックにはAaron Swartzも大きく関わったとされているDaring Fireball: Markdown[1]。

何が便利なのか

  • 書きやすく読みやすい: HTMLタグのような装飾を書かなくても、# 見出しや**太字**のような直感的な記号だけで文書の構造や強調を表現できるDaring Fireball: Markdown[1]。
  • プレーンテキストのまま使い回せる: 変換せずテキストエディタで開いても内容が破綻して見えないため、メモやチャット、コードのコメントなどにもそのまま使いやすいDaring Fireball: Markdown[1]。
  • HTMLへ変換できる: もともとMarkdownは、書いた文章を構造的に正しいHTMLへ変換する用途のために、変換ツールとセットで公開されたDaring Fireball: Markdown[1]。
  • GitHubなどで標準的に使われている: GitHubではMarkdownを使って、見出し・リスト・強調・コードブロック・リンクや画像・引用・タスクリストなど、文章とコードの両方を整った形で書けるGitHub Docs: 基本的な書き方とフォーマットの構文[2]。見出しを2つ以上使うと、GitHub上でファイルの目次が自動生成されるという実用的な利点もあるGitHub Docs: 基本的な書き方とフォーマットの構文[2]。

注意点:仕様の曖昧さと方言の存在

Gruberが2004年に発表した元の仕様には曖昧な部分が多く、時間の経過とともに実装ごとに解釈が分かれていった。そのため、同じMarkdown文書でも、使うツールによって見た目が異なることがあるCommonMark[3]。

この問題を解決するために生まれたのが「CommonMark」だ。曖昧さのない仕様とテストスイートを備えた標準化されたMarkdown仕様で、GitHub、GitLab、Discourse、Reddit、Stack Overflow/Stack Exchange、Swift、Qtなど、複数のツール・サービスがこれを採用またはベースにしているCommonMark[3]。

GitHubが使う「GitHub Flavored Markdown(GFM)」もそのひとつだ。仕様書上ではCommonMarkの厳密な上位互換(strict superset)と位置付けられており、CommonMarkの構文をすべて含んだうえで、表組みやタスクリスト、取り消し線などの拡張機能を加えているGitHub Flavored Markdown Spec[4]。

まとめ

Markdownの最大の価値は、装飾記号を最小限にして読みやすいプレーンテキストのまま文書を書き、必要に応じてHTMLなどへ変換できる点にある。GitHubのREADMEやドキュメント、チャットツールなど幅広い場面で、手早く整った文章を書くための標準的な手段として定着しているDaring Fireball: Markdown[1] GitHub Docs: 基本的な書き方とフォーマットの構文[2]。

ただし、完全に単一の仕様というわけではない。CommonMarkのような標準化の取り組みや、GFMのようなその上位互換の方言が存在する背景も踏まえておくとよいCommonMark[3] GitHub Flavored Markdown Spec[4]。

注意事項・未確認事項

  • 元のMarkdown仕様ページ(daringfireball.net)には正式な公開日・更新日の記載が明確に確認できなかったため、published_atは空欄としている(バージョン1.0.1のリリースは2004年12月17日という記述があるが、ページ自体の最終更新日は未確認)。
  • GitHub Flavored Markdown(GFM)とCommonMarkの表組み構文などの細かな差分までは、今回の「ざっくり」レベルの問いの範囲外として深掘りしていない。
  • Markdownには他にも多数の方言(Pandoc、Qiita記法など)が存在するが、今回は代表的な原典とGitHubでの利用に絞って確認した。
  • CommonMarkの採用例としてVS Codeが挙げられるという記述は、commonmark.org本文を実際に確認したところ裏付けが取れなかったため削除した。VS Code自体がCommonMark(またはGFM)ベースの実装を使っているかどうかは、今回の調査範囲では確認できておらず未確認のまま残る。

参考文献

  1. Daring Fireball: Markdown↩1 ↩2 ↩3 ↩4 ↩5 ↩6 ↩7Daring Fireball (John Gruber)
  2. 基本的な書き方とフォーマットの構文 - GitHub Docs↩1 ↩2 ↩3GitHub, Inc.
  3. CommonMark↩1 ↩2 ↩3CommonMark
  4. GitHub Flavored Markdown Spec↩1 ↩2GitHub, Inc.

このレポートはAIによる調査・独立レビュー・推敲を経て自動生成されています。重要な判断では参考文献の原文と更新日を確認してください。

調査ノート一覧へ戻る