MiddlemanからHugoへ移行した

- by konitter

Middlemanが許されるのは小学生までらしいので、Golang製のジェネレータ「Hugo」に乗り換えた。OctopressからHugoへ移行したという記事を見たのがきっかけ。もともとMiddlemanのビルドの遅さとRuby(と各種モジュール)のバージョン管理がウザくて仕方なかったし、Frontend Weekly Vol.0っていう鬼ヤバいメールマガジンでも紹介されてたし(宣伝)っていうので。

Hugo

ビルド速い

まあ速い遅いって言っても全部で60数記事くらいしかないので、偉そうには言えないんだけど、Hugoでビルドしたら0.1秒もかからない。一瞬。コーヒーを一口飲む間もない。一度体感してしまうとRuby製はもとよりNodeJS製のものには戻れない感ある。それくらい速い。

$ time hugo
0 draft content
0 future content
66 pages created
0 tags created
0 categories created
in 85 ms
hugo  0.19s user 0.06s system 173% cpu 0.143 total

インストール

Goの環境があるならgo getすればいいし、無くてもMacならbrew install hugoでOK。Winならここからバイナリをダウンロードして適当なディレクトリにファイルを置いて環境変数のPATHを通すだけ。

$ go get -v github.com/spf13/hugo

公式のドキュメントが割と充実してる。機能の使う使わない関係なくまずは頭からざっと目を通すとよさげ。とはいえ、細かいところでどうしたらいいかわかんないところは出てくるので、デザインテーマも合わせて見るとよい。以下でgit cloneして実際にテーマを当てて動かしてみるとわかるはず。

$ git clone --recursive https://github.com/spf13/hugoThemes themes

移行方法

Middlemanでは記事をマークダウンで書いていたので、基本的にそのままファイルを持ってくれば動く。2年前にWordPressからMiddlemanへ移行したときの記事でも書いたけど、一度記事をマークダウン化しておけばジェネレータの乗り換えも簡単に済ませられる。

layouts配下に置くテンプレートもファイルやディレクトリ構成などは決まりがあるのでそこを把握する必要があるが、これもちゃんとドキュメントに書いてあるので読めばよい。テンプレートの記法もSlim, Haml, Erb, Jade, Mustache, Handlebarsなどといったテンプレートエンジンを触った経験があればすぐに理解できるはずだ。

ビルドとデプロイを自動化

hugoでビルドしてpublicディレクトリ内のファイルをGitHubにpushしてもいいんだけど、今回werckerというサービスを使ってビルドとデプロイを自動化するようにした。その場合の方法も公式のドキュメントに書いてある。

ソースファイルをGitHubのmasterにpushしたらwerckerがそれを検知してhugoでビルドし、ファイルをgh-pagesブランチにデプロイしてくれる。超楽。

まとめ

歴史のあるジェネレータに比べると機能面や拡張性でいえばまだまだ。テンプレートもHTMLなものに加えてHamlっぽく書けるAmberというのも使える。が、それほど旨味はない。ロードマップを見る限りこれからに期待というところではあるが、シンプルなブログや静的サイト程度であれば今のままでも十分。今さらMiddlemanやJekyllとかにするくらいならHugoオススメです。