Sphinx 社内勉強会

49
sphinx社内勉強会 このような、プログラマーが ドキュメントを書きたくなってしまう すばらしいツールに乾杯!ユーザーの声: 2011/11/18 t2y 20111118日金曜日

description

Sphinx がどういうものかをざっくり紹介した勉強会の資料です

Transcript of Sphinx 社内勉強会

Page 1: Sphinx 社内勉強会

sphinx社内勉強会“このような、プログラマーがドキュメントを書きたくなってしまうすばらしいツールに乾杯!”

ユーザーの声:

2011/11/18 t2y

2011年11月18日金曜日

Page 2: Sphinx 社内勉強会

お前、誰よ森本 哲也 (もりもと てつや)

Pythonプログラミングが好きです

Twitter: @t2y (日本語) , @t2y_en (英語)

G+: gplus.to/t2y (英語メイン)

Hatena:

forest book (主にプログラミング、技術ネタ)

forest nook (普通の日記)

2011年11月18日金曜日

Page 3: Sphinx 社内勉強会

エキスパートpythonプログラミングpython中級本

構文ベストプラクティス

良い名前付け

パッケージング

ドキュメント

テスト駆動開発

最適化

デザインパターン

10章: プロジェクトのドキュメント作成

sphinxの紹介

pythonにおけるアプリケーション開発

第4刷

2011年11月18日金曜日

Page 4: Sphinx 社内勉強会

目次sphinx概要

rest概要

ドキュメンテーション

sphinxを拡張するツール

sphinxとpythonパッケージ

sphinxでリファレンスを書く

2011年11月18日金曜日

Page 5: Sphinx 社内勉強会

sphinx概要(1)

もともとの目的

pythonドキュメントを作成するため

開発者Georg Brandl

pocooの開発リーダーの1人

2005年からpythonコア開発者

python3リリースマネージャー

"Pocoo ispronounced /ˈpokʉː/"

2011年11月18日金曜日

Page 6: Sphinx 社内勉強会

sphinx概要(2)

構成

sphinx: ドキュメントビルダー

docutils: RESTパーサー

pygments: コードハイライト

jinja2: HTMLテンプレートエンジン

doxygen のようなものらしいです

2011年11月18日金曜日

Page 7: Sphinx 社内勉強会

sphinx概要(3)

ドキュメントビルダーって?

latexの親戚、モダンなlatex

makefileでドキュメントをビルド

restのテキストからフォーマット変換

国際化対応(gettext)

2011年11月18日金曜日

Page 8: Sphinx 社内勉強会

変換できるフォーマット$ make help

