2026.05.02
ブログ運営の抜本的見直し
はじめに
1 週間前、このブログを Notion + Astro で立ち上げました(blog-launch-day のメモ)。Notion で記事を書いて Status を Published に変えて、ターミナルから 1 コマンド叩けばサイトに反映される。きれいな運用ができる、と思っていました。
その 2 日後には、自分で CMS(Content Management System: 記事管理画面)を書き始めていました。なぜそうなったのか、何を作って、いま何を感じているか、を書き留めておきます。
基礎となる知識
- CMS(コンテンツ管理システム): ブログ記事をブラウザから書いて保存できる管理画面
- Cloudflare Pages Functions: Cloudflare Pages 上でサーバ側の処理(REST API など)を動かせる仕組み
- D1: Cloudflare のサーバレス SQLite。ユーザー情報など、軽量なデータの置き場に使える
- GitHub Contents API: リポジトリのファイルを書き換える API。記事の Markdown を git に直接 commit できる
- ドッグフーディング: 自分が作った商品を、自分自身で使う運用方針。商品の良し悪しが体感できる
解説と使い方
立ち止まって考えた商品設計
最初は Notion で十分、と思っていました。
ただ Onbit の商品ライン(準備中)に「お知らせ更新代行」と「自分で投稿できる管理画面」の 2 つを置きたいと考えていて、後者を実現する方法として「お客さん側で Notion アカウントを作って使ってもらう」案も検討しました。
でもお客さんから見ると、「Notion のアカウントを取って、ブロックエディタを覚えて、Status を Published に変えて、ターミナルから…」は遠い世界の話です。自分のサイトの管理画面に入って、書いて、公開ボタンを押す——これが体験として自然なはず。
それを実現するには、自分で CMS を作るしかありませんでした。
道具立て
ありがたいことに、Cloudflare Pages の Functions と D1 と GitHub Contents API を組み合わせると、追加の月額コストなしで自前 CMS が作れます。構造はざっくりこう:
お客さんのサイト/admin/
↓ ログイン → 編集 → 公開ボタン
Cloudflare Pages Functions (REST API)
↓
D1 (ユーザー情報) / GitHub (記事の Markdown ファイル)
↓ git push
Cloudflare Pages 再ビルド → サイト反映 (約 1〜2 分)
記事は Markdown ファイルとして GitHub に commit される設計にしました。git 履歴がそのままバージョン管理になるし、Cloudflare の無料枠の範囲で完結します。
4 日間の作業
- 1 日目: 認証(ログイン / 30 日セッション cookie)とユーザー追加スクリプト
- 2 日目: 管理画面の UI 骨組み(ログイン画面 + ダッシュボード)
- 3 日目: 投稿フォーム + GitHub への commit + 編集 / 削除 / 取り下げ機能
- 4 日目: Markdown プレビュー(編集タブとプレビュータブの切替)+ 連打防止の小さな工夫
設計を詰めながら実装し、すぐにブラウザで動作確認、を繰り返しました。Claude Code(対話的にコードを書ける AI のツール)が右腕として動いてくれたので、私はおもに「どう作るか」と「どこで止めるか」の判断に集中できました。
Notion をたたむ
ここまでで自前 CMS は動くようになった。けれど、肝心の Onbit ブログ自体はまだ Notion から読み込まれていました。自分の商品を、自分でちゃんと使う——いわゆるドッグフーディング——をやらないと、商品としての完成度は見えてきません。
そこで、Notion 上の記事 4 本を Markdown ファイルとしてエクスポートし、サイトの記事ソースを Notion から Markdown ファイル群に切り替えました。
エクスポート作業は、Claude が MCP(Model Context Protocol: AI ツールが外部のサービスと話すための仕組み)を介して Notion から記事の中身を直接取ってきてくれたので、手作業のコピペは 1 行も発生していません。タイトルとタグと本文がそのまま Markdown として手元に降りてきました。
最後に、notion-astro-loader などの Notion 関連の依存ライブラリと、Notion を前提にしていたスクリプトを片付けて、Onbit ブログは「自前 CMS から発信する場」になりました。
やってみた結果
Notion で書くより、自前 CMS の方が「自分のサイトに書いている」感覚が強くなりました。
- ログイン画面が自分のサイトにある
- 編集画面のデザインが自分のサイトと揃っている
- 公開ボタンを押すと、本当に自分のサイトに記事が出る
Notion には Notion の良さがあります(モバイル対応、ブロックエディタ、共同編集)。けれど、ブログを「自分のもの」と感じたいときには、自前で持つこと自体に別の価値があると感じています。
そしてこれが、そのまま Onbit のお客さんに届ける商品になります。次は Waltz(最初のお客さんになる音楽教室)で実際に使ってもらう想定です。お客さんの体験はこうなります:
- 自分のサイト/admin/ にログイン
- 書いて、公開ボタンを押す
- 1〜2 分後、サイトに記事が出る
派手な機能ではありません。けれど「自分の手で出した」という感覚が、お客さんがサイトを長く育てていくうえで大事なんじゃないか、と思っています。
まとめ
この記事自体、自前 CMS の管理画面から書いています。タイトルを入れて、本文を書いて、公開ボタンを押す。それだけ。
長く運用していく中で見えてくる不便さは、これから少しずつ直していきます。
参考文献
- 関連記事:
blog-launch-day(Notion + Astro で立ち上げた最初の日) - 関連記事:
build-blog-with-notion-and-astro(初期構成の詳細) - 関連記事:
cms-ai-draft/cms-autosave/cms-tag-picker/cms-status-filter(自前 CMS の機能改善ログ)