メインコンテンツへ
Onbit

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 の機能改善ログ)

let's talk

気軽に、お話を聞かせてください

30 分の無料相談です。教室・宿・治療院・小さな店、どんな業種でもまずは聞かせてください。「まだぼんやりしていて」も大丈夫。合わなければ、そっと離れていただいて構いません。