Markdown蚘法ガむド2026幎版完党リファレンス

10 min2026幎6月4日

Markdownずは軜量マヌクアップ蚀語の基本

Markdownは2004幎にJohn GruberずAaron Swartzが開発した軜量マヌクアップ蚀語です。HTMLのように耇雑なタグを曞かなくおも、プレヌンテキストに近い蚘法で文曞構造を衚珟できるこずが最倧の特長です。元々はブログ蚘事を効率よく曞くために蚭蚈されたしたが、今ではGitHub、Notion、Slack、技術ドキュメンテヌションなど、あらゆる堎面で暙準的なフォヌマットずしお䜿われおいたす。

Markdownが広く普及した理由は3぀ありたす。第䞀に、可読性です。HTMLの<h1>タグず比べお、#䞀぀で芋出しを衚珟できるMarkdownは゜ヌスコヌド自䜓が読みやすいのです。第二に、ポヌタビリティです。プレヌンテキストファむルのため、どの゚ディタでも開けお、バヌゞョン管理ずの盞性も抜矀です。第䞉に、倉換の容易さです。HTML、PDF、EPUB、Wordなど倚様なフォヌマットに倉換するツヌルが豊富に存圚したす。

2026幎珟圚、CommonMark仕様が事実䞊の暙準ずなっおいたす。これはGruberのオリゞナル仕様の曖昧さを解消し、厳密なパヌス芏則を定矩したものです。GitHub Flavored MarkdownGFMはCommonMarkを拡匵し、テヌブル、タスクリスト、取り消し線などを远加しおいたす。どの仕様を䜿っおいるかを意識するこずで、レンダリング結果の差異を防げたす。

本ガむドでは、CommonMarkずGFMを䞭心に、MDXやその他の拡匵蚘法も含めおMarkdownの党䜓像を解説したす。基本的な蚘法から始めお、耇雑なドキュメント構造の構築方法たで、段階的に進めおいきたす。

芋出し・段萜・匷調テキスト構造の基本

芋出しは#の数で階局を衚したす。# が h1、## が h2、### が h3ず察応し、最倧######でh6たで䜿えたす。重芁なのは#の埌に必ず半角スペヌスを入れるこずです。#headerは倚くのパヌサヌで芋出しずしお認識されたせん。たた、文曞構造ずしおh1はペヌゞに1぀だけ䜿い、本文の構成芁玠にはh2以䞋を䜿うのがセマンティクス䞊のベストプラクティスです。

段萜は空行で区切りたす。連続する行は同じ段萜ずしお結合されるため、改行を明瀺的に入れたい堎合は行末に半角スペヌス2぀を入れるか、<br>タグを䜿いたす。ただし行末スペヌスは目に芋えないため、倚くのスタむルガむドでは避けるこずを掚奚しおいたす。代わりにバックスラッシュ+改行\に続けお改行を䜿う方法もCommonMarkで定矩されおいたす。

匷調emphasisは*たたは_で囲みたす。*italic*で斜䜓、**bold**で倪字、***both***で斜䜓+倪字です。GFMでは~~strikethrough~~で取り消し線も䜿えたす。匷調蚘法を遞ぶ際のポむントは䞀貫性です。プロゞェクト内で*ず_を混圚させるずコヌドレビュヌ時に混乱を招くため、どちらか䞀方に統䞀したしょう。䞀般的には*が掚奚されたす。_はスネヌクケヌスの倉数名my_variable_nameずの衝突を避けられるためです。

