無料枠中心でCloudflare Workers CMSを運用する構成メモ 個人開発

無料枠中心でCloudflare Workers CMSを運用する構成メモ

個人開発

このサイトのCloudflare Workers、D1、GAS、Codex、静的アセットをどう役割分担しているかを、無料枠中心の個人開発構成として整理します。

無料枠中心でCMSを運用する構成図
Cloudflare Workers、D1、GAS、Codexを役割ごとに分けて、小さなCMSとして運用します。

無料ツールだけで副業サイトを作るという話は一般論になりやすいテーマです。そこでこの記事では、実際にこのサイトで使っている構成に絞ります。公開はCloudflare Workers、データ保存はD1、定期取得はGAS、記事改稿や実装補助はCodex、画像は public/articles/ 配下の静的アセットとして扱っています。

役割分担

役割使っているものこのサイトでの使い方
公開ページCloudflare WorkersD1から記事を取得し、HTML、RSS、sitemap、robotsを返す
データ保存Cloudflare D1posts、categories、tags、contact_messages、アクセス集計を保存
静的ファイルWorkers Assets記事図解やOGP画像を /assets/... で配信
定期処理Google Apps Script候補取得を管理画面向けに温存
開発補助Codex仕様整理、実装、テスト、README更新の補助

無料枠で気をつけること

無料枠は、最初の検証には向いています。ただし、上限や仕様は変わる可能性があるため、本文では具体的な数値を断定しません。このサイトでは、重い動画や大量画像を自前で抱え込まず、記事用の小さな図解だけを静的アセットとして配信しています。DBにも、記事本文と公開制御に必要な情報を中心に保存します。

固定費よりも復旧しやすさを見る

無料で動くことだけを重視すると、あとから復旧できない構成になりがちです。このリポジトリでは、DB変更は migrations/ に残し、公開条件は src/index.ts の関数で共通化し、運用メモはREADMEへ書いています。未来の自分が再開できることも、個人開発では重要な要件です。

採用しなかった考え方

すべてを静的HTMLとして生成する方法もあります。ただ、このサイトでは管理画面で記事を編集し、予約投稿やnoindex、review_statusを切り替えるため、リクエスト時にD1を読んでHTMLを返す構成にしています。逆に、画像の保存や大規模な分析ログまでD1に入れる構成は避けています。

公開前チェック

  • 環境変数とSecretsをコードへ直書きしていないか
  • 公開記事だけがRSSとsitemapへ出ているか
  • 画像URLが /assets/articles/... で200を返すか
  • 管理画面へのリンクを公開フッターへ置いていないか
  • AdSense審査中の対象外URLが404または除外になっているか

無料枠中心の構成は、費用を抑えるためだけではありません。小さく作り、公開条件をコードで制御し、必要になった部分だけ後から強くするための構成です。

参考資料