ブログをHexoで作り直してNetlifyにデプロイした

ようやく重い腰を上げてブログを作り直しました。
以前のブログはとりあえずWordPressでやっていたのですが、普段のエディタでMarkdownを書きたい…Git管理したい……となったので移行しました。

静的サイトジェネレータ

静的サイトジェネレータとしてはHexoを採用しました。
当初はGo言語製のHugoを使おうとしたのですが、投稿ごとにアセット用のディレクトリを切って管理できるPost Asset Folder機能など、ディレクトリ構成の柔軟性や機能の充実度を考えてHexoにしました。

WordPressからの移行にはwordpress-to-hugo-exporterを使用(当初はHugoの予定だったので…)。Markdownで書き出したあとの調整はエディタによる一括置換やGit管理で楽ちん。Hexoへの切り替えはfront-matterやヘルパーを少しいじっただけなので、ジェネレータ間の移行もしやすいのがいいですね。

デザイン・テーマ

TumblrテーマのApolloをHexoに移植したhexo-theme-apolloを、さらにフォークして使っています。
コードブロックの空白行が詰まって行番号とずれる問題を修正したりアーカイブページにページネーションをつけたりはてブボタンをつけたりしました。

デザイン自体がシンプルですし、実装も素朴なのでカスタマイズしやすかったことが決め手です。いろいろ変えたいところはあるので次はテーマを自作したいです。今回はDone is better than perfect精神でいっています…。

サーバー

サーバーは、静的サイトのホスティング先として最近話題のNetlifyを利用しています。

チーム機能を使うには有料ですがパーソナルであれば無料で、独自ドメイン利用・Let's EncryptによるSSLも無料。当然のようにHTTP/2対応で、アセットはCloudFrontのCDNで配信されます。
ビルドコマンドを指定すればあとはNetlifyが全部やってくれるので便利です。GitHub連携もあり、masterにマージしたら自動でデプロイされます。おまけにHeroku Review Appsのような、Pull Requestごとにプレビュー用の環境まで作ってくれます。すごい……。

まとめ

静的サイトジェネレータは様々な言語で実装されて、いまや450以上あるようです。機能やエコシステムも洗練されてきているような感覚があります。静的サイトの自動ビルド・デプロイはCIサービスを使う方法が主流でしたが、Netlifyは意外とありそうでなかったサービスですね。すごい。

ロリポップ!マネージドクラウドにもNetlify的な静的サイトをビルドしてくれるコンテナがあると便利そうな気がしました。よろしくお願いします🙏(勤務先です)