Decap CMS → microCMSに移行した話 ── Claude Codeと37記事の自動移行

Decap CMSからmicroCMSへの移行記録。Claude Codeとの対話で37記事を自動移行した体験をまとめました。

この記事について

MARI LABのブログはAstro + Cloudflare Pagesで運用しています。記事管理に使っていたDecap CMS(旧Netlify CMS)が使いづらかったので、microCMSに乗り換えました。

移行作業はClaude Code(AI)と対話しながら進め、37記事の移行もスクリプトで自動化。この記事では、なぜ移行したのか、どう進めたのか、ハマったポイントも含めて記録します。

Decap CMSのどこがつらかったのか

Decap CMSはGitベースのCMSで、無料で使えるのは良いのですが、実際に運用してみると課題がありました。

  • 管理画面が素朴すぎる ── リッチエディタの操作感がWordPressなどと比べて見劣りする
  • プレビューがわかりづらい ── 実際の見た目と管理画面の表示にギャップがある
  • GitHub認証が必要 ── 記事を書くだけなのにOAuthの設定やメンテナンスが発生する
  • 日本語の情報が少ない ── トラブル時に調べても解決策が見つかりにくい

「ブログを書く」というシンプルな目的に対して、運用のハードルが高すぎました。

なぜmicroCMSを選んだのか

CMSを選び直すにあたって、いくつかの選択肢を比較しました。

CMS

特徴

判断

Contentful

海外大手、高機能

日本語UIなし、無料枠が小さい

Sanity

カスタマイズ性が高い

学習コストが高い

Notion API

普段使いのNotionをそのまま使える

APIの制約が多い

microCMS

日本製、日本語UI、直感的

採用

決め手は以下の3点です。

  1. 日本語の管理画面 ── 迷わず操作できる
  2. リッチエディタの完成度 ── 画像のドラッグ&ドロップ、見出し・リスト・テーブルが直感的
  3. Astroとの相性 ── 公式ドキュメントにもAstro連携の記載があり、SDKも充実

移行の全体像

移行でやったことは大きく4つです。

  1. microCMSのセットアップ ── アカウント作成、APIスキーマ定義
  2. Astro側のコード変更 ── microCMSクライアント追加、既存Markdownとのハイブリッド構成
  3. Decap CMSの削除 ── 管理画面・OAuth関連ファイルの削除
  4. 37記事の自動移行 ── スクリプトでMarkdown → microCMSに一括投入

Claude Codeとの作業の進め方

今回の移行作業は、すべてClaude Codeと対話しながら進めました。

私はデザイナーで、コードを書くのはそれほど得意ではありません。でもClaude Codeを使うと「こうしたい」と伝えるだけで、コードの変更からビルド確認まで一気にやってくれます。

実際のやりとりの流れ

まず「ブログのCMSが使いづらいので、いい方法ない?」と相談するところから始まりました。

Claude Codeが選択肢を提示してくれて、microCMSに決めた後は:

  1. microCMSの管理画面で何を入力するかを画面のスクリーンショットを見せながら確認
  2. コードの変更はClaude Codeが実行 ── APIクライアント作成、ページ修正、Decap CMS削除
  3. ビルドの確認もClaude Codeが実行 ── エラーがあればその場で修正
  4. 本番デプロイはgit push ── Cloudflare Pagesが自動でビルド

microCMSの設定(APIキーの権限設定など)は自分で画面操作が必要ですが、「次に何をすればいいか」をClaude Codeが教えてくれるので迷いませんでした。

37記事の自動移行

一番驚いたのは、既存の37記事(ブログ33件 + ニュース4件)の移行です。

「これまでの記事をmicroCMSに入れたいけど、1つずつ手で入力しないとダメ?」と聞いたら、Claude Codeが移行スクリプトを書いてくれました。

スクリプトの仕組みはこうです:

  1. src/content/blog/にあるMarkdownファイルを読む
  2. frontmatter(タイトル・日付・タグなど)を解析
  3. 本文をMarkdown → HTMLに変換
  4. microCMSのAPIで記事を作成(下書き記事は下書きのまま)

実行すると、数十秒で37記事すべてがmicroCMSに入りました。

ただし、最初の実行ではAPIキーの権限が足りず全記事エラーになるというハプニングも。microCMSのAPIキー設定でPUT権限を追加したら解決しました。こういうトラブルも、Claude Codeに聞けばすぐ原因がわかります。

ハイブリッド構成という選択

移行後のアーキテクチャで工夫したのは、microCMSと既存のMarkdownファイルを併存させる構成にしたことです。

記事の取得フロー:
  microCMSから取得 → Markdownから取得 → マージ(同一IDはmicroCMS優先)

これにより:

  • 移行前のMarkdown記事もそのまま動く ── 万が一microCMSに問題があっても記事が消えない
  • 段階的に移行できる ── 一気にやらなくても大丈夫
  • 画像のフォールバック ── microCMSに画像を登録していなくても、Markdown側の画像が表示される

完全移行ではなく「安全に併存させる」アプローチは、個人サイトの運用に合っていると感じます。

ハマったポイント

1. microCMSのWebhookは無料プランでは使えない

microCMSで記事を公開したら自動で本番サイトに反映される ── と思っていたのですが、Webhook機能は有料プランのみでした。

現状は記事公開後に手動でデプロイをトリガーする必要があります。Cloudflare Pagesのdeploy hook URLにcurlでリクエストを送るか、git pushするかのどちらかです。

2. APIキーの権限設定

microCMSのAPIキーはデフォルトでGET(読み取り)のみ。移行スクリプトで記事を書き込むにはPUT権限が必要です。移行後はGETのみに戻すのを忘れずに。

3. アイキャッチ画像の移行

記事のテキストは自動移行できましたが、アイキャッチ画像(サムネイル)はmicroCMSの画像フィールドには自動で入れられませんでした。microCMSの画像フィールドはCDNにアップロードされた画像しか受け付けないためです。

これは、microCMSに画像がない場合に元のMarkdown側の画像にフォールバックするコードを追加して解決しました。

移行してよかったこと

移行して約1週間ですが、明らかにブログを書くハードルが下がりました。

  • 管理画面が直感的 ── WordPressに近い操作感で、迷わない
  • 下書き → 公開のフローが自然 ── ボタン1つで切り替え
  • 画像の挿入が楽 ── ドラッグ&ドロップで完了
  • APIが素直 ── 将来カスタマイズしたくなっても対応しやすい

まとめ

Decap CMS → microCMSへの移行は、Claude Codeのおかげで半日で完了しました。

私がコードを書かずにCMSを移行できたのは、Claude Codeとの対話で「やりたいこと」を伝えるだけで、実装・テスト・デプロイまで一気通貫で進められたからです。

数10件溜まっていた記事の自動移行も、手作業なら丸1日かかるところが数分で終わりました。

個人サイトやブログのCMS選びで悩んでいる方、特にDecap CMSの運用に疲れている方には、microCMSへの移行をおすすめします。Astroとの相性もよく、日本語環境での運用は圧倒的に楽です。