JekyllみたいなのとWordPressみたいなのの組み合わせ

静的ウェブサイト生成ツール(面倒なので以下Jekyllみたいなの)と動的ウェブログ・システム(同じくWordPressみたいなの)のそれぞれの長所や短所はみなよく知っているようで、よりその人の状況にあったどちらかを選んだみたいな記事をよく見る。そういうの見る度にどうして両方使わないんだろうと思う。

静的なHTMLでのウェブサイトの運営は簡単で楽だしコストも掛からず、環境もあまり選ばない。けどMovable Typeでの破綻を引き合いに出すまでもなく、1000やそれ以上のHTMLを生成できる無理のないシステムはあるのかというと微妙な感じがする。で、規模に応じて動的なCMSと使い分ければ……となることが多いわけだけど、使い分けるのではなくJekyllみたいなのとWordPressみたいなのを組み合わせるのが良いのではないか。

テンプレート

分けちゃうとテンプレートの管理も分かれて面倒くさいとかそういうのはある。でもそもそも単一のテンプレートであってもシンプルにはいかず、複雑怪奇なテンプレート管理を強いられることになる。それもかなり辛い。

WordPressみたいなのでリクエストによってテンプレートごっそり変えていて、どこを直すとこの変な出力直せるの……みたいなのよく見る。Jekyllみたいなのでも_layoutから_include見て、これかと思って開いたら更に`include`だった……とかある。見通しが悪い分、まとまってる方がストレスたまる。

JekyllみたいなのとWordPressみたいなのを組み合わせる場合は、それぞれが受け持つコンテンツのタイプがはっきりと分かれる。CMSの併用により、テンプレートで扱うデータを事前に整理するような形になる。すると自然とテンプレートもそのデータに特化したものになるので、極力シンプルに抑えることができる。シンプルにする持続的な努力が可能で、破綻しにくいということでもある。

コンテンツ

既存のコンテンツをWordPressみたいなのに移動させようとすると大変。Jekyllみたいなのはそういう点ではHTMLを普通に置いておいても何の問題もないのでとても楽。新しいデザインに合わせたいとかでも、主要コンテンツ部分を切り出して適切なディレクトリに配置し、生成し直すだけで終わり。

でも未来のコンテンツにおいてはどうなるかというと、WordPressのようなさっと書けさっと公開できるシステムが逆転する。Octopressに移行してちょっと書いたけどもう更新されなくて久しいみたいなウェブサイトはそこら中に転がってるので、既にそれは証明されたようなものだと思う。Publishボタンとgit pushの差は想像以上に大きい。

頻繁な更新を行う部分はWordPressみたいなのに任せて、あまり更新しないけど必要な時は一括で処理しなければならないようなものはJekyllみたいなのに任せる。というように導入コストや自身の置かれた状況だけでなくコンテンツの状況とその未来も考慮してツールを組み合わせるべきではないかな、と。

もちろんWordPressみたいなのの代わりにTumblrはてなブログのようなデザインに制限が少ないサービスに委託してしまっても良い。ドメインが揃えられないとか突然死した時にどうしようもないとか削除された時に過去ログの救出が面倒くさそうなど、色々な点で問題もあるけど手軽さと安定性では大きく勝る。


このウェブサイトはHandlebars.jsを使ったHTML生成Gruntタスクと手書きHTMLとBlosxomというハイブリッドな構成になっている。

静的なHTMLはGruntタスク、半ば独立した形のDocumentsの文書は手書き、ウェブログはBlosxomと使い分けている。Blosxomのflavour(テンプレート)も同じGruntタスクでやってるので、共通部分の変更にはあんまり手間はかからない。実際に使っているGruntタスクはもっとここに特化させた感じになっていて、フィード読ませて記事一覧吐けるようにしたりしてる。

HTML生成Gruntタスクについては別の記事で書きたい気もする。


得意なことだけやらせるようにすると多くのCMSはその力を最大限に発揮してくれる。しかし、できないことはないけどさほど得意でないことをやらせようとすると途端にややこしくなり、結果得られるものがバッドノウハウだけみたいなことになる。ウェブログの記事のネタになるくらいが関の山で、あんまり幸せじゃない。

各CMSに任せることを簡単にできることだけに制限して、CMSの習熟などにかまけないようにするというのが隠された目的。例としてJekyllやWordPressを挙げたけど、Gruntタスクを書いてみたりSinatraでコンパクトなシステムを作ってみたりとかでそれらの代わりを作るとかも勉強になって良い。拡張可能で他人に使ってもらうことを意識したCMSを作るとなると血を吐く思いをするだろうけど、特化型のやることを絞ったものだったら簡単に作れる世の中だし、なによりやってて楽しいはず。