ラベル Sphinx の投稿を表示しています。 すべての投稿を表示
ラベル Sphinx の投稿を表示しています。 すべての投稿を表示

2016/11/15

Sphinx によるドキュメント執筆管理環境の検討

ここ数週間、隙間時間で悶々と考えていたことを吐き出す。

管理方法

一行で : 『Sphinx + VCS + Redmine + redmine_code_review』

  • Sphinx でドキュメントを作成する
  • ソースは VCS で管理
  • ビルドしたドキュメントはドキュメントサーバーにデプロイ & 共有ディレクトリに格納
  • ドキュメントのレビューは、 redmine_code_review プラグインを使い実施、管理する

※ VCS: できれば git + LFS, 次点で SVN

メリット

  • Excel 共有と比べて
    • 誰がいつ変更したかが失われない
    • コミットコメントのルールを決めることで、「何故」も記録できる
    • redmine_code_review の仕組みを使うことで、レビュー記録も Redmine に集約できる
  • Redmine の wiki と比べて
    • ビルドしてしまえばサーバーなしで参照できる

弱点

  • Excel のようにシームレスな作図ができない
  • reStructuredText がマイナー

reStructuredText 執筆のコツ

reStructuredText は、 tex, html などから続く『文章の意味と見た目が分離されているドキュメント』の一族。 執筆時には、文章構造に意識を集中すること。

これができると、あとは reStructuredText のルールに従って .rst に書き下していくだけで、誰でも同じ見た目の文章が作成できる。

Word, Excel と違い、編集するファイルの中に『見た目の情報』が存在しないため、 『うっかりフォントが変わった』や『ここだけインデントがずれた』 みたいなことがない。

ディレクトリ構成

docroot
   +- ワーキンググループ/
   |  +- ワーキンググループ_XXX/
   |  |  +- work/
   |  |  +- image/
   |  |  +- attachment/
   |  |  +- xxx.rst
   |  |  +- ワーキンググループの規模によってはサブディレクトリ作成も辞さない/
   |  |     +- work/
   |  |     +- image/
   |  |     +- attachment/
   |  |     +- yyy.rst
   |  |
   |  +- ワーキンググループ_ZZZ/
   |     +- ...(略)
   |
   +- 開発資料
   |  +- ...(略)
   |
   +- 運用資料
      +- ...(略)
  • image : 本文に表示する画像(png)を格納
  • work : image 加工用の元ネタを格納(xlsx, xcf 等)
  • attachment : 添付ファイルを格納

うーん、もやもやする。

2016/10/20

[作業記録] Windows で、Sphinx のスタンドアロンインストーラを試してみる

目標

Windows で Sphinx を使えるようにする。

環境

  • Windows Insider Build 14936
  • msys2 インストール済み
    • なので、コマンドプロンプトでも python 叩くと python 3.4.3 が起動する状態

作業概要

  1. インストーラーのダウンロード
  2. インストール

以下、各作業についての詳細を記述。

インストーラーのダウンロード

下記ページからインストーラーをダウンロードする。

Windowsへのインストール(スタンドアロンインストール) — Python製ドキュメンテーションビルダー、Sphinxの日本ユーザ会 : http://sphinx-users.jp/gettingstarted/install_windows_standalone.html

今回は、SphinxInstaller-1.4.1.20160416-py2.7-win32.zip をダウンロードした。

インストール

展開して出てきた SphinxInstaller-1.4.1.20160416-py2.7-win32.exe を管理者として実行する。

基本、デフォルトで OK, 好みがあれば適宜変更すればよい感じ。

動作確認

msys2 環境で実行。

mikoto@mnhomewin  ~
$ mkdir -p project/sphinx-test

mikoto@mnhomewin  ~
$ cd project/sphinx-test/

mikoto@mnhomewin  ~/project/sphinx-test
$ sphinx-quickstart

Welcome to the Sphinx 1.4.1 quickstart utility.

Please enter values for the following settings (just press Enter to
accept a default value, if one is given in brackets).

Enter the root path for documentation.
> Root path for the documentation [.]:

You have two options for placing the build directory for Sphinx output.
Either, you use a directory "_build" within the root path, or you separate
"source" and "build" directories within the root path.
> Separate source and build directories (y/n) [n]: y

Inside the root directory, two more directories will be created; "_templates"
for custom HTML templates and "_static" for custom stylesheets and other static
files. You can enter another prefix (such as ".") to replace the underscore.
> Name prefix for templates and static dir [_]:

The project name will occur in several places in the built documentation.
> Project name: Test
> Author name(s): Mikoto2000

