Markdown から HTML への変換完全ガイド:構文の基礎から高度な組版テクニックまで
ドキュメント伊藤 結衣
なぜ Markdown を使うのか?
Markdown は技術ドキュメントの事実上の標準です。GitHub、Stack Overflow、Notion、VS Code がネイティブでサポートしています。
| 比較 | Markdown | Word | HTML |
|---|---|---|---|
| 学習コスト | 低い | 中 | 高い |
| バージョン管理 | ✅ プレーンテキスト | ❌ バイナリ | ✅ プレーンテキスト |
| 可読性 | ✅ ソースがそのまま読める | ❌ | ❌ |
| 表現力 | 中(拡張で強化) | 強い | 強い |
| レンダリングの一貫性 | 中 | ❌ プラットフォームで異なる | ✅ |
基本構文チートシート
見出し
# 見出し 1
## 見出し 2
### 見出し 3
#### 見出し 4
##### 見出し 5
###### 見出し 6
強調
**太字** → <strong>太字</strong>
*斜体* → <em>斜体</em>
~~取り消し線~~ → <del>取り消し線</del>
`インラインコード` → <code>インラインコード</code>
リスト
- 順序なしリスト項目 1
- 順序なしリスト項目 2
- ネスト項目
1. 順序付きリスト項目 1
2. 順序付きリスト項目 2
1. ネストされた順序付き項目
- [ ] タスク(未完了)
- [x] タスク(完了)
リンクと画像
[リンクテキスト](https://example.com)
[タイトル付きリンク](https://example.com "タイトル")


引用と水平線
> 引用テキスト
> > ネストされた引用
---
GFM 拡張構文
表
| 左寄せ | 中央揃え | 右寄せ |
|:-------|:--------:|-------:|
| 内容 | 内容 | 内容 |
| 長い内容 | 短い | 中程度 |
レンダリング結果:
| 左寄せ | 中央揃え | 右寄せ |
|---|---|---|
| 内容 | 内容 | 内容 |
| 長い内容 | 短い | 中程度 |
タスクリスト
- [x] 要件分析
- [x] 技術設計
- [ ] 実装
- [ ] テストと受け入れ
フェンス付きコードブロック
```javascript
function hello() {
console.log('Hello, Markdown!');
}
```
```python
def hello():
print("Hello, Markdown!")
```
脚注
これは本文[^1]で、もう 1 つの段落[^note]があります。
[^1]: 最初の脚注の内容。
[^note]: カスタム ID の脚注。
高度な組版テクニック
1. 数式(KaTeX/MathJax)
インライン数式:$E = mc^2$
ブロック数式:
$$
\int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi}
$$
行列:
$$
\begin{bmatrix}
a & b \\
c & d
\end{bmatrix}
$$
2. Mermaid 図
```mermaid
graph TD
A[ユーザーリクエスト] --> B{認証チェック}
B -->|認証済み| C[データ取得]
B -->|未認証| D[401 を返す]
C --> E[ページをレンダリング]
```
サポートされる図の種類:
| 種類 | 構文キーワード | 用途 |
|---|---|---|
| フローチャート | graph |
業務フロー、決定木 |
| シーケンス図 | sequenceDiagram |
API 呼び出し、インタラクション |
| クラス図 | classDiagram |
オブジェクト指向設計 |
| ステート図 | stateDiagram |
状態マシン |
| ガントチャート | gantt |
プロジェクトスケジュール |
| 円グラフ | pie |
データの割合 |
3. 目次(TOC)
<!-- 目次を自動生成 -->
[[toc]]
<!-- または手動で -->
- [インストール](#インストール)
- [設定](#設定)
- [使い方](#使い方)
4. 定義リスト
用語 1
: 定義 1
用語 2
: 定義 2
5. 略語
*[HTML]: Hyper Text Markup Language
*[W3C]: World Wide Web Consortium
HTML は W3C が策定した標準です。
ツールボックスで Markdown を変換する
操作手順
- Markdown エディターを開く
- 左側の編集エリアに Markdown を入力
- 右側で HTML のレンダリング結果をリアルタイムプレビュー
- 「ソース」モードに切り替えて生成された HTML を確認可能
- HTML ファイルとしてエクスポート可能
サポートされる拡張
| 拡張 | 説明 | 例 |
|---|---|---|
| GFM | 表、タスクリスト、脚注 | GitHub スタイル |
| 数式 | KaTeX レンダリング | $E=mc^2$ |
| Mermaid | 図のレンダリング | フローチャート、シーケンス図 |
| シンタックスハイライト | Prism.js/highlight.js | コードブロックの色付け |
| Emoji | :smile: → 😄 |
ショートコード置換 |
Markdown から HTML への変換の仕組み
パースの流れ
Markdown テキスト
↓
字句解析(Lexer)→ トークンストリーム
↓
構文解析(Parser)→ AST(抽象構文木)
↓
レンダラー(Renderer)→ HTML 文字列
主要なパースライブラリ
| ライブラリ | 言語 | 特徴 | サイズ |
|---|---|---|---|
| marked | JS | 最速・最も人気 | 40KB |
| markdown-it | JS | プラグインが豊富で拡張可能 | 60KB |
| remark | JS | AST エコシステム、MDX の基盤 | 100KB+ |
| CommonMark | JS | 厳密な標準準拠 | 50KB |
| pulldown-cmark | Rust | 究極のパフォーマンス | WASM 200KB |
marked の基本的な使い方
import { marked } from 'marked';
const html = marked.parse('# Hello **Markdown**');
// <h1>Hello <strong>Markdown</strong></h1>
markdown-it + プラグイン
import MarkdownIt from 'markdown-it';
import mk from 'markdown-it-mark';
import footnote from 'markdown-it-footnote';
import tasklist from 'markdown-it-task-lists';
const md = new MarkdownIt({ html: true, linkify: true })
.use(mk)
.use(footnote)
.use(tasklist);
const result = md.render('# Hello Markdown');
MDX:Markdown + JSX
MDX を使うと、Markdown の中で React コンポーネントを利用できます:
---
title: "私の記事"
---
import { Chart } from './components/Chart';
import { Callout } from './components/Callout';
# データ分析レポート
<Callout type="warning">
以下のデータは 2026 年 Q1 のサンプリングに基づきます。
</Callout>
## ユーザー増加の傾向
<Chart data={growthData} type="line" />
| 月 | ユーザー数 | 増加率 |
|------|-----------|--------|
| 1月 | 10,000 | - |
| 2月 | 12,500 | 25% |
| 3月 | 15,000 | 20% |
ベストプラクティス
1. ファイル構成
docs/
├── getting-started.md
├── configuration.md
├── api/
│ ├── authentication.md
│ ├── endpoints.md
│ └── errors.md
└── guides/
├── deployment.md
└── troubleshooting.md
2. 執筆ルール
- 1 行 1 文:Git diff に優しく、変更のレビューがしやすい
- 見出しレベルを飛ばさない:H1 → H2 → H3。H1 → H3 は避ける
- コードブロックに言語を指定:````javascript` と書き、````` だけにしない
- 参照式リンクを使う:長文では
[テキスト][ref]が[テキスト](url)よりすっきりする - 画像に代替テキストを付ける:
でアクセシビリティ向上
3. Lint ツール
# markdownlint をインストール
npm install -g markdownlint-cli
# チェック
markdownlint docs/**/*.md
# 自動修正
markdownlint docs/**/*.md --fix
よくある質問
Markdown 内の HTML が効かない?
一部のパーサーはデフォルトで生の HTML を無効にしています。html: true オプションを有効にしてください。
表でセル結合ができない?
標準の Markdown 表はセル結合をサポートしていません。必要な場合は HTML の表を使います:
<table>
<tr>
<th>名前</th>
<th>説明</th>
</tr>
<tr>
<td rowspan="2">プロジェクト A</td>
<td>サブ項目 1</td>
</tr>
<tr>
<td>サブ項目 2</td>
</tr>
</table>
コードブロック内の Markdown 構文がパースされる?
より多くのバッククォートでネストします:
````markdown
```javascript
console.log('外側ではパースされない');
```
---
## まとめ
Markdown は技術文書作成に最適なフォーマットです。簡潔で、バージョン管理ができ、エコシステムも豊富。基本構文 + GFM 拡張 + 数式 + Mermaid 図をマスターすれば、プロレベルの技術ドキュメントを書けます。ツールボックスの [Markdown エディター](/ja/utils/markdown)はリアルタイムプレビューとエクスポートに対応し、組版ではなく内容に集中できます。
#Markdown#HTML转换#文档编写#排版#教程