All posts

EmDash 学習記録 #1:WordPress の次を考えて、ブログを立ち上げた

PHP2Shell をきっかけに EmDash を触り始めた。ローカルでブログを立ち上げ、WordPress との違いと、記事が Portable Text という部品で保存される仕組みを確かめた1日目の記録。

WordPress で長くサイトを作ってきたが、PHP 本体の脆弱性(PHP2Shell)をきっかけに、次の選択肢として EmDash を触り始めた。今すぐ乗り換えるためではなく、EmDash と Cloudflare の技術を理解しておくための学習として。この記事はその1日目の記録。

なぜ EmDash なのか

  • PHP を使わない。TypeScript と Astro で書かれている
  • プラグインがサンドボックス(隔離された環境)で動く
  • 設定も記事もコードと API で扱えるので、AI と一緒に作業しやすい

1日目にやったこと

  1. Node.js を 22.23.4 に上げた(EmDash 1.4.0 は 22.16 以上が必要)
  2. npm create emdash@latest で Blog テンプレートを作成。まずはローカル(Node.js と SQLite)で動かす構成
  3. npm run dev で起動し、管理画面のセットアップでサイトとアカウントを作成

WordPress との対応

  • astro.config.mjs は wp-config.php のようなもの。データベースとファイル置き場を決める
  • seed/seed.json は投稿タイプやカスタムフィールドの定義
  • src/pages/ はテーマのテンプレート。posts/[slug].astro が single.php にあたる

記事は HTML ではなく部品として保存される

本文は Portable Text という JSON で保存される。見出しなら「h2 の部品で、文字はこれ」という形。WordPress のように HTML の文字列をそのまま持つのではないので、AI が見出しや段落を直しても画面が崩れにくい。

CLI で記事を取り出すと Markdown に変換されて返ってくる。--raw を付けると JSON そのものが見える。

AI との付き合い方で決めたこと

ローカルでは CLI がログインなしで動く。便利だが、本番では AI に渡す権限を絞る必要がある。この記事も AI に下書きとして作らせ、公開ボタンは自分で押す。AI は下書きまで、公開は人という線引きを、最初から習慣にしておく。

次にやること

  • コンテンツの型(スキーマ)を自分で足してみる
  • テーマの見た目を変えて、データが画面になる流れを追う
  • Cloudflare(Workers、D1、R2)に載せる

Discussion