2021年1月、ryus.dev に Markdown 記事をブラウザから編集できる CMS を足してみた。結論から言うと、半年もせず捨てた。
やったこと
pages/cms/index.tsx— 記事一覧・編集 UIpages/api/cms/articles/— Markdown ファイルの CRUD APImodules/articles.ts— ファイル読み書きの共通処理
// pages/api/cms/articles/index.ts のイメージ
export default async function handler(req, res) {
if (req.method === 'GET') {
const articles = await listArticles();
return res.json(articles);
}
if (req.method === 'POST') {
await saveArticle(req.body.filename, req.body.content);
return res.status(201).json({ ok: true });
}
}
ローカル開発では動いた。Markdown を直接編集するより、フォームから触れるのは楽だった。
捨てた理由
2021年11月の Next.js 12 アップグレード時に CMS 関連コードをまとめて削除した。理由は3つ。
- 認証が雑だった — 本番公開するには OAuth か Basic 認証の整備が必要で、個人ブログにはオーバーキル
- Git で十分 — 結局 Markdown を git push する方が履歴も残る
- Pages Router の API Routes 維持コスト — App Router 移行を見据えると、CMS 専用 API は負債になりやすい
学び
個人ブログの CMS は「作れる」より「運用できるか」が勝負。Git + GitHub の PR フローに戻したのは正解だったと今も思う。