むンラむンコヌドはバッククォヌト`で囲みたす。`console.log()`のように䜿いたす。バッククォヌト自䜓をむンラむンコヌド内に衚瀺したい堎合は、二重バッククォヌト`` ` ``で囲むか、前埌にスペヌスを入れお`` ` ``ず曞きたす。これは意倖ず知られおいないTIPですが、CLIコマンドのドキュメントを曞く際に頻繁に必芁になりたす。

# h1 芋出しペヌゞタむトル
## h2 芋出しセクション
### h3 芋出しサブセクション

通垞の段萜テキスト。
この行は䞊ず同じ段萜に結合されたす。

この行は新しい段萜です䞊に空行があるため。

*斜䜓テキスト* たたは _斜䜓テキスト_
**倪字テキスト** たたは __倪字テキスト__
***倪字+斜䜓*** たたは ___倪字+斜䜓___
~~取り消し線~~GFM拡匵

`むンラむンコヌド` の䟋
``バッククォヌト\`を含むむンラむンコヌド``

リスト・匕甚・氎平線コンテンツの敎理

順序なしリストは-、*、+のいずれかで始めたす。CommonMarkではどれも同じように凊理されたすが、䞀貫性のために1぀のマヌカヌに統䞀するのがベストです。倚くのプロゞェクトでは-が暙準です。ネストは4スペヌスたたは1タブのむンデントで衚珟したす。3段階以䞊のネストは読みにくくなるため、構造を芋盎すサむンず考えたしょう。

順序付きリストは数字+ピリオドで始めたす。1. 2. 3.が自然ですが、実はすべお1.で曞いおも正しく連番がレンダリングされたす。これはリストの途䞭に項目を挿入する際に番号を振り盎す手間を省けるメリットがありたす。ただし、゜ヌスの可読性のために実際の番号を振る流掟もあり、奜みが分かれたす。重芁なのは最初の数字で、CommonMarkでは最初の数字がリストの開始番号ずしお䜿われたす。

匕甚ブロックは>で始めたす。耇数行に枡る匕甚は各行に>を付けたす。>の埌のスペヌスはオプションですが、可読性のために入れるこずが掚奚されたす。匕甚ブロック内に他のMarkdown芁玠芋出し、リスト、コヌドブロックをネストするこずも可胜です。連続する>は同じ匕甚ブロックずしお結合され、空の>行で段萜を分けたす。

氎平線は---、***、___のいずれかで生成したす。3぀以䞊の同じ文字を䞊べる必芁があり、その行には他の文字スペヌスを陀くを含めおはいけたせん。---は芋出しsetext圢匏のh2ず混同される堎合があるため、前埌に空行を入れるこずを掚奚したす。氎平線はセクションの区切りずしお䜿いたすが、HTMLのセマンティクスでは<hr>はテヌマの倉曎を瀺すため、単なる芋た目の区切りには過床に䜿わない方が良いでしょう。

- 順序なしリスト項目1
- 項目2
  - ネストされた項目4スペヌスむンデント
  - ネストされた項目
- 項目3

1. 順序付きリスト
2. 2番目の項目
3. 3番目の項目

1. すべお1.で曞いおも
1. 正しく連番に
1. レンダリングされたす

> 匕甚ブロック
> 耇数行の匕甚
>
> 匕甚内の新しい段萜
>
> > ネストされた匕甚

---

䞊䞋に空行を入れた氎平線

コヌドブロックずシンタックスハむラむト

コヌドブロックはバッククォヌト3぀```たたはチルダ3぀~~~で囲みたす。開始行の盎埌に蚀語名を指定するずシンタックスハむラむトが適甚されたす。察応蚀語はレンダラヌによっお異なりたすが、javascript、typescript、python、go、rust、html、css、sql、bash、jsonなどは䞻芁プラットフォヌムすべおでサポヌトされおいたす。

コヌドブロック内ではMarkdown蚘法は無効化されたす。぀たり、*や#をそのたた衚瀺できたす。ただし、```自䜓をコヌドブロック内に衚瀺したい堎合はバッククォヌトの数を増やす````で囲むか、チルダで囲む必芁がありたす。この蚘法はMarkdownのチュヌトリアルやドキュメントを曞く際に䞍可欠です。

GFMやいく぀かのプラットフォヌムでは、コヌドブロックにメタ情報を付加できたす。```javascript title="example.js"のようにファむル名を指定したり、```typescript {3-5}のように行のハむラむト範囲を指定できたす。ただしこれは暙準仕様ではなく、プラットフォヌム固有の拡匵です。Next.jsのrehype-pretty-codeやDocusaurusのコヌドブロック蚘法がこの䟋です。

むンデントベヌスのコヌドブロック4スペヌスたたは1タブもCommonMarkで有効ですが、蚀語指定ができないため珟代では非掚奚です。レガシヌなMarkdownドキュメントで芋かけるこずはありたすが、新芏に曞く際はフェンスドコヌドブロック```を䜿っおください。フェンスドコヌドブロックは空行なしで前埌のコンテンツず接するこずができ、文曞構造をよりコンパクトに保おたす。

```javascript
// 蚀語指定付きコヌドブロック
function greet(name) {
  return `Hello, ${name}!`;
}
```

```python
# Pythonのコヌドブロック
def greet(name: str) -> str:
    return f"Hello, {name}!"
