これまでの経緯
Hugoを使っていた頃、まだNetlify CMSくらいしか個人で小規模に安く使えるヘッドレスCMSの選択肢が無かった覚えがあります。(strapiとかmicroCMSとかも全然あったけど、まぁブログ用途レベルで使うかって言うと)
当時の自分のMastodon投稿をさかのぼった感じだと、CloudFrontの方がNetlifyに全部乗せするより配信が早いとか、当時のディレクトリ構成的にNetlify CMSへの移行がちょっとだるそうだとか、そういう判断で使わなかった様子でした。
そのしばらく後に、HugoからWordPressへ移行するにあたってSSG的な良さもどうにか拾えないかなぁと、静的サイト化するプラグイン(Simply Staticとか)を調べたりもしました。 ただ結局、WP環境をちゃんと維持するモチベーションもそこまで無いしプラグインはできるだけゼロに近づけたかったし(仕事でその頃WPで嫌なことがあった)、Dockerに押し込んで放置するのもアリだけどそれならWPじゃなくてよくねという考えになり、もっとシンプルにシンフリーサーバーで単にWPを動かすだけの形を取りました。
この辺りはWP自体超久々に触った時期で、嫌な目にあったからもうちょっとWP知識を仕入れておくかとか、レンタルサーバーを使ったことが無いし一回くらい触ってみるかとか、そんなモチベーションもありました。(シンフリーサーバーがまだ始まったばかりだったのもある)
要件と思いついた構成
ざっくりとした要件としては、投稿が楽で(PCとiPad miniから投稿できればOK)、下書きができて(スマホからとか)、運用が楽で(定期的なアップデートなどが少ない)、安く済み(今はシンフリーで無料だから数百円以内であってほしい)、十分にセキュアであること。
まずぱっと思いつくのは、CMSをローカルなどで立てて記事更新をしつつ、実際にデプロイされるのはSSG的にビルドされた静的サイト、という構成です。ただこれだと結局WordPressと同様にかなりロックインされてしまいますし、ローカルで立てるとなると家の外から投稿したいときに少々不便です。できなくはないのですが、スマホからVPNを繋いだりするひと手間が面倒に感じます。(Cf Tunnelとかを使えば楽にできそうではありますが)
本命はSSG+ヘッドレスCMSです。Hugoをやめたときにこういった構成も当然調べたのですが、当時はweb開発の勉強から始めなければならないということで選びませんでした。WordPressのようにテーマを適当に選んでポチポチカスタマイズして終わり、という方が嬉しかったのですが、この構成ではそれが難しいためです。
ただ今は大AI時代。このWPに移ったくらいの頃はAIもチャットでしか使ったことがありませんでしたが、この1年ほどで仕事でも私用でも、あれこれAIにコードを書かせるという経験をしました。今ならHugoのテーマ部分だとか、Astroなどのフロントエンド部分を全部AIに任せてしまって、出来合いのテーマを使う以外の選択肢も取れそうだなぁと。その結果このくらいならAIでいい感じにできるだろうなと思ったのが、今回この記事を書いているきっかけです。
gitベースなヘッドレスCMSを前提にすると
軽く調べた感じだとSveltia CMSがなかなか良さそうでした。GitベースのヘッドレスCMSは何を使おうがデータ自体は変わらないので、気に食わなければ別のものを使えばいいというのが、過去の移行で辛い思いをしてきた身としてはありがたいですね。 開発規模が小さめなのが少し気になりますが、メイン開発者が日本人のようなので、CJKの入力やスラグ周りといったCJK特有のトラブルが少なそうに見えます。今のところかなり活発に開発が進んでいるようなので、今後に期待しています。
さて、具体的な構成を考えていくと気になる点がいくつか出てきます。
- 認証とリポジトリをどこにするか
- 添付ファイルはどうするか
- プレビュー機能について
スマートフォンやタブレットからの更新も考えると、ローカルモード的な構成では満足度が低くなります。そうなると、デプロイ先にヘッドレスCMSがそのまま含まれるような形になります。この場合、認証や使用するリポジトリなどの設定ファイルも外から見える状態になるでしょう。それはちょっと嫌だなと思うのですが、意外とそうでもないのでしょうか。重要度次第という気もします。
添付ファイルについても構成方法が色々あるようです。Gitリポジトリにそのまま含めてしまう方法もあれば、公開設定のS3バケットを指定しておいてビルド後もそこをURL指定する方法もあるようです。後者の場合、バックアップとして管理すべき対象がGitリポジトリだけでなくオブジェクトストレージも含まれることになり、少々手間が増えます。かといってリポジトリに画像を全部含めると、どんどんリポジトリが重くなっていくのも気になります。
プレビューについては、ビルドを挟む形になるのか、もっとスマートな方法があるのか、この辺りはまだよく分かっていないところです。 あと最近はUnsplashなどのストックフォトをよく使っているので、エディタ機能からこの辺りの画像を添付できないと結構不便です。調べた感じ大抵のエディタ付きヘッドレスCMSは対応しているようで、なかなかすごいなと思いました。
