Architecture & Technology

このブログについて

Cloudflare のサーバーレスプラットフォーム上に構築された、AI アシスト付きテクニカルブログの技術構成を紹介します。

Scroll
01

アーキテクチャ概要

System Architecture — Cloudflare SE Blog PlatformPUBLIC — READ ONLY + ACCESS REQUESTAUTHENTICATED — INVITED ENGINEERS閲覧ユーザー記事閲覧キーワード検索AI チャット Q&A投稿者申請者/apply から自己申請導入をリードしたエンジニア申請承認 or Cloudflare 招待Access 認証済みSE / Admin記事の投稿・管理テンプレート / AI ドラフトプロフィール管理管理ダッシュボードWAFOWASP Top 10DDoS 防御Bot ManagementAPI ShieldTurnstile全トラフィック適用Public ルート(認証不要)/   /posts/*   /about   /search/api/v1/chat   /api/health/apply(投稿者申請フォーム)閲覧・検索・Q&A・申請Cloudflare AccessZero Trust 認証IdP 連携 (Google)JWT 検証申請承認制アクセス制御保護対象パス:/portal/* (投稿・編集・プロフィール)/admin/* (管理・申請承認)未招待 → アクセス拒否承認時 API でメール追加Cloudflare PagesRemix (SSR / UI)Hono (API Layer)streamSSEMiddlewareCORS / Auth / LoggerTailwind CSS + TypographyPublic + Protected ルート統合D1 (SQLite)記事 / ユーザー / 申請テンプレート / カテゴリプロフィール / 監査ログDrizzle ORMR2 (Storage)画像アップロードメディア管理AI GatewayWorkers AILlama 3.3 70Bドラフト / Chat Q&AGuardrails / LogKVセッション / キャッシュEmail Workersend_email binding承認通知メール送信noreply@cf-se-blog-jp.devEmail Routing宛先検証・配信Vectorize関連記事 / RAGLEGEND閲覧ユーザー(認証不要・読み取り専用)投稿者申請者(/apply → Email 検証)招待エンジニア(CF Access 認証・投稿可能)内部サービス間通信

全コンポーネントが Cloudflare のエッジ上で動作し、サーバーレスで運用されています。

クリックで拡大表示

02

技術スタック

Cloudflare Pages

Remix アプリケーションのホスティング。SSR(サーバーサイドレンダリング)により、SEO に強く高速な初期表示を実現。

HostingSSREdge

D1 (SQLite)

記事、ユーザー、テンプレート、カテゴリなど全データを管理するエッジデータベース。Drizzle ORM でタイプセーフにアクセス。

DatabaseSQLEdge

R2 (Object Storage)

記事に挿入する画像・スクリーンショットを保存。S3 互換 API でアップロード・配信を処理。

StorageMediaS3互換

Workers AI

Google Gemma 4 26B A4B モデルを使用し、テンプレートベースの記事ドラフトを AI が自動生成。Hono の streamSSE でチャット応答をリアルタイム配信。

LLMGemma 4MoE

Vectorize

記事の埋め込みベクトルを保存し、コンテンツの類似度に基づく関連記事の推薦を実現。

Vector DBEmbedding検索

Cloudflare Access

Zero Trust 認証でポータルを保護。IdP(Google 等)連携による SSO と JWT ベースのセッション管理。

Zero TrustSSOJWT

WAF + Bot Management

カスタムドメインに適用された WAF が OWASP Top 10(SQLi / XSS 等)を防御。Bot Management が API エンドポイントへの自動化攻撃を検知・軽減。ゼロコードでエッジ保護。

WAFBot対策API保護

API Shield

OpenAPI 3.0 スキーマを登録し、全 API エンドポイントのメソッド・パス・リクエストボディをエッジで検証。スキーマに合致しないリクエストを自動ブロック。

Schema ValidationOpenAPI 3.0API保護

Turnstile

チャット Q&A に invisible モードの Turnstile を統合済み・稼働中。ボットによる自動投稿を Workers 到達前に検知・ブロックし、UX を損なわずに保護。

CAPTCHABot対策Invisible

AI Gateway

Workers AI 呼び出しを AI Gateway 経由でルーティング済み・稼働中。ログ・分析・レート制限・ガードレールを一元管理。

GuardrailsLoggingRate Limit

KV (Key-Value)

セッション管理とページキャッシュに使用。エッジ上での低レイテンシなデータアクセスを実現。

SessionCache

Hono

Cloudflare Workers に最適化された超軽量 API フレームワーク。型安全なバインディング、streamSSE による AI ストリーミング、共通ミドルウェア(認証・CORS・ロガー)を提供。

APIMiddlewareSSETypeSafe

Remix v2

フルスタック Web フレームワーク。Loader/Action パターンによるデータフェッチと、ネストルーティングで高度な画面構成を実現。API ルートは Hono に委譲。

FrameworkReactSSR

Email Workers + Email Routing

専用 Email Worker (send_email バインディング) で承認通知メールを送信。Email Routing API で宛先アドレスの登録・検証・削除を自動管理。

Email通知Verification

Tailwind CSS

ユーティリティファーストな CSS フレームワーク。Typography プラグインにより、Markdown コンテンツも美しく表示。

CSSTypographyUI
03

記事作成フロー

1

テンプレート選択

6種類のテンプレートから選択

2

フォーム入力

メモ書きレベルでOK

3

AI ドラフト生成

Gemma 4 26B が記事化

4

編集・画像追加

Markdown エディタで調整

5

AI アシスト修正

追加エッセンスで改善

6

公開

ワンクリックで公開

04

AI ドラフト生成のしくみ

入力

VPNが遅い、よく切れる
リモート増えて同時接続きつい
IT部がVPN対応で疲弊してる

ラフなメモ書き・箇条書きでの入力

AI 出力

リモートワークの全社導入に伴い VPN の同時接続数が急増し、業務のピーク時間帯にはライセンス上限に達して接続できない社員が続出するようになりました。IT部門は日々の VPN トラブル対応に追われ、本来注力すべきインフラ改善に手が回らない状況でした...

行間を読み、文脈を補完した企業事例スタイルの文章

プロンプトエンジニアリングの特徴

行間を読む文章構成 — 箇条書きの裏にある判断理由を推測し肉付け
事実の完全保持 — 入力された数値・固有名詞は絶対に省略しない
品質ガードレール — 多言語混入禁止、反復表現禁止、重複禁止
セクション末尾の考察 — 背景の総括、改善点、今後の課題を自動追加
05

AI 修正アシスト

AI が生成した下書きを読んで気づいた補足情報や修正指示を、手動で書き直さずに AI で自然に本文に組み込む機能です。 修正案は HTML プレビューと Markdown ソースのタブ切替で確認し、納得できたら適用します。

追加エッセンス入力

編集画面の「AI アシスト修正」パネルで、補足したい内容・修正指示・新しいアイデアを自由記述。 例:「CASB 導入の記述を追加」「接続図の Mermaid 図を入れて」など。

チェックリスト型プロンプト

エッセンスの各項目を全て漏れなく本文に反映するよう AI に指示。 Mermaid 図の指示があれば正しい構文で自動生成。日本語ノードの引用符ルールも明記。

HTML プレビュー + Mermaid

修正案を HTML プレビュー(Mermaid 図レンダリング・Markdown 描画)と Markdown ソースのタブ切替で確認。構文エラー時はソース表示+修正案内のフォールバック付き。

1

エッセンス入力

補足・修正指示を記入

2

AI 修正生成

チェックリスト型で全反映

3

プレビュー確認

HTML / Markdown タブ切替

4

適用 or 破棄

ワンクリックで本文反映

実装上の工夫

useFetcher — Remix の非同期データ取得で、ページ遷移なしに修正案を取得
max_tokens: 8192 — 長い記事でも出力が途中切れしないようトークン上限を拡大
mermaid.js 動的ロード — AI プレビューに Mermaid 図が含まれる場合のみ CDN からロードして描画
mermaid.parse() 事前検証 — 構文エラー時はクラッシュせずソース表示 + 修正案内を表示
06

テンプレート一覧

Zero Trust

Zero Trust 導入ガイド

Access / Gateway / Tunnel の導入事例を構造化して記述

Workers

Workers / Pages 開発記

サーバーレスアプリケーションの設計・実装事例

Performance

パフォーマンス最適化

CDN / Cache / Argo 等によるパフォーマンス改善事例

Security

セキュリティ対策

WAF / Bot Management / DDoS 防御の導入・運用事例

Network

ネットワーク構成

Magic Transit / WAN / Spectrum 等のネットワーク設計事例

General

Tips & Tricks

短めの実用的な Cloudflare 活用テクニック

07

JSON インポート — 他生成 AI との連携

Gemini、ChatGPT、Claude などの外部 AI ツールで作成したフィールド入力データを、テンプレートフォームに JSON インポートして記事を生成できます。 API キー不要でブラウザ内だけで完結するワークフローです。

1

フィールド定義をコピー

テンプレートフォームからワンクリック

2

AI ツールに貼り付け

エッセンスと一緒に送信

3

JSON をインポート

AI の出力を貼り付け

4

AI で下書き生成

フィールド自動入力 → 記事化

フィールド定義コピー

テンプレートフォームの「AI ツール連携 / JSON インポート」パネルで、テンプレートのフィールド構造(ID・ラベル・型・必須/任意)を JSON 形式でクリップボードにコピー。そのまま AI に貼り付けるだけ。

外部 AI で入力データ生成

Gemini / ChatGPT / Claude にフィールド定義と書きたい内容のエッセンスを送信。 AI がフィールド構造に合わせた JSON データを出力。プロンプト例もパネルに表示。

JSON インポート & 記事生成

AI が出力した JSON をインポートするとフォームが自動入力。 内容を確認・微調整後、Workers AI(Gemma 4 26B A4B)が Markdown 記事に変換。

上級者向け: Template API

Authorization: Bearer cfbk_* ヘッダー付きでGET /api/v1/ai-guide(全テンプレート一括取得)、POST /api/v1/templates/:id/test-generate(AI テスト記事生成)、POST /api/v1/templates/quick-generate(トピック指定で自動生成) などの API エンドポイントも利用可能。Windsurf / Cascade などの AI コーディングツールからの直接呼び出しにも対応しています。

08

投稿者申請 & メール通知フロー

外部エンジニアが投稿者として参加するには、公開申請フォーム(/apply)から申請を送信します。 Cloudflare Email Routing と専用 Email Worker を組み合わせた通知メールの仕組みが組み込まれています。

1

申請フォーム送信

/apply からメール・名前・所属を入力

2

メールアドレス検証

Email Routing API で宛先登録 → CF が検証メール送信

3

ユーザーが検証

メール内リンクをクリックして検証完了

4

管理者が承認

Access ポリシーにメール追加 + ユーザー作成

5

通知メール送信

Email Worker 経由で承認完了メールを送信

Email Routing API

申請時に POST /email/routing/addresses で 宛先アドレスを自動登録。Cloudflare が検証メールを送信し、ユーザーがリンクをクリックして検証完了。

Email Worker

Pages は send_email バインディング非対応のため、 専用 Worker(cf-se-blog-email-worker)を HTTP fetch で呼び出してメール送信。

ユーザー削除時の同期

ユーザー削除時に Access ポリシーからのメール削除と Email Routing 宛先アドレスの削除を API 経由で自動実行し、外部サービスとの整合性を維持。

09

Hono API アーキテクチャ

本ブログの API レイヤーは、Cloudflare Workers に最適化された超軽量フレームワークHonoで構築されています。Remix の SSR/UI 層と Hono の API 層を組み合わせることで、 それぞれのフレームワークの強みを最大限に活かしたハイブリッド構成を実現しています。

型安全なバインディング

c.env.DBc.env.AI など 全 Cloudflare サービスに型付きでアクセス。開発時にミスを防止。

streamSSE

AI チャットの応答を Hono の streamSSE ヘルパーで リアルタイム配信。手動の ReadableStream 構築が不要に。

共通ミドルウェア

認証・認可・CORS・ロガーを共通ミドルウェアとして定義。 ルートごとに宣言的に適用でき、コードの重複を排除。

超軽量・高速

依存ゼロ、バンドルサイズ極小。Cloudflare Workers の起動時間を最小化し、 エッジでのレスポンス速度を最大化。

API ルート構成

POST /api/v1/chatAI チャット Q&A(SSE ストリーミング)
POST /api/v1/ai/*タグ提案・文章改善・トレンドレポート
POST /api/upload-image画像アップロード(R2)
GET /api/healthヘルスチェック
10

データモデル

usersid, email, display_namerole, avatar_url, bionickname, furiganacompany, job_role, expertiseprofile_commentapproved_post_countaccess_requestsid, email, display_namecompany, reasonstatus: pending | approved| rejectedpostsid, title, slug, contentexcerpt, cover_image_urlauthor_id → userscategory_id → categoriesstatus: draft | publishedtags_json, reading_timepublished_at, view_countcategoriesid, name, slugdescription, sort_ordertemplatesid, name, descriptioninput_fields_jsonai_prompt_templatedifficulty, category_idai_draft_requestsuser_id, template_id, post_idmodel_used, latency_ms, statusCloudflare Email Routing (外部)宛先アドレスの登録・検証・削除を API 経由で管理Email Worker (send_email) で通知メール送信
11

セキュリティ & インフラ

認証・認可

  • Cloudflare Access による Zero Trust 認証
  • IdP 連携(Google Workspace 等)
  • JWT ベースのセッション管理(KV 保存)
  • ロールベースアクセス制御(admin / se / ae / user)

WAF + Bot Management

  • カスタムドメインに WAF を適用
  • OWASP Top 10 防御(SQLi / XSS 等)
  • Bot Management で自動化攻撃を検知・軽減
  • API Shield — OpenAPI スキーマで全エンドポイントを検証
  • Turnstile — チャット Bot 保護(invisible モード)
  • AI Gateway — AI 呼び出しのガードレール・ログ・分析

エッジコンピューティング

  • 全コンポーネントが Cloudflare エッジで動作
  • オリジンサーバー不要のフルサーバーレス
  • グローバル CDN による低レイテンシ配信
  • 自動スケーリング・ゼロコールドスタート

投稿者申請 & メール通知

  • 公開申請フォーム(/apply)で自己申請
  • Email Routing API で宛先アドレス自動登録・検証
  • 専用 Email Worker で承認通知メール送信
  • ユーザー削除時に Access + Email Routing を自動クリーンアップ

運用機能

  • RSS フィード自動生成
  • SEO 最適化(OGP / Twitter Card)
  • 閲覧数カウント
  • 監査ログ(Audit Log)
  • ユーザープロフィール管理(所属・専門分野等)

開発体験

  • TypeScript + Drizzle ORM でタイプセーフ
  • Hono で API を型安全に構築
  • D1 マイグレーションによるスキーマ管理
  • Wrangler CLI でローカル開発・デプロイ
  • Vite ベースの高速 HMR
12

AI チャットボット — 実装・改善・チューニング

各記事ページにフローティングチャットウィジェットを設置。読者が記事内容や Cloudflare 全般について質問でき、 AI がリアルタイムでストリーミング回答します。セキュリティ・モデレーション・UX を多層的に設計しています。

アーキテクチャ

  • Hono streamSSE による SSE ストリーミング
  • Gemma 4 26B A4B(回答生成)
  • Llama Guard 3 8B(コンテンツモデレーション)
  • RAG: Vectorize で記事コンテキスト + 関連記事を自動取得
  • 会話履歴 10 件を保持してコンテキスト継続
  • D1 に質問・回答を永続化(24 時間 TTL で自動削除)

セキュリティ多層防御

  • Turnstile — invisible CAPTCHA で Bot を排除
  • 入力バリデーション — 1,000 文字制限 + スパムパターン検出
  • KV レート制限 — IP あたり 10 回/分
  • Llama Guard — 有害コンテンツを自動フラグ & 拒否
  • AI Gateway — ガードレール・ログ・レート制限
  • フラグ付きメッセージは DB に証跡保存(管理画面で確認可能)

UX 改善ポイント

  • 自動リサイズ textarea — 長文入力でも全文が見える
  • Shift+Enter で改行、Enter で送信
  • サジェスト質問ボタン(3 種)で入力の敷居を低下
  • SSE ストリーミング中のタイピングアニメーション
  • ガードレール/エラー時のわかりやすいメッセージ表示
  • SE・Admin による人間の回答も対応(緑バッジ表示)

チューニングポイント & 改善履歴

項目BeforeAfter効果
回答スコープ記事コンテキストのみ(厳格なグラウンディング)記事優先 + Cloudflare 全般の知識で補足幅広い質問に回答可能に
max_tokens1,0242,048詳細な回答・コード例が可能に
AI 回答の永続化fire-and-forget(消失リスク)await で確実に D1 保存リフレッシュ後も回答が残る
スレッド TTL28 日24 時間(自動クリーンアップ)ストレージ節約・プライバシー向上
入力フィールド単行 input(長文が見切れる)自動リサイズ textarea(max 6rem)長文の可視性・改行対応
エラーハンドリングガードレールブロック時は無応答SSE error イベントでユーザーに通知「内容を変えてお試しください」と案内
temperature0.3(低温=事実重視・安定出力)ハルシネーション抑制

AI Gateway — 挙動例とエラーハンドリング

AI Gateway は Workers AI への全リクエストを中継し、ガードレール・ログ・キャッシュ・レート制限を適用します。ai.run() の第3引数に { gateway: { id: "..." } } を渡すだけで有効化されます。

正常フロー

ユーザー入力 → Turnstile 検証 → バリデーション → KV レート制限 → Llama Guard モデレーション(AI Gateway 経由) → RAG コンテキスト取得 → Gemma 4 26B A4B で回答生成(AI Gateway 経由・SSE ストリーミング) → D1 に保存。AI Gateway ダッシュボードでリクエスト数・レイテンシ・トークン消費量をリアルタイム監視可能。

ガードレールブロック時

AI Gateway のガードレールが不適切コンテンツを検知 → ストリームが空/中断 → サーバーが空レスポンスを検知 → SSE で { error: "AI からの応答を取得できませんでした..." } を送信 → フロントエンドが赤いエラーバーに「内容を変えて再度お試しください」と表示。 ai.run() 自体が例外をスローする場合も、エラーメッセージから gateway/guard/block を検知して専用メッセージを返却。

モデレーション(Llama Guard)との併用

Llama Guard 3 8B が「unsafe」を返した場合 → ユーザーメッセージを flagged=true で D1 に保存 → 「利用規約に反する可能性があるため送信できません」と即座に拒否。 Llama Guard 自体のエラーは Fail-open 設計(false negative 優先)で処理を続行。 二重防御: Llama Guard(コンテンツ分類)+ AI Gateway(ガードレール)の多層構成。

AI Gateway ダッシュボードで確認可能な情報

リクエスト数・成功/失敗率・平均レイテンシ・トークン消費量・ モデル別コスト分析・ガードレール発動回数・キャッシュヒット率。 全ログはリアルタイムで記録され、異常検知やコスト最適化に活用可能。

13

Markdown インポート

既存の Markdown 記事(Qiita、Zenn、社内 Wiki 等)をそのままインポートして記事化できます。 YAML Frontmatter からタイトル・タグ・カテゴリを自動抽出し、フォームに反映します。

1

Markdown を貼り付け

Frontmatter 付きの原稿をペースト

2

自動解析

タイトル・タグ・カテゴリを抽出

3

プレビュー確認

解析結果を確認して取り込み

4

公開時に画像を R2 へ

外部画像を自動で R2 に取り込み

YAML Frontmatter 対応

titletagscategory を Frontmatter から自動抽出。Frontmatter がない場合は最初の # 見出し をタイトルとして使用。

外部画像の自動 R2 取り込み

記事を公開する際に、Markdown 内の外部画像 URL(Qiita、S3 等)を自動検出し、 Cloudflare R2 にコピー。URL を R2 パスに自動置換するため、投稿者の操作は不要です。

デフォルトテンプレート

インポートモーダルを開くと Frontmatter のテンプレートがあらかじめ入力されており、 既存原稿を貼り付けるだけで即座に解析を開始できます。

14

このブログの使い方

Cloudflare フィールドノートは、SE が現場で得た技術知見を検証や事例の形で共有する場です。 対象読者ごとに最適な活用方法をまとめました。

👤

お客様・ユーザー

  • Cloudflare 技術の理解・学習に
  • 構成例や設計パターンの参考に
  • PoC や検証の出発点として
⚠ 環境差異があるため、必ず検証のうえ適用してください
🔧

SE・社内エンジニア

  • お客様提案の技術リファレンスに
  • チーム内のナレッジ共有に
  • 新人オンボーディングの教材に
⚠ 公式ドキュメントと併用し、社外共有時は位置づけを説明してください
🤝

パートナー

  • 共同提案時の技術コンテキスト共有に
  • Cloudflare 技術の概要把握に
  • お客様向け説明資料の補足に
⚠ 正式仕様は必ず公式ドキュメントをご参照ください

このブログの位置づけ

公式ドキュメントCloudflare Blogフィールドノート ← ここ個人ブログ・Zenn・Qiita

SE が現場で得た知見を共有するフィールドノートです。公式ドキュメントとは異なり、個人の経験・見解に基づく情報を含みます。 最新の仕様は developers.cloudflare.com をご参照ください。

15

免責事項ポリシー

本ブログは Cloudflare Japan のソリューションエンジニアが運営していますが、掲載内容は公式な製品仕様や動作保証を意味するものではありません。 この位置づけを明確にするため、サイト上の複数箇所に免責事項を掲載しています。

ホームページ — 概要説明

ヒーローセクション直下に、本ブログの位置づけを簡潔に説明する免責文を掲載。 執筆者個人の経験・見解に基づく情報であること、公式ドキュメントへの参照リンクを含みます。

各記事ページ — 詳細な免責事項

記事本文の末尾に「免責事項」ボックスを表示。 Cloudflare, Inc. の公式見解・推奨・仕様保証を構成するものではないこと、 すべてのお客様環境への適用を保証するものではないことを明記しています。

免責事項について

  • - 投稿者は SE 個人の立場で経験・知見を共有しており、Cloudflare の公式メッセージとは異なります
  • - お客様の環境はそれぞれ異なるため、記事の手順や構成がすべてに適用できるとは限りません
  • - 他部署や社外のステークホルダーがこのブログの位置づけを正しく理解できるようにするためです
  • - 最新の仕様や正式なサポートは Cloudflare 公式ドキュメント をご参照ください
16

Change Log

基礎設計から現在に至るまでの実装・変更履歴をまとめています。

Change Log を見る →
17

仕様一覧

項目技術 / 仕様
フレームワークRemix v2 (Vite) + Hono (API Layer)
ランタイムCloudflare Workers (V8 Isolates — コールドスタートなし)
ホスティングCloudflare Pages (SSR + CDN 静的配信)
データベースCloudflare D1 (SQLite at edge) + Drizzle ORM
ストレージCloudflare R2 (S3 互換・エグレス無料)
API レイヤーHono — streamSSE, 型付き Bindings, CORS / Auth / Logger ミドルウェア
AI モデルGoogle Gemma 4 26B A4B (ドラフト・チャット) + Llama Guard 3 8B (モデレーション)
AI GatewayAI 呼び出しの一元管理 — ログ・分析・レート制限・ガードレール(稼働中)
ベクトル検索Cloudflare Vectorize — セマンティック検索 + RAG チャット Q&A
WAF / DDoSOWASP Core Ruleset + Bot Management + カスタムルール
API ShieldOpenAPI 3.0 スキーマで全 16 エンドポイントをエッジ検証
Turnstileチャット Bot 保護 (invisible モード・稼働中)
認証Cloudflare Access (Zero Trust / Google SSO)
認可RBAC (admin / se / ae / user) + Personal API Keys (Bearer cfbk_)
セッション / キャッシュCloudflare KV (グローバル分散)
メール通知Email Workers (send_email) + Email Routing API
投稿者申請/apply → Email 検証 → 管理者承認 → Access ポリシー自動追加
CSSTailwind CSS v3 + Typography plugin
Markdownmarked + DOMPurify (XSS 対策)
言語TypeScript 5.7 (フルスタック型安全)
CI/CDGitHub Actions → Wrangler CLI → Cloudflare Pages