Sphinx has the notion of a "version" and a "release" for the
software. Each version can have multiple releases. For example, for
Python the version is something like 2.5 or 3.0, while the release is
something like 2.5.1 or 3.0a1.  If you don't need this dual structure,
just set both to the same value.
> Project version: 1.0.0
> Project release [1.0.0]:

If the documents are to be written in a language other than English,
you can select a language here by its language code. Sphinx will then
translate text that it generates into that language.

For a list of supported codes, see
http://sphinx-doc.org/config.html#confval-language.
> Project language [en]: ja

The file name suffix for source files. Commonly, this is either ".txt"
or ".rst".  Only files with this suffix are considered documents.
> Source file suffix [.rst]:

One document is special in that it is considered the top node of the
"contents tree", that is, it is the root of the hierarchical structure
of the documents. Normally, this is "index", but if your "index"
document is a custom template, you can also set this to another filename.
> Name of your master document (without suffix) [index]:

Sphinx can also add configuration for epub output:
> Do you want to use the epub builder (y/n) [n]:

Please indicate if you want to use one of the following Sphinx extensions:
> autodoc: automatically insert docstrings from modules (y/n) [n]:
> doctest: automatically test code snippets in doctest blocks (y/n) [n]:
> intersphinx: link between Sphinx documentation of different projects (y/n) [n]:
> todo: write "todo" entries that can be shown or hidden on build (y/n) [n]:
> coverage: checks for documentation coverage (y/n) [n]:
> imgmath: include math, rendered as PNG or SVG images (y/n) [n]:
> mathjax: include math, rendered in the browser by MathJax (y/n) [n]:
> ifconfig: conditional inclusion of content based on config values (y/n) [n]:
> viewcode: include links to the source code of documented Python objects (y/n) [n]:
> githubpages: create .nojekyll file to publish the document on GitHub pages (y/n) [n]:

A Makefile and a Windows command file can be generated for you so that you
only have to run e.g. `make html' instead of invoking sphinx-build
directly.
> Create Makefile? (y/n) [y]:
> Create Windows command file? (y/n) [y]:

Creating file .\source\conf.py.
Creating file .\source\index.rst.
Creating file .\Makefile.
Creating file .\make.bat.

Finished: An initial directory structure has been created.

You should now populate your master file .\source\index.rst and create other documentation
source files. Use the Makefile to build the docs, like so:
   make builder
where "builder" is one of the supported builders, e.g. html, latex or linkcheck.

mikoto@mnhomewin  ~/project/sphinx-test
$ make html
sphinx-build -b html -d build/doctrees   source build/html
Running Sphinx v1.4.1
making output directory...
loading translations [ja]... done
loading pickled environment... not yet created
building [mo]: targets for 0 po files that are out of date
building [html]: targets for 1 source files that are out of date
updating environment: 1 added, 0 changed, 0 removed
reading sources... [100%] index
looking for now-outdated files... none found
pickling environment... done
checking consistency... done
preparing documents... done
writing output... [100%] index
generating indices... genindex
writing additional pages... search
copying static files... done
copying extra files... done
dumping search index in Japanese (code: ja) ... done
dumping object inventory... done
build succeeded.

Build finished. The HTML pages are in build/html.

mikoto@mnhomewin  ~/project/sphinx-test
$ start build/html/index.html

これで、 sphinx のウェルカムページが見えるはず。 ...msys2 環境でやるなら pacman で入れたほうが良くなかったか?

動作確認 on コマンドプロンプト

ということでコマンドプロンプトで試す。

C:\Users\mikoto>mkdir -p project\sphinx-test

C:\Users\mikoto>cd project\sphinx-test

C:\Users\mikoto\project\sphinx-test>sphinx-quickstart
Welcome to the Sphinx 1.4.1 quickstart utility.

Please enter values for the following settings (just press Enter to
accept a default value, if one is given in brackets).

Enter the root path for documentation.
> Root path for the documentation [.]:

You have two options for placing the build directory for Sphinx output.
Either, you use a directory "_build" within the root path, or you separate
"source" and "build" directories within the root path.
> Separate source and build directories (y/n) [n]: y

Inside the root directory, two more directories will be created; "_templates"
for custom HTML templates and "_static" for custom stylesheets and other static
files. You can enter another prefix (such as ".") to replace the underscore.
> Name prefix for templates and static dir [_]:

The project name will occur in several places in the built documentation.
> Project name: Test2
> Author name(s): Mikoto2000

Sphinx has the notion of a "version" and a "release" for the
software. Each version can have multiple releases. For example, for
Python the version is something like 2.5 or 3.0, while the release is
something like 2.5.1 or 3.0a1.  If you don't need this dual structure,
just set both to the same value.
> Project version: 1.0.0
> Project release [1.0.0]:

If the documents are to be written in a language other than English,
you can select a language here by its language code. Sphinx will then
translate text that it generates into that language.

For a list of supported codes, see
http://sphinx-doc.org/config.html#confval-language.
> Project language [en]: ja

The file name suffix for source files. Commonly, this is either ".txt"
or ".rst".  Only files with this suffix are considered documents.
> Source file suffix [.rst]:

One document is special in that it is considered the top node of the
"contents tree", that is, it is the root of the hierarchical structure
of the documents. Normally, this is "index", but if your "index"
document is a custom template, you can also set this to another filename.
> Name of your master document (without suffix) [index]:

Sphinx can also add configuration for epub output:
> Do you want to use the epub builder (y/n) [n]:

Please indicate if you want to use one of the following Sphinx extensions:
> autodoc: automatically insert docstrings from modules (y/n) [n]:
> doctest: automatically test code snippets in doctest blocks (y/n) [n]:
> intersphinx: link between Sphinx documentation of different projects (y/n) [n]:
> todo: write "todo" entries that can be shown or hidden on build (y/n) [n]:
> coverage: checks for documentation coverage (y/n) [n]:
> imgmath: include math, rendered as PNG or SVG images (y/n) [n]:
> mathjax: include math, rendered in the browser by MathJax (y/n) [n]:
> ifconfig: conditional inclusion of content based on config values (y/n) [n]:
> viewcode: include links to the source code of documented Python objects (y/n) [n]:
> githubpages: create .nojekyll file to publish the document on GitHub pages (y/n) [n]:

A Makefile and a Windows command file can be generated for you so that you
only have to run e.g. `make html' instead of invoking sphinx-build
directly.
> Create Makefile? (y/n) [y]:
> Create Windows command file? (y/n) [y]:

