個人開発 

2025-05-06

【手順書】

1. API層の追加(Cloudflare Workers用API)

目的:ブログ・動画のCRUD(作成・取得・更新・削除)APIを用意し、D1/R2と連携

追加場所例

  • app/api/blog/ … ブログ用APIエンドポイント
  • app/api/works/ … 動画用APIエンドポイント

やること

  • Cloudflare WorkersでAPIを構築(TypeScript/JavaScript)
  • D1(ブログ・動画メタ情報の保存)、R2(動画ファイルの保存)と連携
  • API仕様:GET/POST/PUT/DELETE

2. 管理画面(CMS UI)の追加

目的:クライアントがノーコードでブログ・動画を管理できるUI

追加場所例

  • app/admin/ … 管理画面ページ(例:app/admin/blog.tsx, app/admin/works.tsx)

やること

  • UI部品はcomponents/ui/やAtomic Designの粒度で再利用
  • フォーム(タイトル、本文、動画アップロード等)はcomponents/ui/form.tsxやinput.tsxなどを活用
  • API(上記で作成)と連携し、CRUD操作を実装
  • 必要に応じて認証(簡易的なパスワード認証やJWT等)

3. 動画アップロード機能の実装

目的:動画ファイルをR2へアップロードし、URLをD1に保存

やること

  • 管理画面の動画投稿フォームに「ファイルアップロード」UIを追加
  • R2へのアップロードはPresigned URLやAPI経由で実装
  • アップロード後、動画のURL・タイトル・説明などをD1に保存

4. ブログ・動画の表示側修正

目的:API経由で取得したデータをapp/blog/やapp/works/で表示

やること

  • 既存のapp/blog/page.tsxやapp/works/page.tsxでAPIからデータを取得するよう修正
  • サーバーコンポーネント/クライアントコンポーネントの使い分け
  • 動画はR2のURLを使って埋め込み再生

5. ストレージ・DBの設定(Cloudflare側)

目的:D1(DB)・R2(ストレージ)のセットアップ

やること

  • Cloudflare管理画面でD1インスタンス作成(テーブル設計:ブログ、動画メタ情報)
  • R2バケット作成(動画ファイル保存用)
  • APIからD1/R2へアクセスできるよう認証情報を設定

6. セキュリティ・認証

目的:管理画面へのアクセス制限

やること

  • シンプルなパスワード認証やJWT認証をAPI/管理画面に実装
  • 必要に応じて.envやCloudflare Secretsで認証情報管理

【まとめ:修正・追加箇所一覧】

| 追加/修正内容 | 追加・修正場所例 | 目的・ポイント |

|----------------------|-------------------------|--------------------------------------|

| APIエンドポイント | app/api/blog/, works/ | WorkersでD1/R2連携APIを実装 |

| 管理画面 | app/admin/ | クライアント用CMS UI |

| 動画アップロードUI | components/ui/ | R2連携のファイルアップロード |

| 表示側のデータ取得 | app/blog/, app/works/ | API経由でデータ取得・表示 |

| Cloudflare設定 | D1, R2, Secrets | ストレージ・DB・認証のセットアップ |

| 認証 | app/admin/, api/ | 管理画面・APIのアクセス制限 |


補足

  • 既存のAtomic Design構成・UI部品は再利用推奨
  • API/DB/ストレージの設計は、今後の拡張(カテゴリ、タグ、会員制など)も見据えて柔軟に
  • Cloudflare Workersのローカル開発にはwranglerが便利
ブログ一覧に戻る