---
title: CMSを自作して得た教訓
description: "  Agentic codingの普及で、CMS自作がこれから普通になってくると思う。その一助になればと思って書いた。 CC0 ですので、ご自由にプロンプトにお使いください garden.ooo をつくるなかで、学んだこと： ページ本文やメタデータは全て単一のスキームに統一する カスタム投稿タイプだ"
date: 2026-04-27T11:30:18.526Z
updated: 2026-04-27T11:30:18.526Z
tags:
  - cc0
url: https://baku89.com/ja/how-to-vibe-code-cms
---

# CMSを自作して得た教訓

![](https://wp.baku89.com/wp-content/uploads/2026/04/www-and-garden-1775923377167.png)

Agentic codingの普及で、CMS自作がこれから普通になってくると思う。その一助になればと思って書いた。[CC0](/cc0)ですので、ご自由にプロンプトにお使いください

[garden.ooo](/garden)をつくるなかで、学んだこと：

1. **ページ本文やメタデータは全て単一のスキームに統一する**
   - カスタム投稿タイプだとかを作らない。日記、作品、CVといった固定ページなどをなるたけ包摂できる、汎用的なスキームを用意する

2. **タグやカテゴリをただのページとして扱う。分類する専用の概念として別立てしない**

   - 「ページAからBにリンクが貼られていること」を、「ページAはBというカテゴリに属する」と解釈する
   - カテゴリやタグは特殊なリンクの仕方として扱ってみる。本文リンクの代わりに`categories`や`tags`といったメタデータにページURLを入力できるようにする、とか

3. **プレーンテキストで表せる軽量マークアップ言語を単一のソース源とする**

   - Markdownとか。その際、かならずHTMLそのものを触れるようにしておく[1](#user-content-fn-silly-saas)
     - React/JSX圏ならMDX、Vue.js勢ならMDC
   - エディタまでを頑張って開発しなくても済むようになる。[Obsidian](/Obsidian)のvaultをそのままソースにするのが楽。Obsidianを編集につかえるから
   - あとはLLMとの相性もいい

4. **フォルダ整理をしない**
   - c.f. [階層性と線形性を信じない](/%E9%9A%8E%E5%B1%A4%E6%80%A7%E3%81%A8%E7%B7%9A%E5%BD%A2%E6%80%A7%E3%82%92%E4%BF%A1%E3%81%98%E3%81%AA%E3%81%84)

5. **Trailing slash（ページ末尾のスラッシュ）の有無を区別できるようにする**

   - `xxx.md` → `example.com/xxx`
   - `xxx/index.md` → `example.com/xxx/`
   - のようにURLをマッピングする。ディレクトリごとに git submodule を分けたいときなどに便利

## 関連

- [Digital Gardens](/list-of-digital-gardens)

## Footnotes

1. WWWへの理解が浅い経営者の方による反面教師的な放言→ [「HTMLを書かせるCMSは全然ユーザーファーストじゃない」](/%E3%80%8CHTML%E3%82%92%E6%9B%B8%E3%81%8B%E3%81%9B%E3%82%8BCMS%E3%81%AF%E5%85%A8%E7%84%B6%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%95%E3%82%A1%E3%83%BC%E3%82%B9%E3%83%88%E3%81%98%E3%82%83%E3%81%AA%E3%81%84%E3%80%8D) [↩](#user-content-fnref-silly-saas)
