linnet

Hugoでサイトリニューアル

独立した時に作成したサイトをほぼそのまま使用していましたが、さすがに古いのでリニューアルしました。 Github ActionでHugoを動かしてHTMLを生成し、Webサーバに転送する実装となっています。

あわせてブログも古いMovableTypeを使用していたこともあり、いくつかの記事を移行しました。 情報としては古く意味のないものも多いですが、記録のためにMovableTypeのデータは残しています。

候補となったCMS(試した順)

Grav

https://getgrav.org/

まず、フラットファイルCMSとして知名度のあるGravを試しました。 CMSのデータ移行が面倒になることを避けたかったため、マークダウンで記述できるCMSを調べたところ、フラットファイルCMSを知り、採用事例もそれなりにありそうなのがGravでした。

管理画面がありますし、マークダウンファイルをアップロードするだけでも動作し、プラグインで機能拡張もできるため、CMSとしては必要十分な機能があります。 WordPressほどの自由度はありませんが、小規模な企業や店舗サイトなどであれば作成できるかと思います。やはりデータベースが不要というのも選定理由になりえます。

一通り作り終わった後に仕事が忙しくなり、年単位で放置していたところ、メンテナンス・アップデートの手間やPHPのサポート期間など、Grav自体の機能以外の面が気になり、候補から外しました。

VuePress

https://vuepress.vuejs.org/

JavaScriptで動かせると楽かなと思い試しました。 一通りテンプレートまで作成しましたが、他のCMSと比べると自由度が低く、細かいカスタマイズが出来ない印象でした。多くの人がイメージするブログを作成する機能に特化しているように感じます。ディレクトリ構成の自由度も低く、ある程度、実用的な仕様にカスタマイズすることを考えるとNuxt.jsで作った方が運用も含めて楽なようにも思えました。

リポジトリもそれほど活発ではないように見えますし、Vueのショーケース的な側面も強そうな印象ですので、候補から外しました。

Hugo

https://gohugo.io/

ポータビリティ重視で試しました。 GitHubにデータの保持とビルドが出来て、Hugoが動かなくなった時でもマークダウンファイルと生成したHTMLが残るため、採用しました。

管理画面はありませんが、GitHubが実質、管理画面になりますし、一度GitHubActionを書いてしまえば以降、手間は掛からないので運用も容易な印象です。 Golangは初めてでしたが、テンプレートで使用する程度であれば、そこまで複雑ではありませんでした。 代入ってこう書くんだとか、「with」ってなんだとかはありましたが(Perlの$_っぽい)。

まとめ

仕事ではWordPressを採用することが多いため、試すことのなかったCMSを触ることで勉強になりました。最近のライブラリやフレームワークは最初から完成度が高く、用意された機能を使う分には学習コストもかなり抑えられている印象でした。

特にテンプレートは、どのCMSでも大体やれることが似通っているため、変数の出力方法を変えるだけでも動く場合も多かったです。

今回試したCMSで仕事に使えるものとなるとGravかなとは思います。管理画面があり、ブログ作成に必要な機能は揃っています。 ヘッドレスで使えるようにすれば、新着情報だけで採用することも可能ですが、実装がややトリッキーになりますので、既存のヘッドレスCMSを採用したほうがよいように思います。

VuePressは機能が絞られている分、要求仕様を満たせない場合が多いように思いますし、Hugoは管理画面を別途用意する必要があります。

通常、仕事でCMSを採用する際は「クライアントが更新できる」ことが要望として挙げられている場合がほとんどです。わかりやすい管理画面や編集画面がどうしても必要になります。

結果的に案件での使用するとなるとプラグインが充実していて、いざとなったらカスタマイズすればいいWordPressが対応範囲が広いという印象です。