GitHubなど、簡易な書式付きテキストの作成に「Markdown(マークダウン)」を使うことが増えてきた。前回扱ったPowerToysのFile Explorer add-onにもマークダウンのプレビューハンドラがある。これを使うことで、エクスプローラーからもマークダウンのプレビューが可能になる。
そもそもMarkdownとはなんぞや?
Markdownは、軽量のマークアップ言語として作られた。「マークダウン」という名称は、SGML(Standard Generalized Markup Language)やHTML(HyperText Markup Language)などの「マークアップ言語」とは違って「軽い」というイメージを持たせたとされている。
Markdownは、基本的には簡易な表現を使って記述し、これをHTMLに変換してウェブブラウザなどで表示する。最初は、マークダウンをHTMLに変換するPerlのスクリプトがあっただけで、レンダリングのプログラムなどは作られなかった。このあたりも含めて、実装も“軽く”できていたのである。
ただ、非公式の簡単な仕様と、Perlによる実装があるのみだったために、結果的に多数の「方言」(dialect)を生み出した。以下の表にオリジナルの仕様を示す。オリジナルの仕様では、テーブルなどに関しては、HTMLを直接記述することが想定されていた。
Markdownは便利だが、オリジナルの仕様では記述力が少々弱く、一般的なウェブページを作るには、HTMLを直接記述する必要があった。また、オリジナルのMarkdown/HTML変換スクリプトは、それほど複雑なものでもなかったことから、多くの開発者が機能を追加し、さまざまな実装が登場した。
Markdownのファイルは誰が見るのか?
ただ、こうしたマークアップ言語の常として、レンダリングされたものを見るのは、データを受け取った相手であり、自分はマークアップの作成側になることが多い。この場合、ミニマムな仕様を使うことが望ましくなる。
別のパターンとしては、サービスがMarkdownファイルを要求する場合がある。たとえば、GitHubのREADMEファイルは、GFM(GitHub Flavored Markdown)と呼ばれる仕様を受け付ける。もちろん、ミニマムなオリジナル仕様でも問題はないが、文書によっては、テーブルのような要素を必要とすることがあるだろう。
最後のパターンは、個人用のデータ記録形式として使う場合だ。この場合、作るのも見るのも自分だけなので、細かい実装の違いを意識することはない。しかし、多くの場合、何らかのMarkdownエディタを使うことになり、その仕様に従わねばならないことが多い。
Markdownは簡易で覚えやすいというメリットもあるが、Markdownでなければならないという場合は少なく、他の形式でも同じという場合がある。たとえば、Microsoft Wordやその互換ソフトウェアであれば、GUIを使った書式設定や、高度な組版ルールの適用が可能だ。
Markdownの標準化
多くの開発者がMarkdownの実装にあたって、さまざまな拡張機能を追加した。Markdownのオリジナルの開発者は、他の開発者に厳密な実装を要求するわけでもなく、また、標準化のための活動も進まなかった。どちらかというと自分たちのために作ったものが、広く世間に広まったので、そのままにしていたという感じだった。
ただ、前述のように、他人の作成したMarkdownを見るというパターンを考えると、標準化を望む声もあった。あるいは、GitHub仕様のように人気の高いサービスが既定する仕様を利用することを考える人たちもいた。
現状としては、以下の表のような仕様が標準的なものとしてある。
最小限の仕様として、開発者のウェブページにあるMarkdownの仕様がある。まずは、これを基本として利用するのがいいだろう。前述の表ではこれを「オリジナル」と表記してある。
CommonMarkは、Markdownの標準化活動の1つ。Markdownの実装を行った開発者、サービス主宰組織などから集まったメンバーによる標準化に対する議論が行われている。ただし、現状では、暫定的なスペックはあるものの、バージョンが0.31.2(2024年1月28日)となっているように、最終段階というわけでもない。
もう1つは、RFCによる定義がある。メールのマルチメディア形式であるMIMEにMarkdownをMEDIA Typeとして取り込む関係で対象を明確にする必要があった。RFC 7763では、これをオリジナルに求めた。しかし、これだけでは標準化の動きや利用率の高い実装に対応しきれない。
そこでガイダンスとしてRFC 7764を定義する。同時に、text/markdownメディアタイプのVariantをIANAで定義した。IANAで定義されたからといって必ずしも何らかのお墨付きが得られるわけではないが、主要な実装であることの判断は可能だ。
以下の表は、IANAに登録されているVARIANTSの一覧である。

この連載の記事
-
第508回
PC
Scalable Vector Graphics(SVG)そもそも何なのか? -
第507回
PC
Windows 11の「開発者モード」とは何か? -
第506回
PC
Windows 11は早くも来秋登場の26H2プレビューの準備が始まる -
第505回
PC
結構変化しているWindows 11のエクスプローラーの基本設定を見直す -
第504回
PC
新しいOutlookとOutlook Classic、そろそろ古いOutlookとExchangeの組み合わせは引退の頃合いか -
第503回
PC
機能が増えたこともあり、寄せ集めから統合化に進むWindowsの便利ツール「PowerToys」 -
第502回
PC
Windows 11でBluetoothのオーディオ新規格「Bluetooth LE Audio」を試す -
第501回
PC
Windows 11 Ver.25H2での変更点、新機能を整理する -
第500回
PC
Windows 11 Ver.25H2が完成した -
第499回
PC
Windowsでの致命的だが回復可能なエラーに備える手段を2つ紹介 -
第498回
PC
Windows Terminalの安定版V1.23が公開 設定UIが改良される - この連載の一覧へ















