Markdown
Markdown(マークダウン)とは、文書を記述する軽量マークアップ言語である。プレーンテキスト形式で手軽に書いた文書からHTMLを生成するために開発されたが、PowerPoint形式やLaTeX形式のファイルへ変換するソフトウェア(コンバータ)も開発されている。各コンバータの開発者によって拡張が施された各種の方言が存在する。
MIMEタイプ | text/markdown[1] |
---|---|
開発者 | ジョン・グルーバー |
初版 | 2004年3月19日[2] |
最新版 | 1.0.1 (2004年12月17日[3]) |
種別 | 軽量マークアップ言語 |
拡張 | MultiMarkdown Markdown Extra CommonMark |
ウェブサイト | daringfireball |
オリジナルのMarkdown
編集「書きやすくて読みやすいプレーンテキストとして記述した文書を、妥当なXHTML(もしくはHTML)文書へと変換できるフォーマット」として、ジョン・グルーバーにより作成された。アーロン・スワーツも大きな貢献をしている[4]。Markdownの記法の多くは、電子メールにおいてプレーンテキストを装飾する際の慣習から着想を得ている。
Markdownはグルーバーによって書かれたMarkdown.plというPerlプログラムを指すこともある。このスクリプトは、Markdownの形式でマークアップされたテキストをXHTML文書もしくはHTML文書に変換するものである。Markdown.plはスクリプト単体として利用することができると同時に、BlosxomやMovable Typeのプラグインなどからも利用できる[4]。
Markdown.plは、その後第三者によってCPANのPerlモジュール (Text::Markdown
) として再実装され、さらにPython等の他のプログラミング言語でも実装された。MarkdownはBSDライセンスの下で配布され、いくつかのコンテンツ管理システム (CMS) でもプラグインとして利用できる[5][6]。
利用例と方言
編集有名なMarkdown方言としてCommonMark[1]、Markdown Extra[2]やGitHub Flavored Markdown[3]、Marukuなどがある。その他のサービス・コンバータにおいても表やソースコードの記法などで独自の拡張が加えられていることが多い。以下にMarkdownの利用例を挙げる。
- Stack Overflowや他のStack Exchange Networkサイトは、Markdownを改変した方言をデフォルトのフォーマットシステムとして利用している[7][8]。
- PosterousはMarkdownをマークアップの選択肢として提供している[9]。
- RedditはMarkdownを利用している[10]。
- GitHubはMarkdownの方言をコメント・メッセージ・その他のフォーマットに利用している[11][12]。John Gruber has described this dialect as a "superior variant" for "situations like user-submitted comments".[13]。のちに、CommonMarkベースの仕様に更新している[14]。
- Bitbucketは、README記述用のマークアップ言語の選択肢としてMarkdownを提供している[15]。
- InstikiはMarkdown拡張を使ってウィキ構文を提供している。この拡張構文はMarukuと呼ばれる[16]。
- Squarespaceはブログエントリ記述用のマークアップの選択肢としてMarkdownを提供している[17]。
- TumblrはMarkdownでポストを編集できる[18]。
- MultiMarkdown
- CommonMark
- StackEditはオンラインMarkdownエディタの一つ。GitHub Flavored Markdownに、数式記述(MathJaxによる)とUMLシーケンス図、フローチャートを記述できる拡張が加えられている。
記法の例
編集以下の例はMarkdownの記法の包括的なリストではないし、ひとつの効果を実現するために複数の記法が利用できる場合も多い。詳細はfull Markdown syntaxに記載されている。
段落
編集段落は1つ以上の連続したテキストであり、空行によって分けられる。通常の段落をスペースやタブでインデントしてはならない。
これは段落です。2つの文があります。
これは別の段落です。ここにも2つの文があります。
改行
編集テキストに挿入された改行は取り除かれる。強制的に改行したい場合は、2つのスペースを挿入する。これは、画面の大きさに応じて改行を行う処理はWebブラウザが担当すべきであるという設計思想による。
見出し
編集テキストの前にいくつかの'#'を置くことで見出しを作ることができる。'#'の数が見出しのレベルに対応する。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');
})();
```
Markdownは通常、改行や連続したスペースを削除するため、インデントやコードのレイアウトを壊す可能性があるが、この場合 Markdownは空白をすべて保持する。
水平線
編集1行の中に、3つ以上のハイフンやアスタリスク・アンダースコアだけを並べると水平線が作られる。ハイフンやアスタリスクのあいだには空白を入れてもよい。以下の行はすべて水平線を生成する。
* * *
***
*****
- - -
---------------------------------------
リンク
編集リンクは次のように記述できる。
[リンクのテキスト](リンクのアドレス "リンクのタイトル")
参照目的のリンクとして、脚注として段落外に含めることもできる。
[リンクのテキスト][linkref]
段落外もしくは文書の最後に次のような記述があれば、それは参照リンクとして機能する。
[linkref]: リンクのアドレス "リンクのタイトル"
強調
編集*強調* もしくは _強調_(斜体として表現されることが多い)
**強い強調** もしくは __強い強調__(太字として表現されることが多い)
画像
編集画像は以下のように埋め込める。リンクの冒頭に ! が付いている形式である。
![Altのテキスト](/path/to/img.jpg)
![Altのテキスト](/path/to/img.png "タイトル")
バックスラッシュによるエスケープ
編集Markdownが書式化コマンドとして解釈する文字は、バックスラッシュ(U 005C, 日本語環境では円記号として表示される場合もある)を加えることによって、その文字そのものとして解釈させることができる。例えば \*
は、テキスト強調の開始ではなくアスタリスクとして出力される。バックスラッシュ自身を出力したい場合は、\\
とする。
なお、Microsoft Windowsのファイルシステムではパスの区切り文字にバックスラッシュ\
が使われ、ネットワークリソースには2つのバックスラッシュ\\
で始まるUNC (Universal Naming Convention) パスが使われる[19]が、Markdownの文書内にそのようなパス文字列を含める場合は配慮が必要である。
インラインHTML
編集生のHTMLのブロックレベル要素の中にあるテキストに対してMarkdownはいかなる変換も行わないので、HTMLのブロックレベル要素のタグでテキストを囲むことによって、Markdownのソース文章の中にHTMLのセクションを加えることもできる。
<font color="red">赤</font>
脚注
編集- ^ “RFC 7763”. IETF. 2018年12月12日閲覧。
- ^ Aaron Swartz (2004年3月19日). “Markdown”. 2018年12月12日閲覧。
- ^ John Gruber (2004年12月17日). “Markdown 1.0.1”. 2018年12月12日閲覧。
- ^ a b Markdown 1.0.1 readme source code“Daring Fireball - Markdown” (2004年12月17日). 2011年11月13日閲覧。
- ^ “MarsEdit 2.3 ties the knot with Tumblr support - Ars Technica”. 2009年8月11日閲覧。
- ^ “Review: Practical Django Projects - Ars Technica”. 2009年8月11日閲覧。
- ^ “Markdown Editing Help - Stack Overflow”. 2010年4月29日閲覧。
- ^ “Three Markdown Gotchas - Blog – Stack Overflow”. 2010年4月29日閲覧。
- ^ “Markdown - Posterous Help”. 2011年2月17日時点のオリジナルよりアーカイブ。2010年6月26日閲覧。
- ^ “Reddit's help document on Markdown”. 2010年7月20日閲覧。
- ^ “Making GitHub More Open: Git-backed Wikis - GitHub”. 2010年9月1日閲覧。
- ^ “GitHub Flavored Markdown - Introduction”. 2011年1月3日閲覧。
- ^ “Daring Fireball Linked List: GitHub Flavored Markdown”. 2011年1月3日閲覧。
- ^ “A formal spec for GitHub Flavored Markdown”. The GitHub Blog (2017年3月14日). 2019年3月16日閲覧。
- ^ “README content”. 2023年3月28日閲覧。
- ^ “Markup Choices in Instiki”. 2010年8月24日閲覧。
- ^ “Markdown Syntax Reference”. 2023年3月28日閲覧。
- ^ “Tumblr Preferences”. 2011年1月3日閲覧。
- ^ File path formats on Windows systems - .NET | Microsoft Learn