スポンサーリンク

PythonでMarkdownをHTMLに変換する方法|静的サイトにも使える!

Webアプリ開発
  1. 1. はじめに|MarkdownをHTMLに変換したい理由
  2. 2. 必要なライブラリと環境構築
    1. 必要なのは「markdown」ライブラリだけ!
    2. インストール方法
    3. 環境のチェック
    4. 注意ポイント(よくあるつまずき)
  3. 3. MarkdownからHTMLへの基本的な変換方法
    1. 最も基本的なコード
    2. 実行結果(一部)
    3. コツ:日本語もそのまま使える!
    4. 応用:複数のMarkdownテキストをまとめて変換したいときは?
  4. 4. 応用編|ファイルを読み込んでHTMLに変換して保存する方法
    1. ステップ① Markdownファイルを用意しよう
    2. ステップ② Pythonで読み込んでHTMLに変換する
    3. 出力されたHTMLを確認しよう
    4. ちょっと便利に!コマンドライン対応もできる
  5. 5. HTMLテンプレートと組み合わせて静的サイト化する
    1. HTMLテンプレートを用意しよう
    2. テンプレートにMarkdownを埋め込むコード
    3. スタイルも追加してみよう(style.css)
    4. 複数Markdownファイルをまとめて変換するには?
  6. 6. PelicanやMkDocsなどとの違い
    1. 🔧 自作スクリプトの特徴
      1. ✅ こんな人に向いてる!
    2. 🧰 PelicanやMkDocsの特徴
      1. ✅ こんな人に向いてる!
    3. どちらを選ぶべき?
    4. ちなみに…
  7. 7. まとめ|PythonでMarkdownをHTMLに変換すれば自由度も高い!
    1. ✔ 今回学んだことの振り返り
    2. 💡 Pythonだからこそ、こんな活用ができる!
    3. 🔗 あわせて読みたい
  8. よくある質問(Q&A)
    1. 関連投稿:

1. はじめに|MarkdownをHTMLに変換したい理由

Markdownで書いた記事やドキュメントを、PythonでHTMLに変換したいと思ったことはありませんか?

技術ブログの作成、静的サイトの構築、レポートやドキュメントの自動生成など、
実は「Markdown → HTML」の変換は、Pythonと相性がとても良い処理のひとつです。

ただ、
「Markdownってそもそも何?」
「Pythonで本当に簡単に変換できるの?」
「静的サイトにも使えるの?」
と、最初は不安に感じますよね。

この記事では、Python初心者の方でも理解できるように
Markdownの基本から、Pythonを使ったHTML変換の方法までを順を追ってやさしく解説します。

コピペで動かせるサンプルコードも紹介するので、
「とりあえず動かしてみたい」という方でも安心です。

この記事を読み終えるころには、MarkdownファイルをPythonでHTMLに変換し、
ブログや静的サイトに活用できるようになります。




2. 必要なライブラリと環境構築

MarkdownをPythonでHTMLに変換するためには、まず専用のライブラリをインストールする必要があります。
といっても、やることはとてもシンプルなのでご安心を!


必要なのは「markdown」ライブラリだけ!

Pythonには、MarkdownをHTMLに変換するための便利なライブラリがいくつかありますが、今回は最も基本的なライブラリである
👉 markdown を使っていきます。


インストール方法

以下のコマンドをターミナルやコマンドプロンプトで実行してください。

pip install markdown

※ もし仮想環境(venvなど)を使っている場合は、その環境を有効化してから実行してくださいね。


環境のチェック

インストールが完了したら、Pythonで以下のコードを試してみましょう:

import markdown

print(markdown.markdown("# Hello, Markdown!"))

ちゃんと実行できて、以下のような出力が出ればOKです!

<h1>Hello, Markdown!</h1>

これでMarkdownの記法が、HTMLタグに変換されたことが確認できますね!


注意ポイント(よくあるつまずき)

  • ModuleNotFoundError: No module named 'markdown' というエラーが出た場合は、インストールができていない可能性があります。pip install markdown をもう一度確認しましょう。
  • Pythonのバージョンは3.x系をおすすめします(3.7以上が安心です)。

これで準備はバッチリ!
次は実際にMarkdownからHTMLに変換してみましょう。




3. MarkdownからHTMLへの基本的な変換方法

それではいよいよ、MarkdownのテキストをHTMLに変換してみましょう!

Pythonのコードはとってもシンプルなので、初心者の方でもすぐに試せますよ。


最も基本的なコード

まずは、文字列として書かれたMarkdownをHTMLに変換する方法から紹介します。

import markdown

# Markdown形式の文字列
md_text = """
# こんにちは!
これは**太字**のテキストです。
- リスト1
- リスト2
"""

# HTMLに変換
html = markdown.markdown(md_text)

# 結果を表示
print(html)

実行結果(一部)

<h1>こんにちは!</h1>
<p>これは<strong>太字</strong>のテキストです。</p>
<ul>
<li>リスト1</li>
<li>リスト2</li>
</ul>

このように、Markdownで書かれた見出しやリスト、太字などが自動的にHTMLタグに変換されているのがわかりますね!


