reStructuredText を使った静的 HTML 生成ツール

written on Saturday, January 28, 2012

静的 HTML 生成ツールをブログとして使う最近だと JekyllOctpress を使って Github pages と連携させるというのが流行ってるんだろう。

Jekyll は Ruby で書かれているツールで、その Python 版として Hyde というのがあるが、 Sphinx 並みにもっと手軽なものがないものかと思ったら、 rstblog があったのを思い出した。

rstblog は文字通り reStructuredText で本文を記述して HTML を生成する。 個人的には Markdown 形式より慣れているので嬉しい。

インストール&設定

サイト用のディレクトリを作成する。

$ mkdir -p /path/to/site

rstblog は PyPi にはアップロードされていないので、Github からダウンロードしてインストールする。

$ git clone https://github.com/mitsuhiko/rstblog.git
$ cd rstblog
$ python setup.py install

rstblog から必要なものをコピーする。

$ cp -r templates /path/to/site/_templates
$ cd /path/to/site

config.yml を作成する。

---
active_modules: [pygments, tags, blog, latex]
author: Your name
canonical_url: http://heavenshell.github.com/
modules:
  pygments:
    style: tango

css などの静的ファイルを格納するディレクトリを作成する。 static ディレクトリにテンプレートから読み込む css ファイルを作成する。

$ mkdir static

ブログを配信するディレクトリを作成する。 ディレクトリ名は配信する日付になる。

$ mkdir -p 2012/01/28

記事を reStructuredText で作成する。

$ cd 2012/01/28
$ vim start_rstblog.rst
public: yes
tags: [python, restructuredtext]
summary: |
  reStructuredText を使った静的 HTML 生成ツールを使ってみた

reStructuredText を使った静的 HTML 生成ツール
=============================================

静的 HTML 生成ツールをブログとして使う最近だと `Jekyll <https://github.com/mojombo/jekyll>`_`Octpress <http://octopress.org/>`_ を使って Github pages と連携させるというのが流行ってるんだろう。

public はトップの一覧に表示するかどうかの設定。 これが no の場合トップにリンクが表示されなくなる(ただし url で直接アクセスすれば表示はできる)。 tags はその記事のタグでタグ一覧に表示される。 summary はトップページに表示される要約。

デザインカスタマイズ

自分でデザインなどをカスタマイズするには、基本的に _templates の下のテンプレートファイルを編集する。

テンプレートエンジンに Jinja2 が使われているが、さほど難しい事をやってる訳ではないので、基本的には css をいじる感じ。

HTML 生成

以下のコマンドを実行すると、_build というディレクトリが出来る。

$ run-rstblog build
$ tree _build
_build
├── 2012
│   ├── 01
│   │   ├── 28
│   │   │   └── start_rstblog
│   │   │       └── index.html
│   │   └── index.html
│   └── index.html
├── archive
│   └── index.html
├── feed.atom
├── index.html
├── static
│   ├── _pygments.css
│   ├── site.css
│   └── style.css
└── tags
    ├── index.html
    ├── python
    │   ├── feed.atom
    │   └── index.html
    └── restructuredtext
        ├── feed.atom
        └── index.html

9 directories, 14 files

このまま生成した HTML ファイルをブラウザで開いても css などが絶対パスになるので、組み込みの Web アプリケーションとして起動する。

$ run-rstblog serve
Serving on http://127.0.0.1:5000/

ブラウザで http://127.0.0.1:5000/ にアクセスすると表示される。

一々コマンドを打つのが面倒くさいので、Makefile にした。

all: build serve

clean:
  rm -rf _build

build:
  run-rstblog build

serve:
  run-rstblog serve

まとめ

HTML 生成ツールとして Hyde より手軽な感じがした。

特に Sphinx をバリバリ使っているような人は reStructuredText になれているだろうから、やりやすいと思う。

This entry was tagged python, restructuredtext and rstblog