はじめに|SphinxでPythonのドキュメント作成を自動化しよう!
Pythonで開発をしていると、
「この関数、引数は何を渡すんだっけ?」
「クラスの使い方、コメントには書いたけど探すのが大変…」
と感じる場面は意外と多いものです。
Docstring(ドックストリング)をきちんと書いていても、
コードが増えるにつれて全体像が把握しづらくなり、仕様共有や引き継ぎがつらくなることは珍しくありません。
特にチーム開発や自作ライブラリでは、「ドキュメント作成が後回しになって結局更新されない」という悩みもよく聞かれます。
そこで役立つのが、**PythonのDocstringからドキュメントを自動生成できる「Sphinx」**です。
Sphinxを使えば、関数やクラスに書いたDocstringをもとに、
HTML形式の読みやすいドキュメントを自動で生成できます。
- 関数・クラスの仕様を一覧で確認したい
- 自作ライブラリの公式ドキュメントを作りたい
- コードとドキュメントのズレをなくしたい
こうした要望を、最小限の手間で解決できるのがSphinxの強みです。
コードを更新すればドキュメントも一緒に更新できるため、
「仕様書が古いまま放置される」といった問題も防げます。
本記事では、PythonのDocstringからSphinxを使ってHTMLドキュメントを自動生成する方法を、
初心者の方でも迷わないように手順付きで丁寧に解説します。
インストール方法から基本的な使い方、実務で役立つポイントまで、
「今日から使える」内容に絞って紹介していきます。
1. Sphinxとは?|Python開発者に人気のドキュメント生成ツール
Sphinx(スフィンクス)は、Pythonコードに書かれたDocstring(ドックストリング)をもとに、見やすいHTMLドキュメントを自動生成できるツールです。
Pythonの公式ドキュメントや、pandas・NumPyといった有名ライブラリのドキュメントにも使われているほど、信頼性と実績のある仕組みです。
Sphinxの主な特徴を簡単に紹介しましょう。
✅ マークアップ言語「reStructuredText」で構成
Sphinxでは、「reStructuredText(リストラクチャードテキスト)」という軽量マークアップ記法を使います。
これはMarkdownに似た書き方で、見出しやリスト、コードブロック、リンクなどを簡単に記述できます。
✅ HTML・PDFなど多彩な形式で出力可能
生成されたドキュメントは、以下のような形式で出力できます:
- HTML形式(ウェブページとして閲覧可能)
- PDF形式(印刷用にも便利)
- ePub形式(電子書籍向け)
とくにHTML形式は、index.htmlをブラウザで開くだけで閲覧できるため、社内共有や製品マニュアルとしての利用にも最適です。
✅ 拡張機能が豊富でカスタマイズしやすい
Sphinxは拡張モジュールが充実しており、
autodoc:PythonのDocstringをHTMLに変換napoleon:Googleスタイル・NumPyスタイルのDocstringに対応sphinx_rtd_theme:見やすいドキュメント用テーマ
などを組み合わせることで、柔軟に機能を拡張できます。
2. Docstringからの自動ドキュメント生成とは?
Pythonでは、関数やクラスの説明を**Docstring(ドックストリング)**という形で記述できます。
たとえば、こんな感じですね:
def add(a, b):
"""
2つの数値を加算する関数。
Parameters:
a (int): 最初の数値
b (int): 2番目の数値
Returns:
int: aとbの合計値
"""
return a + b
このような説明文は、通常はコードを読まないと確認できませんが、Sphinxを使えばこのDocstringから自動的にHTML形式のドキュメントを生成できるようになります。
✅ 自動生成のメリット
Sphinxの自動生成機能を活用すると、次のようなメリットがあります:
- コードの仕様とドキュメントの内容が一致する
→ 説明の書き忘れや古い情報を防げます。 - 複数人での開発でも情報を共有しやすい
→ チームメンバー全員がWebで使い方を確認できます。 - ドキュメントの作成・更新が圧倒的に速くなる
→ 再ビルドするだけで最新情報に更新!
✅ サポートされているDocstringのスタイル
SphinxはさまざまなDocstringの記述スタイルに対応しています。
とくに人気なのが以下の2つ:
- Googleスタイル
def func(param1, param2):
"""
説明文
Args:
param1 (int): 説明
param2 (str): 説明
Returns:
bool: 説明
"""
- NumPyスタイル
def func(param1, param2):
"""
説明文
Parameters
----------
param1 : int
説明
param2 : str
説明
Returns
-------
bool
説明
"""
Sphinxの拡張機能napoleonを有効にすることで、これらのスタイルにも対応できるようになります。

