1000記事あるブログをMovableTypeからHugoへ乗り換えたのでやったことまとめ

本ブログをMovableTypeからHugoへついに乗り換えました。

調査期間やデザイン作業を含めるとトータルで1週間くらいかかったのでノウハウをここに記します。

MovableTypeと私

MTに始めて触れたのはMT3のときでした。インストールして触ってみたものの使いこなせず挫折。

その後MT4がリリースされたのを機に本格的に使い出し、それまでBloggerで書いていた記事をMTにインポートして本格的なMTライフがはじまりました。 当時MT4に関する情報がWeb上に全くなく、ぐぐってもMT3に関する情報ばかり出てきて苦労したのを覚えています。むやみに新技術に飛びつくと苦労するというのを痛感した出来事でした。

その後MT5,MTOSへと順調にアップグレードし、Apache+CGIだったのをPlack/PSGI化したり、プレビュー画面が遅かったので自作したりしながらブログを書き続けました。

しかしやはり再構築が遅いのに不満がありました。とくにデザイン変更すると再構築完了まで長時間待たされるが問題でした。

MTをMacで動かすようにしたら記事を書くのがおっくうになった

MTは個人で借りてるVPSサーバで動かしていたのですが、あるとき「手元のMacで動かせば再構築が速くなるし改良しやすいだろう」と考えて、MySQLデータをダンプして手元のMACにMT環境一式を移管しました。

しかしこのアイデアは完全に裏目に出ました。

  • ローカル環境だとパーマリンクの関係でプレビューが動かない
  • いちいちplackupしたりmysqlを起動するのが面倒 (デーモン化して常時起動すればよいかもしれないがそれはそれで面倒)
  • 再構築するのに結局plackサーバとブラウザが必要(CLIだけでは再構築できない)

MTOSはOSSなので自分で改良すればいいやと思って改良はしてみたのですが、ソースコードが想像以上に複雑で手をいれずらく、つらくなってきました。

(改良したMTのソースは公開してあります。 https://github.com/DQNEO/MTOS )

また再構築が少し速くなったとはいえ1000記事を再構築するのに8分もかかるありさまで、だんだんブログを書くのがおっくうになり、気がついたらせっせとQiitaに記事を投稿してる自分がいました。

これではいかん。 重い腰をあげてHugoに乗り換えることを決心しました。

なぜHugoなのか

きっかけはdeeetさんの記事です。

OctopressからHugoへ移行した

  • ビルドが高速
  • Go言語製
  • 後発なので新しそう

個人的にツボだったのが名前です。私はビクトル・ユーゴ(Victor Hugo. Les Miserableの原作者)の大ファンなのです。

HugoとVictor Hugoが関係あるかはわかりませんが…

どうやって移管したのか

まずHugoの挙動を把握するためにHugoをインストールしてサンプル記事を3つほど書いてみました。

その結果以下のことがわかりました。

  • 記事はMarkdownでなくHTMLで書いてもよい。
  • content/2015/06/foo.html という記事ファイルを作ると、http://example.com/2015/06/foo.html というPermalinkになる
  • カテゴリやタグ機能も使える(ただしMTのそれとは仕様が少し異なる)

これで、MTにある記事(全て生HTMLで書いてた)をPermalinkを維持しつつ移行できそうだという確信が得られました。

MTから記事データを抽出してHugo形式にコンバートする

ググっても既存のコンバートツールがなさそうだったので、エイヤっと自分でPerlでコンバートツールを書きました。 MTのDB構造を調査するのに時間がかかりましたがツール自体は2〜3時間ほどでできました。

コンバートツールをOSSで公開してるのでよかったらお使いください。

https://github.com/DQNEO/movabletype2hugo

下調べした内容はQiitaに書きました。

MovableTypeからHugoにブログ記事を移管するために下調べしたのでまとめ

テーマは既存のをforkして少し改良

テーマはいろいろ試してみて、viennaというのが一番シンプルできれいだったのでこれにしました。 スマホで閲覧してもいい感じです。

https://github.com/keichi/vienna

その後結局forkして自分用に改良しました。

https://github.com/DQNEO/vienna2

Hugoはシンプルか?

巷で言われてるほどめちゃくちゃシンプルかというと、そうではない気がします。 多少の学習コストはいりますし、公式ドキュメントが見づらい。

特にテーマをいじろうとすると一気に学習コストがあがり、Go言語のhtml/templateというライブラリを知る必要があります。

それでもMovableTypeよりは(感覚値ですが)20倍くらいシンプルなので学習コストは20分の1くらいで済みます。 インストールが楽なのもよいです。hugoバイナリを1個入れるだけで動きます。

基本の使い方だけなら2-3日使えば把握できるでしょう。

ビルド時間が爆速!!

さいて気になるビルド時間です。

MovableType

MTのビルド時間

8分24秒(=504秒)です。

Hugo

$ hugo -t mytheme
0 of 1 draft rendered
0 future content
964 pages created
0 paginator pages created
0 tags created
62 categories created
0 series created
in 1270 ms

なんと1秒。

400倍 速くなりました!!

Hugoすごい!!!

カテゴリ: