※記事内に商品プロモーションを含むことがあります。
はじめに
ドキュメント生成ツール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)。モジュール、クラス、メソッドの説明が整形されて表示されている。