静的ジェネレータ Nikola の検討

Nikola って何?

Nikola とは Pelican と同じく Python製の静的ジェネレータです。

Nikola の Blog を確認する限り、最初のバージョンのリリースが 2012年3月ごろのよう です。 Pelicanのリリースノートを見ると最初のバージョンが 2010年なので、Pelican より後発になります。

Python製なので、Pelican同様 reStructured Textが扱えます。というか、デフォルトが reStructured Textです。Markdown 記法も、もちろん扱えます。 Nikolaの特徴としては、 標準でサポートするファイル形式の豊富さです。 Jupyter Notebook、 HTML、PHP、 その他 Pandocが扱える形式であればインプットとして扱えるようです。

また、プラグインを使えば、AsciiDoc、 BBCode, Org-Mode, Textile, WorkPress Posts 形式にも対応できます。

Nikolaを試す

Nikola はドキュメントが充実しているようで、 " Getting Start " 通りにやれば、一通り環境はできるはずです。

一応ここにも書いておきます。

Pythonや Virtualenvの環境はあるものとして、書いています。

  1. pip で Nikolaのインストール
  2. サイトの初期化
  3. 最初の記事のポスト
  4. サイトのビルド
  5. 開発サーバーの起動とブラウザでの確認

これをコマンドの流れでやると、以下のような感じです。

$ pip install "git+https://github.com/getnikola/nikola#egg=Nikola[extras]"
$ nikola init my_site && cd my_site
$ nikola new_post -e
Title: 最初の記事ですよ
Scanning posts....done!
INFO: new_post: Your post's text is at: posts/zui-chu-noji-shi-desuyo.rst
(ここでエディタで記事を作成)
$ nikola build
$ nikola serve --browser

これだけで、記事を元にサイトを作成して、開発サーバーを起動してブラウザで 確認できるところまでやってくれます。

基本的な流れは Pelicanと同じですが、 記事の作成など Pelicanだと 自分でファイルを作成してエディタで編集する部分もコマンドでサポート するなど Hugoあたりと同じように機能が充実しているようです。

上の例では、タイトルを日本語で書いたため、 nikola new_post で生成 されるソースのファイル名とslugが変な文字になってしまいました。

なぜ、Nikolaか

正直 Pelican から移行するかどうか決めていませんが、以下のような点は 魅力的かと思います。

  • 現在は Pelicanより活動が活発そう
  • コマンドが充実しており、CLIフレンドリー!
  • ビルトインの機能が豊富で、コメントやタグ、アーカイブ、フィードなどあれこれ プラグインで実現していた Pelicanと比べるとシンプルに機能を利用できそう
  • メタデータの記法に若干の違いはあるがreStructuredTextを使えるので、Pelican からの移行は楽そう
  • 日本人ユーザーがほとんどいない

とは言え、Pelicanより更にマイナーなのでテーマも純正以外ほとんど無いようです。 ただ、以前 Hugoで使用していた Hemingwayテーマが移植されていたので心動かされます。

テーマのカスタマイズなど必要なので、時間が取れないとなかなか移行できないと思いますが、今の所移行を阻む大きな阻害要因はなさそうです。

ちょっと悩むなぁ。