公開面にPHPもDBも置かないCMSを作った。向くものと、向かないもの
WordPressの復旧を179件引き受けてきて、原因がいつも同じところにあると分かりました。そこで作ったCMSの中身と、向かない用途を書きます。

この記事の結論
- 公開サイトにPHPもデータベースも置かないCMSを作った
- 動機はWordPressの復旧を179件やって、原因が同じだったこと
- 向かない用途もある。そこも書く
- 公開サイトにPHPもデータベースも置かないCMSを作った
- 動機はWordPressの復旧を179件やって、原因が同じだったこと
- 向かない用途もある。そこも書く
最初に立場を書いておく。これは自分たちで作ったものの紹介になる。無料で配っているが、宣伝であることに変わりはない。
そのうえで、できないことを隠さずに書く。このサイトでずっと他社の発表を「何が書かれていて、何が書かれていないか」で読んできた以上、自分のものだけ都合よく書くわけにはいかない。
なぜ作ったのか
北海道でWebの仕事を14年やってきて、いちばん多く引き受けたのがWordPressの修理だった。
- エラーで表示されなくなったサイトの修理と復旧が179件
- 止まったサイトを復活させ、ウイルスを取り除く仕事が27件
- WordPressの引越しが33件
何度もやっていると、原因がいつも同じところにあると分かってくる。
管理画面も、本体も、プラグインも、訪問者に見せるページと同じサーバーの上で動いている。だからプラグインの更新が止まった瞬間に狙われる。
1件ずつ直しても、この構造が変わらない限り同じことがまた起きる。
この秋、それが目に見える形になった
10月だけで、このサイトでは不正アクセスの公表を何本も扱った。2,335万人、2,251万件、1,118万件。
規模は違っても、共通していたのは「公開されている側から、裏の仕組みに手が届いてしまう」ことだった。
やったこと
役割を分けた。編集は管理画面で行い、公開するのは書き出した静的HTMLだけにする。
| 一般的な動的CMS | この形 | |
|---|---|---|
| 訪問時の処理 | アクセスのたびにサーバーでページを組み立てる | 何も動かない。書き出し済みのファイルを返す |
| 公開サイトにあるもの | PHP、データベース、プラグイン | HTMLとCSSと画像だけ |
| 守る対象 | 公開サイト全体 | ログインの内側にある管理画面ひとつ |
公開ボタンを押したときに一度だけページを書き出す。訪問者が受け取るのは、その結果だけになる。
結果として変わること
- 狙われる面が小さい。訪問者のアクセスで動くプログラムが無い
- 速い。組み立てる処理が無いので、ファイルをそのまま返す
- 壊れにくい。管理画面を止めて作業している間も、公開中のページは表示され続ける
3つ目が地味に効く。直している最中にサイトが落ちない。
向かない用途
ここが本題になる。公開面でプログラムが動かないということは、裏返せば動かせないということだ。
| やりたいこと | この形だと |
|---|---|
| 会員登録・ログインが要るページ | 公開面では作れない |
| リアルタイムの在庫や予約状況の表示 | 公開した時点の内容で固定される |
| 訪問者が投稿する機能(コメント、口コミ) | 外部のサービスに頼ることになる |
| 問い合わせフォームの送信 | 別のサービスが要る。無料枠があるものもあるが、追加費用になりうる |
| 会員ごとに違う内容を出す | できない |
つまり更新する内容が決まっていて、訪問者は読むだけという使い方に向いている。店舗、士業、クリニック、工務店、会社案内。そのあたりが対象になる。
逆に会員制のサービスや、在庫が動く通販をやりたいなら、この形は選ばないほうがいい。
もう一つの制約
公開ボタンを押すまで反映されない。書いた瞬間に公開される仕組みではない。
確認してから出せるという意味では利点だが、急いで1行だけ直したいときに、ひと手間増えるのは事実になる。
いま実装されているもの
売り文句ではなく、管理画面で使える機能として挙げる。
- ブロックエディタ — 基本ブロック11種とデザイン済みセクション15種
- 業種別デザイン10種 — 選ぶと全ページ入りで始まる
- プレビュー — PC / タブレット / スマホの3幅。リンクも辿れる
- 3要素の認証 — メール+パスワード+認証アプリ。5回失敗で15分ロック
- 監査ログ — 誰がいつ何をしたかを記録
- リビジョン30世代 — 差分を見て復元できる
- 画像の実体検証 — 拡張子ではなく中身で判定し、再エンコードして保存
- 署名付きワンクリック更新 — 検証してから適用し、失敗したら自動で元に戻す
- 多言語 — 管理画面7言語、公開サイトの言語切り替え
- WordPressからの移行
AI検索への対応も入れた
このサイトでサイトマップとrobots.txtを見直したときにやった作業を、そのまま機能にしている。
- llms.txtの自動生成
- 構造化データ(JSON-LD) — 店舗・FAQ・営業時間・記事
- AIクローラーの許可 / 拒否の切り替え
- 公開前の見出しの階層・description・altのチェック
すべて静的ファイルとして書き出すので、外部サービスは要らない。
AIによる編集支援もあるが、既定はオフで、使うには自分のAPIキーが要る。送信する内容は送信前に画面で示す形にした。仕事で使うときの線引きで書いたことを、そのまま設計に入れている。
動く環境と、かかる費用
| 項目 | 内容 |
|---|---|
| PHP | 8.2以上(8.3推奨) |
| データベース | SQLite。DBサーバーは不要 |
| 公開先 | 同じサーバーの public_html か Cloudflare Pages |
| 設置 | zipを置いて /cms/install/ を開く |
| 価格 | 無料。商用利用可 |
| バージョン | 0.9.0 |
0.9.0であること
正直に書くと、まだ1.0ではない。動作確認はXserverとローカル環境で取っているが、あらゆるサーバーで試せているわけではない。
いま入れるなら新しく作るサイトか、止まっても困らないサイトから始めるのが現実的だと思う。
維持費について
ドメインとレンタルサーバーだけなら、月1,000〜1,500円程度が目安になる。ただし追加でかかる場合もある。
- 問い合わせフォームの送信にメール送信サービスを使う場合
- 有料の写真素材や撮影を依頼する場合
- 原稿づくりや初期設定の一部を人に頼む場合
- ドメインやサーバーの特典期間が終わった場合
運営の仕方も書いておく
無料で配っているものは、どこかで費用を回収しているはずだと思って読むのが正しい。
この場合は、ホームページ準備ガイド内のアフィリエイト広告(ドメイン・サーバーの紹介)で支えている。広告には「PR」と表示している。
それと、設置の代行は有料にしている。自分で設置できるなら要らない部分になる。
まとめ
- 公開サイトにPHPもデータベースも置かない。訪問者に届くのは書き出したHTMLだけ
- 動機は復旧を179件やって、原因が同じ構造にあると分かったこと
- 会員制・リアルタイム・訪問者の投稿には向かない
- フォームの送信には別のサービスが要る
- 公開ボタンを押すまで反映されない
- PHP 8.2以上とSQLite。DBサーバーは不要
- 無料・商用利用可。ただしバージョンは0.9.0
出典
- 白樺 SHIRAKABA CMS 公式サイト(機能、動作要件、設置方法、維持費の目安、よくある質問、ライセンスとバージョン。2026年10月18日に確認)
本記事は自社プロダクトの紹介であり、宣伝を含む。機能とバージョンは2026年10月18日時点のもの。維持費の目安は各社の公表価格に基づくもので、契約条件により変わる。本記事は法的な助言ではない。
新しい記事が出たら、ブラウザの通知でお知らせします。
メールアドレスの登録は要りません。いつでも止められます。
関連記事
RELATED
ログイン失敗を31秒で直した。攻撃がAIに任され始めている
侵入から身代金の要求までをAIが自律的に実行した事例が報じられました。人が関わったのは、標的の選定と最初の認証情報だけだ…
止めたのは翌日ではない。検知したその日の17時だった
カーセンサーが関連サービスを全停止しました。漏えいの発表ではなく、不審なアクセスを検知した段階での判断です。
「報告をいったん保留してほしい」。制作者が負う義務の話
Studioが専用ポータルを公開しました。フォーム利用者には、個人情報保護委員会への報告を保留するよう案内しています。保…