Loading...
本文へスキップ
開発

GitベースCMSとは?「DBなし」でコンテンツを運用する現実的な方法

· siimplelab

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.md
  • content/docs/getting-started.md
  • data/products.json

つまり リポジトリがCMSのデータストア です。

2)変更は「コミット」で記録される

コンテンツを編集すると、CMSがGitにコミットを作成します。これで自動的に:

  • 誰が変えたか(作者)
  • いつ変えたか(時刻)
  • 何を変えたか(diff)
  • 戻す(revert)

「コンテンツ変更履歴」がGitによってほぼタダでついてきます。

3)公開は「ビルド」で行う

多くのGitベースCMSは 静的サイト(SSG)ハイブリッド(Next.js/Astroなど) と相性が良いです。

流れはだいたいこうです。

  1. CMSで編集 → Gitコミット/PR作成
  2. CI/CDが走る → サイトビルド
  3. 静的ファイルがデプロイ(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は「コンテンツ領域」だけに使い、サービスデータは目的に応じて分けます。


導入チェックリスト(見ないと後悔する)

  1. 誰が編集するか?
    非開発者編集者が多ければUI/権限/プレビューが重要です。
  2. レビューは必要か?
    PRベースの検収プロセスを望むならGitベースCMSの強みが最大化します。
  3. 更新頻度はどの程度か?
    1日に数十回以上編集するならビルド/デプロイコストを考慮してください。
  4. 検索/フィルタ/リストが中核か?
    ビルド時のインデックス化や外部検索連携の計画が必要です。
  5. コンテンツ規模が大きくなる可能性はあるか?
    ISR、キャッシュ戦略、ビルド最適化を前もって考えておきましょう。

まとめ:「DBなし運用」の答えはだいたいGitベースCMS

GitベースCMSは「DBなしでコンテンツを運用したい」という要望にかなりぴったりです。

  • 変更履歴/協業/検収:Gitが解決
  • デプロイ/パフォーマンス:静的ビルド+CDNが解決
  • 運用コスト:低い

ただし、サービスデータまで無理にGitに入れると失敗します。コンテンツに集中して使い、残りはKV/SQLite/DBで分けるのがいちばん安全です。