コツ:日本語もそのまま使える!

markdownライブラリは、UTF-8で書かれた日本語のMarkdownも問題なく変換できます。
なので、日本語のブログやドキュメントにもそのまま活用できますよ。


応用:複数のMarkdownテキストをまとめて変換したいときは?

複数のMarkdown文字列がある場合は、リストでループ処理を使えばOKです。

md_list = ["# 見出し1", "## 見出し2", "**太字テキスト**"]

for md in md_list:
html = markdown.markdown(md)
print(html)

出力されるHTMLは、それぞれのMarkdown記法に対応したタグになります。

このように、たった数行でMarkdownをHTMLに変換できるのがPythonの魅力。
次は、Markdownファイルを読み込んでHTMLファイルとして保存する方法にチャレンジしてみましょう!




4. 応用編|ファイルを読み込んでHTMLに変換して保存する方法

さて、ここまではMarkdownの文字列をHTMLに変換する方法を紹介しましたが、
実際には .md ファイルとして保存されたMarkdown文書を変換したい場面の方が多いですよね。

ここでは、Markdownファイルを読み込んでHTMLファイルとして保存する方法をわかりやすく解説します!


ステップ① Markdownファイルを用意しよう

まずは、変換元となるMarkdownファイルを作成しましょう。

例:sample.md

# サンプルタイトル

これはPythonでMarkdownをHTMLに変換するテストです。

- 箇条書き1
- 箇条書き2

ステップ② Pythonで読み込んでHTMLに変換する

次に、MarkdownファイルをPythonで読み込み、HTMLに変換して保存するコードを書いていきます。

import markdown

# 入力ファイルと出力ファイルのパス
input_file = "sample.md"
output_file = "sample.html"

# ファイルを読み込む
with open(input_file, "r", encoding="utf-8") as f:
md_text = f.read()

# Markdown → HTML に変換
html = markdown.markdown(md_text)

# HTMLファイルとして保存
with open(output_file, "w", encoding="utf-8") as f:
f.write(html)

print("変換が完了しました!")

出力されたHTMLを確認しよう

このスクリプトを実行すると、同じディレクトリに sample.html というファイルが生成されます。
そのファイルをブラウザで開けば、MarkdownがきれいにHTMLとして表示されているのが確認できます!


ちょっと便利に!コマンドライン対応もできる

複数のMarkdownファイルを変換したいときや、引数でファイルを指定したいときは、argparseを使うのがおすすめです。

import argparse
import markdown

parser = argparse.ArgumentParser()
parser.add_argument("input_file")
parser.add_argument("output_file")
args = parser.parse_args()

with open(args.input_file, "r", encoding="utf-8") as f:
md_text = f.read()

html = markdown.markdown(md_text)

with open(args.output_file, "w", encoding="utf-8") as f:
f.write(html)

print("変換完了!")

これで以下のように実行できます:

python convert.py input.md output.html

このように、Pythonを使えばMarkdown → HTMLの変換が自動化できます。
次は、このHTMLをテンプレートに埋め込んで「静的サイト」に仕上げていく方法を紹介します!




5. HTMLテンプレートと組み合わせて静的サイト化する

MarkdownをHTMLに変換できるようになったら、次はそのHTMLをWebページとして完成させるステップです。

ただの変換結果だけでは、CSSもなく、ちょっと味気ない見た目になってしまいますよね。
そこでここでは、テンプレートHTMLと組み合わせて「静的サイト」風に整える方法を解説します!


HTMLテンプレートを用意しよう

まずはベースとなるテンプレートを1つ作っておきましょう。

template.html というファイルを以下のように作成します:

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>{title}</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<header><h1>{title}</h1></header>
<main>
{content}
</main>
<footer><p>© 2025 My Static Site</p></footer>
</body>
</html>

{title}{content} の部分が、あとでPythonから差し込むプレースホルダーです。


テンプレートにMarkdownを埋め込むコード

Python側では以下のように処理します:

import markdown

# ファイル読み込み
with open("sample.md", "r", encoding="utf-8") as f:
md_text = f.read()

# Markdown → HTMLに変換
html_body = markdown.markdown(md_text)

# テンプレート読み込み
with open("template.html", "r", encoding="utf-8") as f:
template = f.read()

# タイトルと本文を差し込み
html_output = template.format(title="サンプル記事", content=html_body)

# 出力ファイルに保存
with open("output.html", "w", encoding="utf-8") as f:
f.write(html_output)

print("テンプレート付きHTMLを出力しました!")

スタイルも追加してみよう(style.css)

簡単なCSSファイルも一緒に用意してみましょう:

body {
font-family: sans-serif;
max-width: 800px;
margin: 2em auto;
padding: 1em;
background: #f8f8f8;
}
h1 {
border-bottom: 2px solid #333;
padding-bottom: 0.3em;
}
main {
background: #fff;
padding: 1em;
border-radius: 5px;
}

これでWebページらしく整った見た目になります!


複数Markdownファイルをまとめて変換するには?

フォルダの中にある .md ファイルをすべて処理する例も紹介しておきます:

