KEIS BLOGは株式会社ケイズ・ソフトウェアが運営しています。

KEIS BLOG

KEIS BLOG

なぜ既製品でなく、自分たちで CMS を作ったのか ― 3つの設計判断

このブログは、既製のブログサービスではなく、自分たちで作った CMS @nano-cms/core の上で動いています。世の中に CMS はいくらでもあるのに、なぜ作ったのか。便利機能を並べる話ではなく、「どこで、何を選んだか」という設計判断の話をします。エンジニアの方なら、同じ岐路に立ったときの参考になるかもしれません。

欲しかったのは「安心して運用できる」土台

ブログ運用で地味に効いてくるのは、派手な機能よりも足回りの安心感です。書きかけを保存しても本番に漏れない。間違えても前の状態に戻せる。公開する前に「実際どう見えるか」を確かめられる。複数人で回しても事故らない。公開してから反映までが速い ―― こうした性質を、後付けの工夫ではなく土台そのもので持ちたい、というのが出発点でした。これらを満たす既製品を組み合わせて運用でつぎはぎするより、核心の数点を自分たちで設計したほうが、長く使うほど効いてきます。

そこで置いた賭けが、大きく 3 つあります。

賭け その1 ― コンテンツを「Git の上」に置く

ひとつ目は、記事をデータベースの 1 行としてではなく、エンジニアが日々使っている Git の仕組みの上で管理する、という選択です。コンテンツをコードのように扱えると、版管理・差分・巻き戻し・並行編集の統合といった機能が、わざわざ作り込まなくても“標準装備”でついてきます。

編集は本番とは別の作業用の領域で行い、公開済みの版と混ざらないようにします。複数人が同じ資材に手を入れても、大半は自動でひとつにまとまります。「うっかり下書きが本番に出る」「誰かの修正を上書きしてしまう」といった、運用でいちばん怖い事故を、仕組みのレベルで起きにくくしているわけです。

図1: 記事をDBの1行として持つか、Gitで版管理されたコンテンツとして持つかの違い
図1: 記事を「DB の 1 行」として持つか、「Git で版管理されたコンテンツ」として持つかの違い

賭け その2 ― 公開は「静的に焼いて、エッジから配る」

ふたつ目は配信の方式です。アクセスのたびにページをその場で組み立てるのではなく、公開のタイミングで HTML を作り置きし、世界中に分散したエッジ(Cloudflare Workers)から配ります。読者には常に作り置きの軽いページが届くので表示が速く、配信側が混んでも落ちにくく、攻撃にも強い。公開ボタンを押してから実際に反映されるまでは、十数秒ほどです。

「速さ」と「安定」と「安全」を同時に取りにいくと、動的に組み立てる方式よりも、静的化+エッジ配信のほうが素直に効きました。なぜこの 3 つが同時に成り立つのか、その理由と実測値は なぜ速くて、落ちなくて、狙われにくいのか ― ケイズのCMSの静的配信 に、「動くプログラムではなくファイルとして届く」という届け方の仕組みは 記事は「プログラム」ではなく「ファイル」として届く にまとめています。

図2: 編集からエッジ配信までの流れ。プレビュー・承認・予約公開も同じ土台に乗る
図2: 編集からエッジ配信までの流れ ― プレビュー・承認・予約公開も同じ土台に乗る

賭け その3 ― 「汎用コア」と「自社固有」を分ける

みっつ目は、作り方そのものの設計です。CMS のうち、どんなサイトにも共通する普遍的な部分を汎用ライブラリ(コア)として切り出し、ケイズ固有の事情はその上に薄く乗せる構造にしました。コアは「自社のことを何も知らない」状態に保たれ、サイト側がコアに必要なものを渡して動かします。

こうしておくと、将来べつのサイトを作るときにも同じコアを使い回せますし、固有の都合でコアが汚れていくのを防げます。少し手間のかかる分け方ですが、ひとつの製品を長く育てるなら、ここを最初に決めておく価値は大きいと考えました。

この土台の上で動いていること
公開前にサイト全体を本番そっくりに確かめる サイト丸ごとプレビュー、書く人と承認する人を分ける 承認ワークフロー、指定日時の 予約公開 ―― これらはどれも、上の 3 つの土台(Git・静的配信・コア分離)の自然な延長として乗っています。土台を丁寧に置くと、その上の機能は無理なく足していけます。

既製品の 8 割でなんとなく回すより、自分たちが本当に欲しい 10 割を、土台から積む。手はかかりますが、毎日の運用がそのぶん静かになります。このブログ自体が、その土台の上で書かれ、確かめられ、配られています。ケイズのCMSが「公開した後」でどう違うのか、その全体像は 似ているようで、公開後がまるで違う ― ケイズのCMSの選びどころ にまとめています。

エンジニア募集中!

採用情報はこちら

CATEGORY

技術情報

思考

便利サービス

社内イベント

採用担当の戦い

その他

メンバー

LATEST ENTRY

2026.07.08

見慣れないIPアドレスの正体を調べる4つの方法

技術情報

2026.07.08

「providerを固定したのになぜ直らない?」Terraform初心者がハマる落とし穴

技術情報

2026.07.08

【KEISのメンバー #1】入社2年目・若手エンジニアに聞く、未経験からの1年と「続けられるエンジニア」

メンバー

2026.06.21

{% partial %} 文法リファレンス ― 名前・属性・型解決・スコープの全仕様

技術情報

2026.06.21

Liquid に自作タグを足す ― partial タグで見る作り方

技術情報

TAG