(マークダウン)とは、プレーンテキスト形式で書式付きテキストを記述する軽量マークアップ言語である。
テキストエディタで手軽に書いた文書からHTMLを生成するために開発されたが、PowerPoint形式やLaTeX形式のファイルへ変換するソフトウェア(コンバータ)も開発されている。各コンバータの開発者によって拡張が施された各種の方言が存在する。
オリジナルのMarkdown 「書きやすくて読みやすいプレーンテキストとして記述した文書を、妥当なXHTML(もしくはHTML)文書へと変換できるフォーマット」として、ジョン・グルーバーにより作成された。アーロン・スワーツも大きな貢献をしている。の記法の多くは、電子メールにおいてプレーンテキストを装飾する際の慣習から着想を得ている。
はグルーバーによって書かれたというプログラムを指すこともある。このスクリプトは、の形式でマークアップされたテキストをXHTML文書もしくはHTML文書に変換するものである。はスクリプト単体として利用することができると同時に、やのプラグインなどからも利用できる。
は、その後第三者によってのモジュール (Text::Markdown) として再実装され、さらに等の他のプログラミング言語でも実装された。はBSDライセンスの下で配布され、いくつかのコンテンツ管理システム (CMS) でもプラグインとして利用できる。
利用例と方言 有名なMarkdown方言として、や、などがある。その他のサービス・コンバータにおいても表やソースコードの記法などで独自の拡張が加えられていることが多い。以下にMarkdownの利用例を挙げる。
や他のサイトは、を改変した方言をデフォルトのフォーマットシステムとして利用している。 はをマークアップの選択肢として提供している。 はを利用している。 はの方言をコメント・メッセージ・その他のフォーマットに利用している。グルーバーはこの方言について「利用者が送信するコメントのような状況」において「優れた派生」として記述したことがある。のちに、CommonMarkベースの仕様に更新している。 は、記述用のマークアップ言語の選択肢としてを提供している。 は拡張を使ってウィキ構文を提供している。この拡張構文はと呼ばれる。 はブログエントリ記述用のマークアップの選択肢としてを提供している。 はでポストを編集できる。 Discordは独自のMarkdown方言でテキストを装飾できる。これはほとんどMarkdownと同じ記法だが、H4~H6が存在しない。(-# を先頭につけることでプレーンテキストより小さくする記法が代わりに存在する)
StackEditはオンラインMarkdownエディタの一つ。GitHub Flavored Markdownに、数式記述(MathJaxによる)とUMLシーケンス図、フローチャートを記述できる拡張が加えられている。
記法の例 以下の例はの記法の包括的なリストではないし、ひとつの効果を実現するために複数の記法が利用できる場合も多い。詳細はに記載されている。
段落 段落は1つ以上の連続したテキストであり、空行によって分けられる。通常の段落をスペースやタブでインデントしてはならない。 これは段落です。2つの文があります。
これは別の段落です。ここにも2つの文があります。
改行 テキストに挿入された改行は取り除かれる。これは、画面の大きさに応じて改行を行う処理はWebブラウザが担当すべきであるという設計思想による。強制的に改行したい場合は、2つ以上のスペースを行末に残した上で改行すると <br> になる。
見出し テキストの前にいくつかの'#'を置くことで見出しを作ることができる。'#'の数が見出しのレベルに対応する。HTMLは見出しのレベルを6まで提供している。 # レベル1の見出し
## レベル2の見出し
### レベル3の見出し
#### レベル4の見出し
##### レベル5の見出し
###### レベル6の見出し
最初の2つのレベルには代替の記法が存在する。 レベル1の見出し
レベル2の見出し
引用 > "このテキストは、HTMLのblockquote要素に囲まれます。 blockquote要素はreflowableです。テキストを好きなように 改行することができます。改行したとしても、変換後はひとつの blockquote要素として扱われます。"
上記は次のようなHTMLに変換される。
<blockquote> <p>このテキストは、HTMLのblockquote要素に囲まれます。 blockquote要素はreflowableです。テキストを好きなように 改行することができます。改行したとしても、変換後はひとつの blockquote要素として扱われます。</p> </blockquote>
リスト * 順序無しリストのアイテム * サブアイテムはタブもしくは4つのスペースでインデントする * 順序無しリストの別のアイテム
+ 順序無しリストのアイテム + サブアイテムはタブもしくは4つのスペースでインデントする + 順序無しリストの別のアイテム
- 順序無しリストのアイテム - サブアイテムはタブもしくは4つのスペースでインデントする - 順序無しリストの別のアイテム
1. 順序付きリストのアイテム 1. サブアイテムはタブもしくは4つのスペースでインデントする 2. 順序付きリストの別のアイテム
コード コード(等幅フォントで整形される)を含める場合、インラインコードは「`some code`」のようにバッククオート (U+0060) で囲むことになる。 これは段落です。文中に`コードテキスト`を含みます。 複数行にまたがるコードは、タブもしくは4つ以上のスペースを行頭に書くか、3つずつのバッククオートでコード全体をくくる。開始を表すバッククオートの3つ目に続けて、任意で言語名を明記することができる。 1行目 2行目 3行目 ```javascript (() => { 'use strict';
console.log('Hello world'); })(); ``` は通常、改行や連続したスペースを削除するため、インデントやコードのレイアウトを壊す可能性があるが、この場合 は空白をすべて保持する。
水平線 1行の中に、3つ以上のハイフンやアスタリスク・アンダースコアだけを並べると水平線が作られる。ハイフンやアスタリスクのあいだには空白を入れてもよい。以下の行はすべて水平線を生成する。
リンク リンクは次のように記述できる。 [リンクのテキスト](リンクのアドレス "リンクのタイトル")
参照目的のリンクとして、脚注として段落外に含めることもできる。 [リンクのテキスト][linkref]
段落外もしくは文書の最後に次のような記述があれば、それは参照リンクとして機能する。 [linkref]: リンクのアドレス "リンクのタイトル"
強調 *強調* もしくは _強調_(斜体として表現されることが多い)
**強い強調** もしくは __強い強調__(太字として表現されることが多い)
画像 画像は以下のように埋め込める。リンクの冒頭に ! が付いている形式である。
 
バックスラッシュによるエスケープ Markdownが書式化コマンドとして解釈する文字は、バックスラッシュ(U+005C, 日本語環境では円記号として表示される場合もある)を加えることによって、その文字そのものとして解釈させることができる。例えば \* は、テキスト強調の開始ではなくアスタリスクとして出力される。バックスラッシュ自身を出力したい場合は、\\とする。
なお、Microsoft Windowsのファイルシステムではパスの区切り文字にバックスラッシュ\が使われ、ネットワークリソースには2つのバックスラッシュ\\で始まるUNC (Universal Naming Convention) パスが使われるFile path formats on Windows systems - .NET | Microsoft Learnが、Markdownの文書内にそのようなパス文字列を含める場合は配慮が必要である。
インラインHTML 生のHTMLのブロックレベル要素の中にあるテキストに対してMarkdownはいかなる変換も行わないので、HTMLのブロックレベル要素のタグでテキストを囲むことによって、Markdownのソース文章の中にHTMLのセクションを加えることもできる。
<font color="red">赤</font>
脚注
関連項目 コンピュータ言語 データ記述言語 マークアップ言語 軽量マークアップ言語
外部リンク
CommonMark CommonMarkのドキュメントの日本語訳