Markdownとは

Markdown(マークダウン)は、2004年にJohn Gruberが考案した軽量マークアップ言語です。プレーンテキストで書いた文書を、簡単にHTMLに変換できるのが特徴です。

Markdownが使われる場所

サービス・ツール用途
GitHubREADME、Issue、PR
Qiita / Zenn技術記事
Notionドキュメント
Slackメッセージ装飾
WordPress記事執筆
Hugo / Astro / Gatsby静的サイト生成
Jupyter Notebookドキュメントセル

Markdownの利点

  • 読みやすい — HTMLタグを書かなくても構造化された文書が書ける
  • 書きやすい — 記号だけで見出し・リスト・太字等を表現
  • 汎用的 — ほとんどの開発ツール・サービスが対応
  • テキストベース — Git での差分管理が容易
  • 変換が容易 — HTML、PDF、DOCX等に変換可能

Markdown記法の基礎

基本的な記法

# 見出し1(H1)
## 見出し2(H2)
### 見出し3(H3)

**太字**
*斜体*
~~取り消し線~~

- リスト1
- リスト2
  - ネストリスト

1. 番号リスト1
2. 番号リスト2

[リンクテキスト](https://example.com)
![画像の代替テキスト](image.png)

> 引用文

`インラインコード`

​```javascript
// コードブロック
console.log("Hello");
​```

| 列1 | 列2 |
|-----|-----|
| A   | B   |

変換後のHTML

上記のMarkdownは以下のようなHTMLに変換されます。

<h1>見出し1(H1)</h1>
<h2>見出し2(H2)</h2>
<h3>見出し3(H3)</h3>

<p><strong>太字</strong></p>
<p><em>斜体</em></p>
<p><del>取り消し線</del></p>

<ul>
  <li>リスト1</li>
  <li>リスト2
    <ul>
      <li>ネストリスト</li>
    </ul>
  </li>
</ul>

方法1: オンラインツールで変換

主要なオンライン変換ツール

ツール特徴リアルタイムプレビュー
Dillingerシンプルで使いやすい
StackEdit高機能エディタ
MarkdownifyHTML→Markdown逆変換
HackMD / CodiMD共同編集対応

オンラインツールの使い方

  1. ブラウザでツールにアクセス
  2. 左ペインにMarkdownを入力
  3. 右ペインでHTMLプレビューを確認
  4. HTMLソースをエクスポート

方法2: コマンドラインツールで変換

Pandoc(万能変換ツール)

Pandocは「ドキュメント変換のスイスアーミーナイフ」と呼ばれる万能ツールです。

# インストール
# macOS
brew install pandoc
# Ubuntu
sudo apt install pandoc

# 基本的な変換
pandoc input.md -o output.html

# スタンドアロンHTML(headを含む完全なHTML)
pandoc -s input.md -o output.html

# CSSを適用
pandoc -s --css=style.css input.md -o output.html

# 目次を自動生成
pandoc -s --toc input.md -o output.html

# テンプレートを使用
pandoc --template=template.html input.md -o output.html

Pandocの主な出力形式

形式コマンド
HTMLpandoc input.md -o output.html
PDFpandoc input.md -o output.pdf
DOCXpandoc input.md -o output.docx
EPUBpandoc input.md -o output.epub
LaTeXpandoc input.md -o output.tex
プレゼン(reveal.js)pandoc -t revealjs -s input.md -o slides.html

marked(Node.js CLI)

# インストール
npm install -g marked

# 変換
marked input.md -o output.html

# 標準入力からの変換
echo "# Hello" | marked

方法3: プログラミングライブラリで変換

JavaScript — marked

import { marked } from 'marked';

const markdown = '# Hello World\n\nThis is **bold** text.';
const html = marked(markdown);
console.log(html);
// <h1>Hello World</h1>
// <p>This is <strong>bold</strong> text.</p>

JavaScript — markdown-it

import MarkdownIt from 'markdown-it';

const md = new MarkdownIt();
const html = md.render('# Hello World');

Python — markdown

import markdown

md_text = "# Hello World\n\nThis is **bold** text."
html = markdown.markdown(md_text)
print(html)

Python — mistune

import mistune

markdown = mistune.create_markdown()
html = markdown("# Hello World")

各ライブラリの比較

ライブラリ言語速度GFM対応拡張性
markedJS高速
markdown-itJS中速
remarkJS中速
Python-MarkdownPython中速
mistunePython高速

GitHub Flavored Markdown(GFM)

GitHub Flavored Markdown(GFM)は、GitHubが拡張した Markdown 方言です。標準Markdownにない機能が追加されています。

GFMの拡張記法

機能記法標準Markdown
テーブル| 列1 | 列2 |×
タスクリスト- [ ] TODO×
取り消し線~~text~~×
自動リンクhttps://example.com×
シンタックスハイライト```js×
脚注[^1]×

HTMLからMarkdownへの逆変換

HTMLをMarkdownに変換する「逆変換」も可能です。

Turndown(JavaScript)

import TurndownService from 'turndown';

const turndown = new TurndownService();
const markdown = turndown('<h1>Hello</h1><p>World</p>');
console.log(markdown);
// # Hello
//
// World

html2text(Python)

import html2text

h = html2text.HTML2Text()
h.body_width = 0  # 折り返しなし
markdown = h.handle("<h1>Hello</h1><p>World</p>")

静的サイトジェネレーターでの活用

多くの静的サイトジェネレーターは、Markdownを自動的にHTMLに変換してWebページを生成します。

SSG言語Markdownエンジン
AstroJSremark + rehype
Next.jsJSMDX / remark
HugoGoGoldmark
GatsbyJSremark
JekyllRubykramdown
11tyJSmarkdown-it

よくある質問

Q: Markdownで数式は書ける?

はい。KaTeXやMathJaxを使えばLaTeX記法で数式を表現できます。

$$E = mc^2$$

Q: MarkdownでHTMLタグは使える?

ほとんどのMarkdownパーサーは、Markdown内にHTMLタグを直接書くことを許可しています。

# 見出し

<div style="color: red;">
  これはHTMLで書いた部分です。
</div>

通常のMarkdownに戻ります。

Q: ChatGPTの出力にあるMarkdown記号を消したい

ChatGPTやClaudeの出力にはMarkdown記法(**太字**- リスト等)が含まれることがあります。これをプレーンテキストに変換したい場合は、Markdown除去ツールが便利です。

まとめ

Markdown→HTML変換の方法は目的によって選びましょう。

  • 手軽に変換 → オンラインエディタ(Dillinger等)
  • ファイル変換 → Pandoc(コマンドライン)
  • プログラム内 → marked / markdown-it(JS)、Python-Markdown
  • サイト構築 → 静的サイトジェネレーター(Astro、Hugo等)

Markdownの記号(** # - 等)を除去してプレーンテキストにしたい場合は AssistyのMarkdown除去ツール をご利用ください。ChatGPTの出力をきれいにする際にも便利です。