Creating file .\source\conf.py.
Creating file .\source\index.rst.
Creating file .\Makefile.
Creating file .\make.bat.

Finished: An initial directory structure has been created.

You should now populate your master file .\source\index.rst and create other documentation
source files. Use the Makefile to build the docs, like so:
   make builder
where "builder" is one of the supported builders, e.g. html, latex or linkcheck.

C:\Users\mikoto\project\sphinx-test>make.bat html
Running Sphinx v1.4.1
making output directory...
loading translations [ja]... done
loading pickled environment... not yet created
building [mo]: targets for 0 po files that are out of date
building [html]: targets for 1 source files that are out of date
updating environment: 1 added, 0 changed, 0 removed
reading sources... [100%] index
looking for now-outdated files... none found
pickling environment... done
checking consistency... done
preparing documents... done
writing output... [100%] index
generating indices... genindex
writing additional pages... search
copying static files... done
copying extra files... done
dumping search index in Japanese (code: ja) ... done
dumping object inventory... done
build succeeded.

Build finished. The HTML pages are in build/html.

C:\Users\mikoto\project\sphinx-test>start build\html\index.html

うん、OK です。

msys2 環境が悪さしないで良かった。

2016/10/19

[作業記録][Debian] Sphinx を使ってみたい

環境

  • Debian 8.5 最小構成インストール
  • sudo, vim, ssh はインストール済み

目標

Sphinx でドキュメントを作成し、生成した html を Nginx で公開する。

作業

下記手順で作業を行う。

  1. 必要パッケージのインストール
  2. sphinx プロジェクトの作成
  3. ドキュメント作成
  4. ドキュメントビルド
  5. html を配置

必要パッケージのインストール

make が必要なの注意。

sudo apt install python3-sphinx
sudo apt install nginx
sudo apt install make

sphinx プロジェクトの作成

Separate source and build directoriesy のほうが管理しやすい感じがした。 その他はよしなにする感じで。

mikoto@debian-base:~$ mkdir -p sphinx/test
mikoto@debian-base:~$ cd sphinx/test/
mikoto@debian-base:~/sphinx/test$ sphinx-quickstart
Welcome to the Sphinx 1.2.3 quickstart utility.

Please enter values for the following settings (just press Enter to
accept a default value, if one is given in brackets).

Enter the root path for documentation.
> Root path for the documentation [.]:     

You have two options for placing the build directory for Sphinx output.
Either, you use a directory "_build" within the root path, or you separate
"source" and "build" directories within the root path.
> Separate source and build directories (y/n) [n]: y