つまり、Docstringをしっかり書いておけば、後はSphinxがすべての仕様書を作ってくれるというわけですね。
3. Sphinx導入の手順|インストールからプロジェクト作成まで
それでは実際に、Sphinxを使ってPythonのDocstringからドキュメントを生成してみましょう!
ここでは環境構築からプロジェクトの初期設定まで、順を追って説明します。
✅ ステップ1:必要なライブラリをインストール
まずはSphinxと、後で使う便利な拡張機能をインストールします。
ターミナルで以下のコマンドを実行してください。
pip install sphinx sphinx-rtd-theme sphinx-autobuild
💡 sphinx-rtd-themeは、Read the Docs風の見やすいテーマです。
✅ ステップ2:ディレクトリ構成の準備
以下のような構成を目指します:
your_project/
├── your_module/ ← ドキュメント化したいPythonコード
│ └── __init__.py ← モジュールとして認識させる
├── docs/ ← Sphinx関連ファイルをここに作成
※ your_module/ は自作のモジュール名に置き換えてください。
✅ ステップ3:Sphinxプロジェクトの初期化
docsフォルダを作成し、その中で以下のコマンドを実行します:
sphinx-quickstart
このとき、いくつか質問されるので以下のように回答するとスムーズです:
- Separate source and build directories (y/n) → y
- Project name → 自分のプロジェクト名(例:MyLibrary)
- Author name → 自分の名前やチーム名
- Project release → バージョン(例:1.0)
これにより、docs/sourceとdocs/buildに必要なファイルが作成されます。
✅ ステップ4:ソースコードからreStructuredTextファイルを自動生成
docsディレクトリ内で次のコマンドを実行します:
sphinx-apidoc -o source ../your_module
すると、your_moduleの構造に基づいて.rstファイルが自動的に生成されます。
これが、Docstringを読み込むための土台となります。
✅ ステップ5:拡張機能とパスの設定
docs/source/conf.pyを開き、以下の編集を行います。
① モジュールのパスを追加
import os
import sys
sys.path.insert(0, os.path.abspath('../your_module'))
② 拡張機能を追加
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.napoleon',
]
③ テーマの設定
html_theme = 'sphinx_rtd_theme'
language = 'ja'
4. HTMLドキュメントのビルド手順と確認方法
Sphinxプロジェクトの準備ができたら、いよいよドキュメントを**HTML形式でビルド(生成)**してみましょう。
この作業はとても簡単で、ターミナルからコマンドを1つ打つだけでOKです!
✅ sphinx-buildコマンドを使ってビルド
まず、docsディレクトリに移動してから、以下のコマンドを実行します:
sphinx-build -b html source build
-b htmlはHTML形式で出力する指定sourceは設定ファイルや.rstがあるディレクトリbuildはHTMLが出力される先のディレクトリ
実行後、エラーがなければ docs/build の中にHTMLファイル群が生成されます。
✅ ブラウザで確認してみよう
生成されたファイルの中から、index.htmlをブラウザで開いてみましょう。
open build/index.html # Macの場合
start build/index.html # Windowsの場合
すると、クラスや関数の説明がきれいに整ったWeb形式のドキュメントが表示されるはずです。
自分で書いたDocstringが、そのまま読みやすい形で変換されているのがわかります!
✅ 開発中は自動リロード機能が便利!
頻繁に編集する場合は、sphinx-autobuildを使ってリアルタイムでビルド+プレビューすると効率的です:
sphinx-autobuild source build

