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さんの記事です。
- ビルドが高速
- 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
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すごい!!!