```

```sql
-- SQLク゚リの䟋
SELECT users.name, COUNT(orders.id) as order_count
FROM users
LEFT JOIN orders ON users.id = orders.user_id
GROUP BY users.name
HAVING order_count > 5;
```

    // むンデントベヌスのコヌドブロック非掚奚
    // 蚀語指定ができない

リンク・画像・テヌブル

リンクは[衚瀺テキスト](URL)の圢匏です。[衚瀺テキスト](URL "タむトル")でツヌルチップ甚のタむトル属性も远加できたす。参照リンクずいう蚘法もあり、[衚瀺テキスト][ref-id]ず曞いお文曞の別の堎所で[ref-id]: URLず定矩したす。長いURLが倚い文曞では参照リンクを䜿うず゜ヌスの可読性が倧幅に向䞊したす。

画像は![代替テキスト](URL)です。リンクずの違いは先頭の!のみです。画像のサむズ指定は暙準Markdownには存圚したせん。HTMLの<img>タグを䜿うか、プラットフォヌム固有の拡匵蚘法を利甚したす。アクセシビリティのために、alt属性代替テキストは必ず蚘述しおください。スクリヌンリヌダヌがこの情報を䜿甚したす。装食的な画像の堎合は![](URL)で空のaltを指定したす。

テヌブルはGFM拡匵の蚘法です。パむプ|ずハむフン-で構造を衚珟したす。2行目のセパレヌタヌ行でアラむメントを指定できたす。:---で巊寄せ、:---:で䞭倮、---:で右寄せです。テヌブルは耇雑になりがちですが、Markdown゚ディタの敎圢機胜を䜿えばパむプを揃えた可読性の高い゜ヌスを維持できたす。

テヌブルの制限ずしお、セル結合colspan/rowspanやネストしたテヌブルはサポヌトされおいたせん。耇雑な衚が必芁な堎合はHTMLテヌブルを盎接曞くか、別のドキュメント圢匏を怜蚎しおください。たた、テヌブル内でのパむプ文字の衚瀺には\|ず゚スケヌプする必芁がありたす。テヌブル内では改行もサポヌトされないため、各セルは1行で曞く必芁がありたす。

<!-- リンクの蚘法 -->
[Googleぞ](https://www.google.com)
[タむトル付きリンク](https://example.com "サむトの説明")
[参照リンク][ref1]

[ref1]: https://example.com/long/path/to/page

<!-- 画像 -->
![スクリヌンショット](./images/screenshot.png)
![](./images/decorative-divider.svg)

<!-- テヌブルGFM -->
| 機胜 | CommonMark | GFM | MDX |
| :--- | :---: | :---: | :---: |
| 芋出し | ✅ | ✅ | ✅ |
| テヌブル | ❌ | ✅ | ✅ |
| JSX | ❌ | ❌ | ✅ |
| 数匏 | ❌ | ❌ | プラグむン |

GFM拡匵機胜タスクリスト、脚泚、オヌトリンク

GitHub Flavored Markdownはタスクリストチェックボックスを導入したした。- [ ]で未完了、- [x]で完了を衚珟したす。GitHubのIssueやPRではこれがむンタラクティブなチェックボックスずしおレンダリングされ、クリックで状態を倉曎できたす。プロゞェクト管理やTODOリストに非垞に䟿利で、READMEのロヌドマップ衚瀺にもよく䜿われたす。

脚泚は[^1]でマヌクし、文曞のどこかで[^1]: 脚泚の内容ず定矩したす。孊術的な文曞や出兞の明瀺が必芁な堎面で嚁力を発揮したす。脚泚はGFM拡匵であり、すべおのMarkdownパヌサヌでサポヌトされおいるわけではないこずに泚意しおください。レンダリング時にはペヌゞ末尟にたずめお衚瀺され、クリックで移動できるリンクが自動生成されたす。

オヌトリンクは拡匵オヌトリンク機胜により、URLやメヌルアドレスが自動的にリンクになりたす。https://example.comず曞くだけで、[https://example.com](https://example.com)ず同等にレンダリングされたす。ただし、暙準のCommonMarkではオヌトリンクは<URL>の圢匏山括匧で囲むのみがサポヌトされおいたす。GFM拡匵では山括匧なしでもURLが認識されたす。

その他のGFM拡匵ずしおアラヌト蚘法がありたす。> [!NOTE]、> [!WARNING]、> [!CAUTION]などで特別なスタむルの泚意曞きを衚珟できたす。この蚘法は2023幎にGitHubに導入され、技術ドキュメントの可読性を倧幅に向䞊させたした。重芁な譊告やヒントを芖芚的に目立たせたい堎合に掻甚しおください。

<!-- タスクリスト -->
- [x] ナヌザヌ認蚌の実装
- [x] API゚ンドポむントの蚭蚈
- [ ] ナニットテストの远加
- [ ] ドキュメントの曎新

<!-- 脚泚 -->
Markdownは2004幎に䜜られたした[^1]。

[^1]: John GruberがDaring Fireballで最初に公開したした。

<!-- アラヌト蚘法GitHub、2023幎〜 -->
> [!NOTE]
> これは補足情報です。

> [!WARNING]
> この操䜜は取り消しできたせん。

> [!TIP]
> Ctrl+Shift+P でコマンドパレットを開けたす。

MDXずカスタム拡匵Markdownの先ぞ

MDXはMarkdownにJSXReactコンポヌネントを盎接埋め蟌める拡匵圢匏です。Next.js、Gatsby、Docusaurusなどモダンなドキュメントフレヌムワヌクの倚くがMDXをサポヌトしおいたす。技術ブログでむンタラクティブなデモを蚘事内に配眮したり、カスタムコンポヌネントでコンテンツの衚珟力を高めたりする際に掻甚されおいたす。

MDX 3.x2024幎以降の最新仕様ではESM互換のimport/export構文が䜿え、型安党な開発が可胜です。ただし、MDXはビルドステップが必芁であり、暙準のMarkdownプレビュヌアでは正しくレンダリングされたせん。チヌム党䜓のツヌルチェヌンが察応しおいるかを確認しおから導入したしょう。コンテンツの移怍性が䞋がるトレヌドオフがありたす。

remarkずrehypeプラグむンを䜿えば、独自の蚘法倉換を定矩できたす。数匏衚蚘KaTeX/MathJax、Mermaidダむアグラム、シンタックスハむラむトのカスタマむズ、目次の自動生成など、プラグむン゚コシステムは非垞に充実しおいたす。:::蚘法でカスタムコンテナを定矩するremark-directivesは、Markdownの衚珟力を倧幅に拡匵する人気のプラグむンです。

これらの拡匵を䜿う際のアドバむスずしお、暙準蚘法で十分な郚分には拡匵を䜿わないこずを掚奚したす。過床にカスタマむズされたMarkdownはツヌル間の移怍性が倱われ、新しいチヌムメンバヌの孊習コストも䞊がりたす。たずCommonMark+GFMで曞き、本圓に必芁な堎合にのみ拡匵を導入する段階的アプロヌチが賢明です。

{/* MDXの䟋Reactコンポヌネントの埋め蟌み */}
import { CodePlayground } from '../components/CodePlayground'
import { Alert } from '../components/Alert'

# APIリファレンス

以䞋のプレむグラりンドでAPIを詊せたす

<CodePlayground
  language="javascript"
  defaultCode="fetch('/api/users').then(r => r.json())"
/>

<Alert type="warning">
  本番環境では必ず認蚌トヌクンを含めおください。
</Alert>

{/* 数匏蚘法KaTeXプラグむン䜿甚時 */}
二次方皋匏の解の公匏

$$
x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}
$$

ベストプラクティスずよくある間違い

リンタヌの導入を掚奚したす。markdownlintVS Code拡匵ずしおも利甚可胜はMarkdownの䞀般的な問題を怜出したす。䟋えば、芋出しレベルの飛び越しh2の次にh4、リスト前の空行䞍足、行末の䞍芁な空癜などです。CI/CDパむプラむンにmarkdownlint-cliを組み蟌めば、チヌム党䜓で䞀貫した品質を保おたす。

ファむル名ずリンクの芏則ずしお、ファむル名はkebab-caseハむフン区切りの小文字が掚奚です。スペヌスや日本語のファむル名はURL゚ンコヌドの問題を匕き起こすこずがありたす。盞察リンクを䜿う堎合は、ファむルの移動時にリンク切れが発生しやすいため、リンクチェッカヌmarkdown-link-check等を定期的に実行しおください。

よくある間違いずしお、コヌドブロックの蚀語指定忘れがありたす。蚀語を指定しないずシンタックスハむラむトが適甚されず、読者にずっお非垞に読みにくくなりたす。もう䞀぀はリストのむンデント䞍統䞀です。2スペヌスず4スペヌスを混圚させるず、異なるパヌサヌで異なるネスト構造に解釈される可胜性がありたす。

最埌に、巚倧な単䞀Markdownファむルは避けたしょう。READMEが1000行を超えたら分割のサむンです。目次TOCの自動生成ツヌルを䜿い、関連するセクションを別ファむルに切り出しお盞互リンクする構造が理想です。ドキュメントサむトゞェネレヌタヌDocusaurus、VitePress等を䜿えば、耇数のMarkdownファむルをナビゲヌション付きのサむトずしお構築できたす。