Sphinx
Python製のドキュメント生成ツール。
- Python 3.8.5
- Sphinx 3.4.2
pip3 install Sphinx
reST(reStructuredText)
SphinxではデフォルトでreStructuredTextというマークアップ言語を使う。
- https://www.sphinx-doc.org/ja/master/usage/restructuredtext/basics.html
- https://atom.io/packages/language-restructuredtext
既存Pythonプロジェクトにド キュメントを追加する
setup.py
などが存在するPyPIパッケージプロジェクトを想定する。
プロジェクトのルートに docs
ディレクトリを作成し、
インタラクティブツール sphinx-quickstart
を実行する。
mkdir docscd docs/sphinx-quickstart
Separate source and build directories (y/n)
と聞かれるので、 y
。
プロジェクト名、著者名、言語などを答える。
source
ディレクトリ、 build
ディレクトリ、 Makefile
が生成される。
make html
以上のコマンドで build/html
ディレクトリにHTMLが生成される。
python3 -m http.server -b localhost -d build/html
などで確認する。
次はPythonモジュールのdocstringからドキュメントを自動生成する。
#!/bin/bashSCRIPT_DIR=$(cd $(dirname $0); pwd)cd "${SCRIPT_DIR}"sphinx-apidoc -f -o "./source/api" "../mymodule"make html
docs/mkdocs.sh
を以上のように作成し、実行する(TODO:Makefileへの入れ込み)。
ここでは、以下のように docs
ディレクトリと並んで、パッケージとして提供するPythonモジュール mymodule
のディレクトリがあることを想定している。
なお、 docs/source/conf.py
は設定ファイルであり、
例えば html_theme = 'sphinx_rtd_theme'
のような設定を追加し、
pip3 install sphinx-rtd-theme
してから make html
することで、Read the Docsスタイルのドキュメントを生成できる。
|- setup.py||- docs/|- Makefile|- mkdocs.sh||- source/|- conf.py|- index.rst||- build/|- html/|- index.html||- mymodule/|- __init__.py|- mymodule.py
sphinx-apidoc
によりPythonモジュールのドキュメントが source/api
に自動生成され、
見出しにあたるページが source/api/modules.rst
に生成される。
このページへのリンクがどこにもない、という旨のエラーが表示されているはずなので、
インデックスページの source/index.rst
にこのページへのリンクを追加する。
.. toctree:::maxdepth: 2:caption: Contents:api/modules
CI,CDを整備する
自動生成されるHTMLをソースコードと同じブランチでGit管理したくはないので、
docs/build
ディレクトリを .gitignore
に追加し、
GitHub ActionsやGitLab CIを使ってドキュメントの生成、GitHub PagesやGitLab Pagesへの自動デプロイを整備する。