Markdown エディターの背景にある物語

Markdown は、プレーンテキストのままでも自然に読める書式付きテキストの書き方です。強調のアスタリスク、見出しのシャープ記号、リストのハイフンは、人々がすでにメールで使っていた書き方から取り入れられました。このページでは、そのシンプルな発想が README ファイル、メモ、ドキュメントの共通言語になった経緯を紹介します。

暗い机の上に開いたノートと、片側にプレーンテキスト、もう片側に整形済みテキストが映る光る分割画面
暗い机の上に開いたノートと、片側にプレーンテキスト、もう片側に整形済みテキストが映る光る分割画面

メールから生まれた

2004 年、John Gruber は Aaron Swartz の協力を得て、自身のサイト Daring Fireball で Markdown を公開しました。目標は、そのままでも読み書きしやすく、それでいて HTML にきれいに変換できるテキストでした。多くの決まりはメールや Setext などの古いテキスト形式から来ています。行の下に等号を並べて見出しにし、単語をアスタリスクで囲んで強調し、行頭にハイフンを置いてリストにします。最初の変換ツールは一本の Perl スクリプトでした。

方言が多すぎる

元の説明には、入れ子のリストをどれだけ字下げするか、空行がいつブロックを終えるかなど、曖昧な境界ケースが多く残っていました。実装ごとに判断が異なり、同じテキストがサイトによって違って見えることもありました。2014 年、John MacFarlane、Jeff Atwood らが数百の例を含む厳密な仕様を公開しました。当初は Standard Markdown と呼ばれましたが、Gruber の反対を受けて CommonMark に改名されました。

GitHub Flavored Markdown

GitHub は README ファイル、Issue、コメントを通じて Markdown をプログラマーの日常業務の一部にしました。2017 年には、CommonMark の厳密な上位互換として GitHub Flavored Markdown の正式な仕様を公開しました。列の配置を指定できる表、チェックボックス付きのタスクリスト、二つのチルダによる取り消し線、自動認識されるリンクが加わりました。すでに普及していた言語名付きのフェンスコードブロックにより、構文ハイライトも可能になりました。

プレビューを無害化する理由

Markdown は生の HTML を使えるため便利ですが、危険もあります。他人の Markdown を表示するページでは、隠れた script タグ、画像の onerror 属性、javascript リンクが読者のブラウザーでコードを実行するおそれがあり、これはクロスサイトスクリプティングと呼ばれます。そのため、このエディターは生の HTML を文字として表示し、危険なリンクのスキームを取り除き、表示前に許可された要素と属性のリストで結果を絞り込みます。

よくある質問

Markdown を考案したのは誰ですか?

2004 年に John Gruber が Markdown を作りました。Aaron Swartz は初期からの重要な協力者でありテスターでした。

CommonMark と GFM の違いは何ですか?

CommonMark は Markdown の中核を定めた厳密な仕様です。GitHub Flavored Markdown はそれを土台に、表、タスクリスト、取り消し線、自動リンクを加えています。

HTML が文字として表示されるのはなぜですか?

安全のためです。生の HTML にはスクリプトが含まれる可能性があるため、エディターはそれをエスケープし、無害だとわかっている要素だけを生成します。

試してみますか?

ブラウザで PictorX を開きます。インストール不要、始めるのにクレジットカードも不要です。

Markdown エディターを開く