Static Site GeneratorのPelicanを使ってみた

主にお客さまに向けて、自分がどんなことをやっているのか、考えているのかを知ってもらう目的で、Blogをはじめることにしました。 まずは、Blogシステムとして採用した Python製のStatic Site Generatorである Pelican についての記事です。

Static Site Generator

Flying pelican

Photo by TexasEagla

新しいもの好きのWeb製作者の間で、Webサイトの構築用にStatic Site Generatorというものが注目を集めているようです。 GitHub Pagesで使われている Jekyll や、 Octpress などが有名です。

WordPressなどの一般的なブログシステムは、ページをロードしたときに、データベースからデータを取り出して、そのたびにHTMLを生成するので、これは動的なシステムです。動的なシステムでは、(キャッシュされていなければ)毎回生成処理が走るので負荷がかかりますし、設置のためにはサーバー側でプログラムを使える必要があります(レンタルサーバーなどでも、PHPの使えるプラン、使えないプランがあると思います)。

Static Site Generatorでは、ローカルでプログラムを動かして、HTML/CSS/JSをファイルとして出力します。 出力されたファイル群をそのままftpなどでアップロードすればいいので、サーバー側には動的な生成システムは不要です。 したがって、運用に必要な条件は動的システムより弱いと言えます。 また、生成処理がサーバー上で走らないので、動的システムよりも負荷が軽いです。

コンテンツを記述する際の形式としては、MarkDownreST など、最近流行りのファイルフォーマットが多いようです。これらのフォーマットは、XMLなどとは違い、人間がテキストエディタで直接編集することを念頭に置いて設計されており、そのままでも読み書きし易くなっています。Pelicanでは、reSt,Markdown,AsciiDocをサポートしています(reSTを使うとプログラムコードの表示に使えるオプションが豊富なので、わたしはreSTを使っています)。

まあ、いまどきPHPとDBが使えないサーバーもあまりないでしょうから、実際のところ、どれほど利点があるのかはわかりません。 PelicanやJekyllに関して言えば、コマンドラインからの操作が必要で、いまどきの動的CMSのように、インストールスクリプトを走らせて、あとは管理画面から設定すればいいというようなものでもありません。ただ単に使うためにもけっこう知識と手間が必要で、導入コストが比較的高いです(中にはデスクトップアプリとして動くものもあるようなので、そういうのであれば、簡単に使えるかもしれません)。

コメントシステムDisqus

Pelicanは静的なHTMLを生成しますが、記事へのコメントもサポートしています。 どうやるのかというと、Disqus という外部のサービスを使います。 こういうサービスがあるのを知らなかったのですが、非常に便利です。 Disqusでアカウントを作成して、pelicanの設定ファイルに1行設定を追加すれば、それで対応は完了です。 記事ごとにコメントが付けられるようになり、ソーシャル共有ボタンの追加や、関連記事表示表示などもやってくれます。

(かなり昔(10年くらい前?)にこんな感じの任意のページにコメントを付けれるプログラムを日本人のだれかが作ってたような記憶があるんですが、 まったく思い出せないし検索しても出てこないのでムズムズしてます…)

使うときの流れ

Pelicanでコンテンツを更新するときの流れは簡単です。付属のスクリプトが、コマンド一発でサイトへのアップロードまで世話してくれます。

  1. contents/ 以下の元ファイル(reSTやMarkDown)をテキストエディタで編集
  2. 付属の make ssh_uploadコマンドで、ファイルを生成&アップロード

contents/以下のrstファイルやmdファイルは、自動的に記事として使われます。 アップロード先のサイトやアカウントの設定は、あらかじめ、設定ファイルに記述しておきます。

Static Site GeneratorのPelicanを採用した理由

また、導入の過程で、Jinja2,pygments,Fabricといった便利そうなPythonライブラリを知れたのも個人的によかったです。 動的なブログシステムでも同じですが、なんとなくインストールして、自分用にカスタマイズしてるだけでもたのしいですよ。