このコマンドを実行すると、ローカルサーバー(http://127.0.0.1:8000 など)が立ち上がり、ソースファイルを保存するたびに自動で再ビルドされます。
ブラウザも自動で更新されるので、確認作業がグッと楽になりますよ!
5. Sphinxのカスタマイズと更新方法
Sphinxでドキュメントを生成できるようになったら、次は見た目や内容のカスタマイズ、そしてコード変更時のドキュメント更新方法をマスターしましょう!
✅ カスタマイズ①:トップページや内容を編集する
Sphinxでは、index.rstなどの.rstファイルを直接編集することで、ドキュメントの構成や内容を自由に変えられます。
たとえば、docs/source/index.rstを開くと、以下のような見出しや目次が並んでいます:
Welcome to MyLibrary's documentation!
=====================================
.. toctree::
:maxdepth: 2
:caption: Contents:
your_module
これを編集して、導入文を書いたり、画像を追加したりもできます。
.. image:: ../img/logo.png
:width: 200px
:align: center
💡 変更後は、再度 sphinx-build を実行することで反映されます。
✅ カスタマイズ②:テーマ・レイアウトの変更
conf.pyの中でHTMLテーマを設定できます。
たとえば、以下のように変更すれば、Read the Docs風の見た目になります。
html_theme = 'sphinx_rtd_theme'
他にもalabasterやfuroなど、おしゃれで使いやすいテーマがたくさんあります。
公式テーマ一覧はこちら:https://sphinx-themes.org/
✅ カスタマイズ③:言語設定を日本語にする
日本語のドキュメントを作りたい場合、こちらの設定もお忘れなく:
language = 'ja'
これにより、検索バーや目次などのUIも日本語になります。
✅ コードを更新したときの再生成方法
自作ライブラリに新しい関数やクラスを追加した場合、Sphinxにそれを認識させるために、次のように再度apidocを実行します:
sphinx-apidoc -f -o source ../your_module
-f:既存の.rstファイルを上書き(カスタマイズ済みの場合は注意!)
そのあと、もう一度 sphinx-build でHTMLに再ビルドします:
sphinx-build -b html source build
これだけで、新しいクラスや関数の説明が自動で追加されます。
✅ カスタマイズした部分は消えない?
基本的に、index.rstなど手動で編集したファイルを直接上書きしない限り、カスタマイズ内容はそのまま残ります。
自動生成される.rstファイルのみ更新する場合は、カスタマイズファイルと分けて管理するのが安心です。

これで、Sphinxを使ったドキュメント作成からカスタマイズ・更新まで一通りマスターできましたね!
まとめ|Sphinxでドキュメント作成をもっとラクに
今回は、PythonのDocstringを活用してHTMLドキュメントを自動生成できるSphinxの使い方を解説しました。
振り返ってみましょう:
✅ Sphinxとは何か
→ Python公式ドキュメントにも使われる、信頼性の高いドキュメント生成ツール。
✅ DocstringをそのままHTMLに変換できる
→ わざわざ別で仕様書を書く必要なし!ソースコードとドキュメントが常にリンク。
✅ 導入も手順どおりに進めれば簡単
→ インストール → sphinx-apidoc → sphinx-build の3ステップでOK。
✅ カスタマイズや更新も柔軟にできる
→ テーマや言語、ページ構成も自由自在。コードの追加にも自動対応。

Sphinxをうまく使えば、ドキュメント作成の手間を大幅に省けるだけでなく、チームでの共有やユーザー向けマニュアルとしても活用できます。
とくに、自作ライブラリや業務用ツールを作っている人にとっては、必須のツールといっても過言ではありません。
あわせて読みたい
Sphinxやドキュメント生成に関連する他の記事もぜひ参考にしてください!
- 🔗 【Python入門】Docstringの書き方ガイド|関数・クラス・モジュールを丁寧に記述しよう!
Docstringの基本、記述ルール、Google/NumPy/reSTスタイルの違いまで解説。 - 🔗 Pythonのraise文とは?意図的に例外を発生させる方法と使いどころを解説!
例外処理の仕組みを理解して、Docstringに記述する戻り値や例外の説明にも役立てよう。 - 🔗 【Python入門】YAMLファイルの書き方と使い方|設定ファイルの操作をわかりやすく解説!
設定ファイルの管理やドキュメント生成時の構成ファイルにも便利なYAMLの使い方。
よくある質問(Q&A)
- QSphinxはMarkdownでは使えないのですか?
- A
標準ではreStructuredText形式ですが、「MyST-Parser」という拡張を導入すればMarkdownでも書けます。
- QDocstringを書いていない関数もHTMLに表示されますか?
- A
表示はされますが、説明文が空欄になります。意味のあるドキュメントにするにはDocstringの記述が重要です。
- QドキュメントをWeb上に公開するにはどうすればいいですか?
- A
「Read the Docs」を使えば、GitHubと連携して無料でドキュメントをWebに公開できます。次回の記事で詳しく紹介予定です。







※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。
※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。