EmDash は Astro ネイティブのコンテンツ管理システム です。コレクション、タクソノミー、メニュー、ウィジェット、洗練された管理 UI といったおなじみの CMS のパターンを、TypeScript のフルサポートとポータブルなデプロイとともに Astro サイトに直接もたらします。
EmDash とは
EmDash は Astro 専用に作られた CMS です。Astro 6 の Live Content Collections を使い、再ビルドなしでランタイムにコンテンツを配信します。コンテンツは SQLite 互換データベース(D1、libSQL、ローカル SQLite)に、メディアは S3 互換ストレージ(R2、ローカルファイルシステム)に保存されます。
主な特徴:
- データベースファーストのスキーマ — コレクションとフィールドはコードではなくデータベースで定義します。管理 UI からコンテンツタイプを作成・変更できます。
- Live Collections — コンテンツの変更はすぐに反映されます。静的な再ビルドは不要です。
- プラグインシステム — WordPress にインスパイアされたフック、ストレージ、設定、管理 UI の拡張。
- クラウドにポータブル — Cloudflare(Workers + D1 + R2)、Node.js、ローカル SQLite、任意の S3 互換ストレージで動作します。
EmDash が「ない」もの
- ヘッドレス CMS ではありません — EmDash は Astro と密接に統合されています。API 経由で呼び出す別サービスではありません。
- WordPress 互換ではありません — PHP も、WordPress プラグインの直接実行もありません。ただし WordPress のコンテンツと概念はきれいに移行できます。
- ページビルダーではありません — EmDash は構造化コンテンツに注力します。ビジュアルなページ構築には Astro コンポーネントを使います。
EmDash が向いている人
代理店の開発者
再利用可能なプラグインとテーマですばやくクライアントサイトを立ち上げ。PHP のセキュリティ更新や プラグインの衝突に悩まされません。
個人開発者
CMS 内蔵のフルスタックフレームワーク。別のヘッドレス CMS を運用する必要はありません。
コンテンツ編集者
直感的な管理パネル。コードに触れずにコンテンツを作成・編集できます。
WordPress ユーザー
コンテンツとプラグインの移行パス。モダンなツールと馴染みのある概念。
アーキテクチャの概要
┌─────────────────────────────────────────────────────────────┐
│ あなたの Astro サイト │
│ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ EmDash 統合 │ │
│ │ │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌──────────────┐ │ │
│ │ │ コンテンツ │ │ 管理 │ │ プラグイン │ │ │
│ │ │ エンジン │ │ パネル │ │ │ │ │
│ │ └─────────────┘ └─────────────┘ └──────────────┘ │ │
│ │ │ │
│ │ ┌───────────────────────────────────────────────────┐│ │
│ │ │ データ層 ││ │
│ │ │ SQLite/D1 ←→ Kysely ←→ R2/S3/ローカル ││ │
│ │ └───────────────────────────────────────────────────┘│ │
│ └───────────────────────────────────────────────────────┘ │
│ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ Astro フレームワーク │ │
│ │ Live Collections • セッション • ミドルウェア │ │
│ └───────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
コアコンセプト
進む前に、次の用語に慣れておきましょう。
- Collections — データベースで定義されたコンテンツタイプ(投稿、ページ、商品など)
- Fields — コレクションのプロパティ(タイトル、本文、価格など)
- Taxonomies — 分類体系(カテゴリー、タグ、カスタムタクソノミー)
- Menus — 管理画面で編集できるナビゲーション構造
- Widget Areas — サイドバーやフッター向けに設定可能なコンテンツ領域
- Plugins — フック、ストレージ、UI によって機能を追加する拡張