Inside the root directory, two more directories will be created; "_templates"
for custom HTML templates and "_static" for custom stylesheets and other static
files. You can enter another prefix (such as ".") to replace the underscore.
> Name prefix for templates and static dir [_]: 

The project name will occur in several places in the built documentation.
> Project name: Test
> Author name(s): Mikoto2000

Sphinx has the notion of a "version" and a "release" for the
software. Each version can have multiple releases. For example, for
Python the version is something like 2.5 or 3.0, while the release is
something like 2.5.1 or 3.0a1.  If you don't need this dual structure,
just set both to the same value.
> Project version: 1.0.0
> Project release [1.0.0]: 

The file name suffix for source files. Commonly, this is either ".txt"
or ".rst".  Only files with this suffix are considered documents.
> Source file suffix [.rst]: 

One document is special in that it is considered the top node of the
"contents tree", that is, it is the root of the hierarchical structure
of the documents. Normally, this is "index", but if your "index"
document is a custom template, you can also set this to another filename.
> Name of your master document (without suffix) [index]: 

Sphinx can also add configuration for epub output:
> Do you want to use the epub builder (y/n) [n]: 

Please indicate if you want to use one of the following Sphinx extensions:
> autodoc: automatically insert docstrings from modules (y/n) [n]: 
> doctest: automatically test code snippets in doctest blocks (y/n) [n]: 
> intersphinx: link between Sphinx documentation of different projects (y/n) [n]: 
> todo: write "todo" entries that can be shown or hidden on build (y/n) [n]: 
> coverage: checks for documentation coverage (y/n) [n]: 
> pngmath: include math, rendered as PNG images (y/n) [n]: 
> mathjax: include math, rendered in the browser by MathJax (y/n) [n]: 
> ifconfig: conditional inclusion of content based on config values (y/n) [n]: 
> viewcode: include links to the source code of documented Python objects (y/n) [n]: 

A Makefile and a Windows command file can be generated for you so that you
only have to run e.g. `make html' instead of invoking sphinx-build
directly.
> Create Makefile? (y/n) [y]: 
> Create Windows command file? (y/n) [y]: n

Creating file ./source/conf.py.
Creating file ./source/index.rst.
Creating file ./Makefile.

Finished: An initial directory structure has been created.

You should now populate your master file ./source/index.rst and create other documentation
source files. Use the Makefile to build the docs, like so:
   make builder
where "builder" is one of the supported builders, e.g. html, latex or linkcheck.

こんな感じのディレクトリ構成になります。

mikoto@debian-base:~/sphinx/test$ find ./ -maxdepth 2 
./
./build
./Makefile
./source
./source/conf.py
./source/index.rst
./source/_templates
./source/_static

ドキュメント作成

適当にドキュメントを作ります。

今回は、test.rst を作成して、 index.rsttoctreetest.rst を追加。

mikoto@debian-base:~/sphinx/test$ cat source/test.rst 
====
test
====

Hello Sphinx document!

mikoto@debian-base:~/sphinx/test$ cat source/index.rst 
.. Test documentation master file, created by
   sphinx-quickstart on Tue Oct 18 23:52:34 2016.
   You can adapt this file completely to your liking, but it should at least
   contain the root `toctree` directive.

Welcome to Test's documentation!
================================

Contents:

.. toctree::
   :maxdepth: 2

   test


Indices and tables
==================


* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`

ドキュメントビルド

プロジェクトルートで make html するだけ。

mikoto@debian-base:~/sphinx/test$ make html
sphinx-build -b html -d build/doctrees   source build/html
Making output directory...
Running Sphinx v1.2.3
loading pickled environment... failed: [Errno 2] No such file or directory: '/home/mikoto/sphinx/test/build/doctrees/environment.pickle'
building [html]: targets for 2 source files that are out of date
updating environment: 2 added, 0 changed, 0 removed
reading sources... [100%] test                                                                                       looking for now-outdated files... none found
pickling environment... done
checking consistency... done
preparing documents... done
writing output... [100%] test                                                                                        writing additional files... genindex search
copying static files... done
copying extra files... done
dumping search index... done
dumping object inventory... done
build succeeded.

build/html に html ファイルが生成される。

html を配置

生成された heml ファイルをそのまま nginx のドキュメントルートに突っ込んでしまえば OK。

mikoto@debian-base:~/sphinx/test$ sudo cp -r build/html/* /var/www/html/

これで、 http://ホスト名/ にアクセスすると、生成した Sphinx ドキュメントが参照できるようになっているはず。

以上。