Please use `make <target>' where <target> is one of

html to make standalone HTML files

dirhtml to make HTML files called index.html in directories

singlehtml to make one big HTML file

text to make text files

man to make manual pages

pickle to make pickle files

json to make json files

htmlhelp to make HTML files and a HTML help project

qthelp to make Qt help files and project

devhelp to make Devhelp files and project

epub to make an epub file

latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter

latexpdf to make LaTeX files and run pdflatex

texinfo to make Texinfo files

info to make Texinfo files and run them through makeinfo

gettext to make PO message catalogs

changes to make an overview over all changed/added/deprecated items

linkcheck to check all external links for integrity

djangoドキュメントjsonからレンダリング

2011年11月18日金曜日

Page 9: Sphinx 社内勉強会

sphinx概要(4)拡張性の高さ

ビルダー

doc/xlsビルダーを作るとヒーロー?

restディレクティブやマークアップ

blockdiag:ブロック図生成

ビルドプロセスのフック

リンクやスペルチェック

.. blockdiag:: { A [label="自分"];

A -> B [label="Open"]; A -> C; O -> P -> C; }

2011年11月18日金曜日

Page 10: Sphinx 社内勉強会

sphinx概要(5)sphinxを利用しているサイト

python系

pythonドキュメント

sqlalchemyドキュメント

それ以外のコミュニティでも利用されてる

groongaドキュメント

symfony2ドキュメント

2011年11月18日金曜日

Page 11: Sphinx 社内勉強会

sphinx概要(6)

日本コミュニティの充実sphinx-users.jp

sphinxドキュメントの日本語翻訳

sphinx全般のハブサイト

会長: 渋川さん 副会長: 清水川さん

2011年11月18日金曜日

Page 12: Sphinx 社内勉強会

目次sphinx概要

rest概要

ドキュメンテーション

sphinxを拡張するツール

sphinxとpythonパッケージ

sphinxでリファレンスを書く

2011年11月18日金曜日

Page 13: Sphinx 社内勉強会

rest概要

WIKIに良く似た記法

STRUCTUREDTEXTのインデントを除去して拡張

PYTHONコード内にドキュメントを埋め込む用途

リファレンス

reStructuredText入門

2011年11月18日金曜日

Page 14: Sphinx 社内勉強会

restを書いてみる

デモ: 実際に書いてみる

2011年11月18日金曜日

Page 15: Sphinx 社内勉強会

sphinxを使う

デモ: sphinxでrestのテキストをビルドする

2011年11月18日金曜日

Page 16: Sphinx 社内勉強会

目次sphinx概要

rest概要

ドキュメンテーション

sphinxを拡張するツール

sphinxとpythonパッケージ

sphinxでリファレンスを書く

2011年11月18日金曜日

Page 17: Sphinx 社内勉強会

ドキュメンテーション

ドキュメント作成って?

地味: 分かりやすい文章を書く

地道: 常に更新していく

地盤: 情報共有の基本、様々なフォーマット

もう少し楽しくドキュメントを作成しよう

おもしろそうなイメージがない

2011年11月18日金曜日

Page 18: Sphinx 社内勉強会

ドキュメントを書くコツ2つのステップで書く

読者のターゲットを明確にする

シンプルなスタイルを使用する

情報のスコープを絞る

実在するようなコードのサンプルを使用する

なるべく少なく、かつ十分なドキュメント

テンプレートの使用

10章: プロジェクトのドキュメント作成

sphinxの紹介

2011年11月18日金曜日

Page 19: Sphinx 社内勉強会

ドキュメントが煩わしいというのは

ドキュメントの書き方が分からない

何を?誰に?どのぐらいのレベルで?書くの?

ドキュメントの本質じゃないことが煩わしい

構造化(階層化)

バージョン管理

フォーマット変換

2011年11月18日金曜日

Page 20: Sphinx 社内勉強会

そこでsphinxですよ!

2011年11月18日金曜日

Page 21: Sphinx 社内勉強会

ドキュメントを書く良い動機付け

プログラマーがドキュメントを書きたくなるって?

restでシンプルに構造化できる

テキストで書ける => バージョン管理できる

コード内にドキュメントが書ける => 更新が容易

html/epub/pdfの変換 => 必要十分

2011年11月18日金曜日

Page 22: Sphinx 社内勉強会

目次sphinx概要

rest概要

ドキュメンテーション

sphinxを拡張するツール

sphinxとpythonパッケージ

sphinxでリファレンスを書く

2011年11月18日金曜日

Page 24: Sphinx 社内勉強会

sphinxcontrib.spelling

sphinxcontrib.spelling

doug hellmannが開発

pyenchantライブラリによるスペルチェック

sphinxのビルドオプションとして実行

2011年11月18日金曜日

Page 25: Sphinx 社内勉強会

sphinxjp.themes.s6

sphinxjp.themes.s6

新婚の清水川さんが開発

restでプレゼンテーション

s6というjsのプレゼンツールを組み込む

s6向けのテーマ(テンプレートやcss)を提供

“..s6:: xxx”ディレクティブの拡張

2011年11月18日金曜日

Page 26: Sphinx 社内勉強会

blockdiag

blockdiag

通称「世界の小宮」さんが開発

ブロック図を描くツール

diagシリーズが好評seqdiag

actdiag

nwdiag

rackdiag

インタラクティブシェルで遊ぼう

2011年11月18日金曜日

Page 27: Sphinx 社内勉強会

sphinxjp.shibukawa

sphinxjp.shibukawa

通称「世界の小宮」さんが開発

渋川さんへのバースデーパッケージらしい

こんな感じで盛り上がってるみたい、、、です

2011年11月18日金曜日

Page 28: Sphinx 社内勉強会

目次sphinx概要

rest概要

ドキュメンテーション

sphinxを拡張するツール

sphinxとpythonパッケージ

sphinxでリファレンスを書く

2011年11月18日金曜日

Page 29: Sphinx 社内勉強会

docstring

sphinxのもともとの目的って?

pythonドキュメントを作るためのツール

コード内のコメントからドキュメントを生成

コード内のコメントをdocstringと呼ぶ

2011年11月18日金曜日

Page 30: Sphinx 社内勉強会

sphinxとpythonパッケージング

pythonパッケージングをしたことある方?

2011年11月18日金曜日

Page 31: Sphinx 社内勉強会

pythonパッケージングsetup.pyを定義

ここでは以下のツールを使う

python標準ライブラリ: distutils

distutilsの拡張ライブラリ: distribute

参考:

清水川web: distutils, setuptools, distribute, pip, virtualenv, buildout

2011年11月18日金曜日

Page 32: Sphinx 社内勉強会

apiドキュメント生成

e.g) flask

$ cd flask_repository

$ python setup.py build_sphinx

build/sphinx/html にドキュメントを生成

時間があったら過去に作ったドキュメントを紹介

javadocのようなもの?

2011年11月18日金曜日

Page 33: Sphinx 社内勉強会

目次sphinx概要

rest概要

ドキュメンテーション

sphinxを拡張するツール

sphinxとpythonパッケージ

sphinxでリファレンスを書く

2011年11月18日金曜日

Page 34: Sphinx 社内勉強会

リファレンスを書こう

先週のpypy勉強会で、みなさんは既に自分の言語処理系を開発されたはずなので、好きなだけリファレンスドキュメントを書いてください

2011年11月18日金曜日

Page 35: Sphinx 社内勉強会

世の中にあるリファレンスを見てみよう

世の中にあるドキュメントを見てみる

pythonプロジェクト

djangoプロジェクト

pyramidプロジェクト

試しにビルドしてみる

2011年11月18日金曜日

Page 36: Sphinx 社内勉強会

ビルドの待ち時間に

世の中にあるドキュメントを見てみる

pythonプロジェクト

djangoプロジェクト

pyramidプロジェクト

webページに行ってみる

2011年11月18日金曜日

Page 37: Sphinx 社内勉強会

世の中にあるリファレンスを見てみよう

世の中にあるドキュメントを見てみる

pythonプロジェクト (v2.7.2)

ライブラリリファレンス

C/APIリファレンス

言語リファレンス

djangoプロジェクト(v1.3)

pyramidプロジェクト(v1.2)

実際にビルドしてみた

1424 page

192 page

122 page

1129 page

670 page

2011年11月18日金曜日

Page 38: Sphinx 社内勉強会

python書籍learning python (邦題: 初めてのpython)

著者: Mark Lutz

第1版(1999/4) ・・・ 384 page

第2版(2003/12) ・・・ 624 page

第3版(2007/10) ・・・ 752 page

第4版(2009/9) ・・・ 1216 page

2011年11月18日金曜日

Page 39: Sphinx 社内勉強会

他のpython書籍programming python (邦題: プログラミングpython)

著者: Mark Lutz

第1版(1996/10) ・・・ 902 page

第2版(2001/3) ・・・ 1296 page

第3版(2006/8) ・・・ 1600 page

第4版(2010/12) ・・・ 1632 page

2011年11月18日金曜日

Page 40: Sphinx 社内勉強会

ちょっと言いたい

Mark Lutz自重しろ

邦訳は追随してない

“python本は分厚いからねぇ”

pythonはシンプルだから初心者に優しいはず

初心者が1000ページもドキュメント読めるか!

ある編集者さんの声

2011年11月18日金曜日

Page 41: Sphinx 社内勉強会

目次sphinx概要

rest概要

ドキュメンテーション

sphinxを拡張するツール

sphinxとpythonパッケージ

sphinxでリファレンスを書く

2011年11月18日金曜日

Page 42: Sphinx 社内勉強会

雑談

技術的なお話ではないけれど、、、

sphinxでドキュメントを翻訳するお話

エキスパートpythonプログラミング本pymotw & python insider

ikazuchi

2011年11月18日金曜日

Page 43: Sphinx 社内勉強会

雑談目次

sphinxと翻訳

ikazuchiの翻訳

2011年11月18日金曜日

Page 44: Sphinx 社内勉強会

sphinxと翻訳

エキスパート Python プログラミングに学ぶ

PyMOTW 翻訳の進め方

Python Insider の国際化対応

興味ある方はブログを読んでみてください

2011年11月18日金曜日

Page 45: Sphinx 社内勉強会

ikazuchiの翻訳

PyPIをikazuchiで検索するikazuchi

CUIの翻訳ツールgoogle translate api

microsoft translate API

プラガブルな設計

2011年11月18日金曜日

Page 46: Sphinx 社内勉強会

ikazuchiデモちょっとikazuchiを使ってみましょう

もともとは自分のための翻訳補助ツール

PyPIにアップロードするテストパッケージ

pythonの名前空間パッケージの調査

europythonでのltネタ

(sphinxcontrib-ikazuchiを作る予定だった)

2011年11月18日金曜日

Page 47: Sphinx 社内勉強会

sphinxを拡張するならみなさんは開発者なのでsphinxの拡張や開発に興味をもったと思います、こんなことやるとコミュニティで喜ばれます

国際化対応(gettext)の改善

quickstartスクリプトの改善

ビルダー開発(doc/xlsとか)

2011年11月18日金曜日

Page 48: Sphinx 社内勉強会

まとめ

身近なものからrestで書こう

身近なものからsphinx拡張を開発してみよう

2011年11月18日金曜日

Page 49: Sphinx 社内勉強会

happy documenting with sphinx

2011年11月18日金曜日