GitベースCMSとは?「DBなし」でコンテンツを運用する現実的な方法
GitベースCMSとは?「DBなし」でコンテンツを運用する現実的な方法
ウェブサイトを作っていると、いつかこんな悩みが出てきます。
- 「ブログ/ドキュメント/ランディングをよく更新したいが、DBまで運用したくない。」
- 「誰が何をいつ変えたか追跡したい。」
- 「レビュー後に公開するワークフローが欲しい。」
そんなときの答えのひとつが GitベースCMS(Git-based CMS) です。一言でいうと:
コンテンツをDBの代わりに「ファイル(Markdown/JSON/YAML)」で保存し、変更はGitコミット(またはPR)で残すCMS です。
GitベースCMSの核心概念
1)コンテンツは「ファイル」
従来のCMS(WordPressなど)はコンテンツをDBに格納します。GitベースCMSではだいたいこういう形で保存します。
content/posts/hello-world.mdcontent/docs/getting-started.mddata/products.json
つまり リポジトリがCMSのデータストア です。
2)変更は「コミット」で記録される
コンテンツを編集すると、CMSがGitにコミットを作成します。これで自動的に:
- 誰が変えたか(作者)
- いつ変えたか(時刻)
- 何を変えたか(diff)
- 戻す(revert)
「コンテンツ変更履歴」がGitによってほぼタダでついてきます。
3)公開は「ビルド」で行う
多くのGitベースCMSは 静的サイト(SSG) や ハイブリッド(Next.js/Astroなど) と相性が良いです。
流れはだいたいこうです。
- CMSで編集 → Gitコミット/PR作成
- CI/CDが走る → サイトビルド
- 静的ファイルがデプロイ(Vercel/Netlify/Cloudflare Pagesなど)
なぜGitベースCMSが良いか
運用コストが低い(DB/サーバー管理の負担減)
- DBのバックアップ/マイグレーション/セキュリティパッチといった運用が大きく減ります。
- 「データ」は結局ファイルなので、最悪でもGitリポジトリがあれば復旧できます。
協業・レビュープロセスが自然
PRベースで運用すれば、コンテンツもコードのようにレビューできます。
- 下書き → PR作成
- レビュー(校正/ファクトチェック)→ 承認
- マージ後に自動デプロイ
コンテンツチームがいる組織ほど、この構造が効きます。
パフォーマンスが良い
静的サイトは基本的に速いです。
- キャッシュ/CDNと相性が良い
- サーバーコストが抑えられる
欠点もはっきりしている(ここで失敗する人が多い)
1)「書き込み」が多いサービスには向かない
コメント、いいね、注文、カートのように ユーザーが頻繁にデータを書くサービス はGitベースCMSでは厳しいです。
- コミットが爆発する
- 同時編集・競合で衝突が増える
- ビルドが頻繁だとデプロイコスト/時間が膨らむ
2)複雑な検索/フィルタ/リレーショナルデータは難しい
「タグ別記事一覧」「人気順」「リレーショナル結合」はDBの得意分野です。
GitベースCMSでも可能だが、だいたいこういう迂回をします。
- ビルド時にインデックスJSONを生成
- タグ別リストを事前生成
- Algoliaなどの検索エンジン連携
つまり パフォーマンスは良くなるが、設計/実装の難易度は上がることがある ということです。
3)コンテンツ規模が大きいとビルド時間が伸びる
記事が数千〜数万になるとビルド/デプロイ時間が無視できません。ISRなどのハイブリッド戦略が必要になります。
どんなサイトに最も合うか
GitベースCMSが特に合うのは次のようなタイプです。
- 会社紹介/ランディング(マーケティングサイト)
- ブログ/ニュースルーム
- 製品・サービスドキュメント
- ポートフォリオ/事例(ケーススタディ)
- 静的カタログ(価格表/メニュー/コース案内)
逆に、以下は「CMSだけGit」にして他は別ストアを使うハイブリッドの方がよいです。
- 会員/ログイン/権限
- コメント/レビュー/掲示板
- 決済/注文/在庫
代表的なGitベースCMSの選択肢(カテゴリで理解する)
A)「サイトに /admin を付ける」形
- 静的サイトにCMS画面を付け、編集するとリポジトリにコミットする方式。
- メリット:構成がシンプル、SSGと相性が良い。
- デメリット:編集UXはプロジェクトごとに違い、設定によって制限がある場合あり。
B)「フレームワークに統合される」形
- Next.js/AstroなどにCMS機能を統合。
- メリット:開発者体験が良く、カスタマイズしやすい。
- デメリット:初期セットアップはAより重い場合あり。
C)「商用サービス」
- 非開発者の編集体験がよりスムーズなことが多い。
- 協業機能/権限/プレビューなどを提供。
- デメリット:コスト、ベンダーロックインの可能性。
実戦アーキテクチャ例(おすすめの形)
「コンテンツはGit、動的データは別」
現実的な運用はこの組み合わせです。
- 記事/ドキュメント/ページ:GitベースCMS(ファイル+コミット)
- いいね/閲覧数/簡単な設定:KVなどのサーバーレスストレージ
- 会員/決済/トランザクション:SQLiteやPostgresなどのDB
つまり GitベースCMSは「コンテンツ領域」だけに使い、サービスデータは目的に応じて分けます。
導入チェックリスト(見ないと後悔する)
- 誰が編集するか?
非開発者編集者が多ければUI/権限/プレビューが重要です。 - レビューは必要か?
PRベースの検収プロセスを望むならGitベースCMSの強みが最大化します。 - 更新頻度はどの程度か?
1日に数十回以上編集するならビルド/デプロイコストを考慮してください。 - 検索/フィルタ/リストが中核か?
ビルド時のインデックス化や外部検索連携の計画が必要です。 - コンテンツ規模が大きくなる可能性はあるか?
ISR、キャッシュ戦略、ビルド最適化を前もって考えておきましょう。
まとめ:「DBなし運用」の答えはだいたいGitベースCMS
GitベースCMSは「DBなしでコンテンツを運用したい」という要望にかなりぴったりです。
- 変更履歴/協業/検収:Gitが解決
- デプロイ/パフォーマンス:静的ビルド+CDNが解決
- 運用コスト:低い
ただし、サービスデータまで無理にGitに入れると失敗します。コンテンツに集中して使い、残りはKV/SQLite/DBで分けるのがいちばん安全です。