import os
import markdown

input_dir = "md_files"
output_dir = "html_files"

os.makedirs(output_dir, exist_ok=True)

for filename in os.listdir(input_dir):
if filename.endswith(".md"):
with open(os.path.join(input_dir, filename), "r", encoding="utf-8") as f:
md_text = f.read()
html_body = markdown.markdown(md_text)
with open("template.html", "r", encoding="utf-8") as f:
template = f.read()
html_output = template.format(title=filename.replace(".md", ""), content=html_body)
with open(os.path.join(output_dir, filename.replace(".md", ".html")), "w", encoding="utf-8") as f:
f.write(html_output)

print("すべてのMarkdownファイルを静的HTMLに変換しました!")

こうして、Pythonスクリプトだけで簡易的な静的サイトジェネレーターが作れちゃいます。
次は、PelicanやMkDocsなどのツールとの違いを見てみましょう!




6. PelicanやMkDocsなどとの違い

ここまで、Pythonで自作スクリプトを使ってMarkdownからHTMLを生成し、静的サイトとして出力する方法を紹介してきました。
でも実は、**PelicanやMkDocsのような「静的サイトジェネレーター(SSG)」**を使えば、もっと手軽に整ったサイトを作ることもできます。

では、「自作スクリプト」と「SSG」では、何が違うのでしょうか?
ここでしっかり比較しておきましょう。


🔧 自作スクリプトの特徴

項目内容
カスタマイズ性自分好みに100%カスタム可能
学習コストPython初心者にはちょっとだけハードルあり
デザインCSSやテンプレートも自作が必要
用途小規模なページ、ツールとしての使い捨て変換に最適

✅ こんな人に向いてる!

  • プログラミングの練習としてMarkdown処理をやってみたい人
  • 軽量なツールでサクッとHTML出力したい人
  • 自動変換スクリプトを業務で使いたい人

🧰 PelicanやMkDocsの特徴

項目内容
セットアップpip installで簡単インストール
構成管理設定ファイル(config.ymlなど)で一括管理できる
テンプレートテーマやテンプレートが最初から豊富
拡張性プラグインや拡張が豊富で、サイト構築が楽になる

✅ こんな人に向いてる!

  • ブログやドキュメントを本格的に公開したい人
  • 複数ページのMarkdownを整理してサイト化したい人
  • カスタマイズは最低限にして、短時間で完成させたい

どちらを選ぶべき?

目的おすすめ
軽量でシンプルな変換がしたいPythonの自作スクリプト
高機能でデザインも整えたいPelicanやMkDocsなどのSSG

ちなみに…

静的サイトジェネレーターのPelicanを使ってCloudflare Pagesにデプロイする方法も、こちらの記事で解説しています👇
🔗 Pelicanでブログを作ってCloudflare Pagesにデプロイする方法




7. まとめ|PythonでMarkdownをHTMLに変換すれば自由度も高い!

ここまでお読みいただき、ありがとうございました!

この記事では、Pythonを使ってMarkdownをHTMLに変換する方法を、以下の流れでやさしく解説してきました。


✔ 今回学んだことの振り返り

  • Markdownは、シンプルに書けて整った文書を作れる便利な記法
  • Pythonのmarkdownライブラリを使えば、たった数行でHTMLに変換できる
  • .mdファイルを読み込んでHTMLファイルとして保存する方法もバッチリ
  • テンプレートHTMLと組み合わせれば、静的なWebページとしても使える
  • PelicanやMkDocsなどのツールと比較して、自作スクリプトなら軽量かつ柔軟に対応可能!

💡 Pythonだからこそ、こんな活用ができる!

  • 自分好みに処理フローをカスタマイズできる
  • 複数ファイルを一括変換 → 業務やブログ更新を自動化
  • WebアプリやCI/CDに組み込んで、効率化・省力化にもつなげられる

MarkdownをHTMLに変換するだけならツールも豊富ですが、Pythonを使えばコードで自在にコントロールできるのが魅力です。
「ちょっとした変換スクリプトが欲しい」「でも自由度は高くしたい」という方には、ぴったりなアプローチですよ!

ということで、ぜひみなさんもこの記事を参考に、自分だけの変換ツールや静的サイトを作ってみてくださいね!


🔗 あわせて読みたい

Markdown変換や静的サイトに関連する記事もチェックしてみましょう!


よくある質問(Q&A)

Q
Markdownファイルを変換するとき、目次やコードハイライトもできますか?
A

はい、markdownライブラリの拡張機能(Extensions)を使えば可能です。
例:markdown.markdown(text, extensions=["fenced_code", "toc"])

Q
CSSはどう適用すればいいの?
A

HTMLテンプレートに<link rel="stylesheet" href="style.css">を入れておけば、CSSを適用できます。スタイルファイルはHTMLと同じフォルダに置いてください。

Q
PelicanやMkDocsを使うのと、Pythonスクリプトで変換するのはどちらがいい?
A

自由度重視ならPythonスクリプト、本格的なWebサイトを作りたいならPelicanやMkDocsがおすすめです。

※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。

※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。

スポンサーリンク