
Sphinx紹介
BPStudy #30に登壇してきました。ネタはSphinxの紹介です。資料はこちらにあります。Slideshareに上げてみたけど、固定長フォントが崩れて、ソースコードがうまく表示されないという、チュートリアルのテキストとしては大問題な感じだったので、ドキュメントがアップできるようになったというGoogle Docsを利用しました。いいですね、これ。Slideshareみたいに、ビュー数とか、ソーシャル機能がないのはちょっと寂しいけどね。
結果としては、Sphinxの良さを伝えることができたかな、と思っています。すごく反応して拡張機能に手を染め始めた人もいるし、僕自身も、Sphinxを紹介する武器として、今回スライドを作ることができたので、今後はいろんなところで生かして行きたいとおもいます。
Sphinxの良さというのは、結果だけを見せられても、伝わりにくいな、というのが僕の実感。複数ファイルを含むmakeが成功して、目次がばっとできるとSphinxの良さが実感できる、というのはあると思う。逆に、目次を作ってみないことには、「Wikiっぽいね」で終わってしまう人が多いと思う。なので、資料でもtoctreeを協調した説明になっています。自習される方は、ぜひ複数ファイル作って、toctreeを使って見てください。後は、使い方として、コメントアウトを使えば翻訳にも便利ですよ、というのを紹介すれば良かったかな?
何点かTwitter上に質問とかご意見があったので返事をしておきます。他にも何かあればお気軽に @shibukawa 宛にどうぞ。
WerkzeugとSphinxの関係は?
作者が一緒、というのが一つ。両方とも、pocooの兄弟。Sphinxが使っているライブラリの、JinjaとPygmentsも同じく、です。なので、Sphinxが純粋に外部に依存しているのは、docutilsだけです。
話が逸れましたが、元はWerkzeug用の、内製ドキュメントツールとして開発され、それがツールとして整備され、Pythonの本家のドキュメントを作成できるように機能拡張されたのが、今のSphinxです。
Wikiと比較するのは違うのでは?
とちぎRuby会議02の時のスライドを流用した、という理由もありますが、やはり、Wikiを使ったことがある人はすごい多いので、聞く人の過去の記憶とヒモ付けながら説明する方がイメージが掴みやすいだろう、という理由です。
Wikiも、内製ドキュメント用の環境としては、一定のシェアを持っていると思うし。Tracとかに内蔵のWikiとかも含めれば。Sphinxも、ソースコードのライブラリのドキュメントとかに便利な機能がそろっているという点で、WikiとSphinxは機能やアーキテクチャは違えど、同じマーケット上で争うライバルと言えると思います。
Sphinx独自のディレクティブはどのぐらいある?
複数ドキュメントをつなぐようなディレクティブは基本、Sphinx独自だと思って間違いないかと思います。あとは、独自にPygmentsを利用しているコードハイライトかな?
- toctree
- function, methodなどの、クロスリファレンス系
- index
- code-block
こんな所かと。
Sphinx自身のドキュメントのindex.htmlのソースが見られない
Sphinxのドキュメントのindex.htmlは、reSTを変換したのではなく、Jinjaテンプレートから生成したHTMLです。本当のソースは、以下の所にあります。
Djangoテンプレートっぽいという感想を持つ方も多いですが、これがJinjaです。BPStudyの中でも紹介したけど、ドイツ、オーストリア周辺のグループが作ったプロダクトではあるけど、名前の由来は、Template→temple(神社)→Jinjaという、日本の神社のダジャレです。
タイマーのない(LTではない)発表は久しぶりだったのですが、1時間30分の持ち時間で、ストップウォッチで測定した結果、発表時間は1時間30分09秒。我ながら、なんという精度。LTで鍛えた結果ですね。
Rails vs Django
Asakusa.rbの松田明さんと、最近、インタビューとかに出まくっている(1件は僕も絡んでいるけど)岡野さんのパネルトークでした。結構いっぱい、メモ取りました。機能の違いで優劣を語るのは簡単だけど、「どういう意図があってこうなっているのか?」という所まで深く突っ込んで聞けたのは面白かったです。前半を短くして、後半長くしても良かったんじゃないかな?と思うぐらいw
平均的な能力で見るとドキュメント、後方互換性などを考慮したプロダクトが多いPythonの方が安心感はあるのかもしれないけど、たまに尖ったプロダクトが登場する具合でいうと、Rubyは爆発力ありますよね。mod_rackのnginxでもApacheでも動きます、とか。へぇー、と思いました。
ちなみに「Railsはテンプレート周りだけが20世紀っぽい」という話が出たので、栃木県民としては黙っていられず、「ERBは、文字列生成メソッドとして使うのが本来の使い方」「Railsは、良くできたERBのサンプル」という、咳さんの言葉を紹介しておきました。
懇親会
松田さんと色々お話ができて勉強になりました。僕もどちらかというと、Rubyよりも、それを作るCコードの方に興味があるので、Asakusa.rbとか面白そうだな、と思ってます。後は、Pythonな人がjsonが好きで、Rubyな人がYAML/HAMLが好きって逆じゃない?とか、そんな話とか。勉強本に載せたい一言とかも頂きました。
@nanimosaとも色々お話。Blender 2.5はマジおもしろそう。Head First オブジェクト指向 in Pythonとかできそうな勢いですよ。あるいはオブジェクト脳のつくり方 with Python。へぇ、へぇ。そういえば、@nanimosaはOSCでBlenderの話をするとのことだったけど、どうだったのかなぁ?スライド楽しみ。
いい勉強会でした
最初から最後まで、ずっと楽しかったです。開始前に行った、写真美術館も良かった。こういう場を大事にしたいよね。
この件について、mixiに日記書いたけど、足跡が今回はぜんぜん付きませんでした。うーん、最近mixiやってないのかな?プログラマ系の人達は。ブログに記事を書いても、はてブよりもTwitterの参照数の方が多かったりもするし、情報の流れ方が、この半年で大きく変わったのを感じます。
とはいえ、Twitterも過去の情報を見るのがめんどうだったり、あっという間に流れて話題がうつりかわったりするので、万能とも言えないけどね。人間が扱える情報量自体が増えない以上、流れるメッセージが増えれば、一つ一つの重みは小さくなる。このまま小さくなり続けるのかな?それともまた違う流れが来るのかな?メッセージの重みが軽くなるアンチテーゼとしては、Google Buzzはアリだと思う。現状ではTwitterのメッセージをそのまま流している人も多いので、そんな気はしないだろうな、と思うけど。やはり、Googleの検索が使える意義は思ったよりも大きいと思います。