※記事内に商品プロモーションを含むことがあります。
はじめに
ドキュメント生成ツールSphinxを使って、Pythonスクリプトのクラスや関数のdocstringからHTMLドキュメントを自動生成する方法を解説する。
おおまかな手順は以下の通り。
- Pythonスクリプトのdocstringに、クラスやメソッドの説明を書く
- SphinxでreStructuredText (reST) 形式のソースファイルを生成する
- SphinxでHTML形式のドキュメントを生成(ビルド)する
reSTはマークアップ言語の一種である。
環境
OSはWindows 10とした。
- Python v3.8.5
- Sphinx v3.2.1
インストール
condaまたはpipでインストールできる。
|
|
|
|
また、Sphinxには標準で10個のHTMLテーマが用意されている(以下リンク参照)。
HTML Theming — Sphinx documentation
テーマを追加することも可能。例えば、Jupyter Notebookのリファレンスで使われているテーマsphinx_rtd_theme (Read the Docs) を追加するには、以下を実行する。
|
|
もちろん、pip install sphinx_rtd_themeでもインストール可能。

Jupyter Notebook documentation
Pythonスクリプトを用意する
以下のフォルダを用意し、main.py, sub.pyという2つのスクリプトを作成する。
project/
└── src/
├── main.py
└── sub.py
各スクリプトのdocstringに、モジュール、クラス、関数の説明を記述する。
docstringの記述方法は、以下の3つがある。
- reStructuredTextスタイル
- Googleスタイル
- NumPyスタイル
GoogleスタイルやNumPyスタイルで記述する場合は、Sphinxでドキュメントを作成するときに拡張機能を使う必要がある。
ここではGoogleスタイルとする。スクリプトの中身は以下の通り。
|
|
|
|
reSTファイルの生成
カレントディレクトリをprojectフォルダとして、sphinx-apidocコマンドを実行し、reSTファイルを生成する。
|
|
<MODULE_PATH>はPythonスクリプトがあるフォルダである。
主なオプションは以下の通り。
| オプション | 意味 |
|---|---|
| -F | Sphinxプロジェクトをfullで生成する |
| -H | プロジェクト名を指定 |
| -A | 著者を指定 |
| -V | プロジェクトのバージョンを指定 |
| -o | 出力先を指定 |
その他のオプションは以下を参照。
sphinx-apidoc — Sphinx documentation
ここでは、以下を実行する。
|
|
実行すると、projectフォルダの下にdocsフォルダが作成され、さらにその下に3個の空フォルダと6個のファイルが生成される。
project/
├── src/
│ ├── main.py
│ └── sub.py
└── docs/
├── _build/
├── _static/
├── _templates/
├── conf.py
├── index.rst
├── main.rst
├── make.bat
├── Makefile
└── sub.rst
conf.pyの編集
生成されたconf.pyを開き、2箇所編集する。
まず、以下の3行のコメントを外す。
|
|
次に、拡張機能 (extensions) に'sphinx.ext.napoleon'を追加する。これは、GoogleスタイルやNumpyスタイルでdocstringを記述した場合に必要である。
|
|
ちなみに、HTMLのテーマを変更したい場合は、html_themeを変更する。
|
|
HTML形式のドキュメントを生成
HTML形式のドキュメントを生成するには、sphinx-buildコマンドを実行する(カレントディレクトリはprojectフォルダのままとする)。
|
|
<sourcedir>はconf.pyがあるフォルダである(今回はdocs)。
<outputdir>はHTMLファイルの出力先である。どこでも良いが、今回は自動生成されたdocs/_buildフォルダとする。
よって、ここでは以下を実行する。
|
|
実行すると結果が20行程度に渡って表示されるが、build succeeded.と表示されたら成功である。
生成されたHTMLファイル
docs/_buildフォルダにHTMLファイルが生成されている。
index.htmlはトップページであり、モジュールの一覧が表示される。

個別のスクリプトのドキュメントは、同じ名前のHTMLファイルとなる(以下はmain.html)。モジュール、クラス、メソッドの説明が整形されて表示されている。
