記事一覧へ戻る

ブログをEmDashで作ることを実践しています

EmDashでブログを構築し、ローカルで作ったサイトを本番(Cloudflare Workers)へ反映するまでの実践レポート。ロケール設定でつまずいた点と、その解決方法をまとめました。

はじめに

いま、ブログをEmDash(Astroベースの CMS)で作ることを実践しています。この記事では、現在までの取り組みと、途中でつまずいた点、その解決方法を、レポートとしてまとめます。

現在の構成

  • CMS: EmDash(Astro ベース)
  • 本番環境: Cloudflare Workers 上で公開
  • 開発環境: ローカル(WSL)でサイトを作り込み、本番へ反映
  • 運用: Claude Code から MCP(Model Context Protocol)で本番のEmDashに接続し、記事の作成や更新を行う

やってきたこと

  1. ローカルでEmDashサイトを構築し、コレクション(Posts / Pages)を用意
  2. ローカルで作成したコンテンツを、Site Transfer(サイト移行機能)で本番へ取り込み
  3. Claude Code に本番EmDashのMCPサーバーを接続し、AI経由でコンテンツを操作できる状態にした

つまずいたこと: ロケールの不一致

本番への取り込み時に、次のエラーで失敗しました。

パッケージに、このサイトにないロケールが使用されています

原因

ローカルで作成したコンテンツに、日本語ロケール(ja)を指定していました。ところが本番サイトにはi18n(多言語)設定がなく、EmDashは en だけを有効なロケールとして扱います。そのため、ja のデータが「存在しないロケール」と判定されました。

さらに、ゴミ箱に入れたサンプル記事にも ja 版が残っており、en に変換した記事とスラッグが衝突しました。サイトパッケージにはゴミ箱の項目も含まれるため、削除したつもりのデータも影響します。

解決方法

  • ローカルのデータをバックアップしたうえで、ロケールを ja から en に変換
  • 衝突していたゴミ箱内のサンプル記事を完全削除
  • 以降の書き込みでは、ロケールを指定しない運用に統一

日本語で運用するための考え方

ロケールは内部的な言語タグで、本文の言語を制限するものではありません。そのため、ロケールは en のままで、本文を日本語で書いて問題なく運用できます。日本語としての表示(HTMLの lang="ja" や日付の書式)は、ロケールとは別にテーマ側のコードで処理しています。

将来、日本語と英語の両方を持つ多言語サイトにしたくなった場合は、i18n設定の追加と、既存データのロケール変換が必要になります。

学んだこと

  • 本番とローカルで、ロケール設定をそろえることが重要
  • 日本語だけで運用するなら、ロケールは指定せず en のままにする
  • 移行前に、ゴミ箱内のデータも含めて確認する
  • 本番へ直接書き込む操作は、最初は下書きで作り、確認してから公開する

今後の予定

引き続き、EmDashでのブログ運用を実践しながら、気づいた点を記事にしていきます。

コメント

まだコメントはありません