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点です。
- 日本語の管理画面 ── 迷わず操作できる
- リッチエディタの完成度 ── 画像のドラッグ&ドロップ、見出し・リスト・テーブルが直感的
- Astroとの相性 ── 公式ドキュメントにもAstro連携の記載があり、SDKも充実
移行の全体像
移行でやったことは大きく4つです。
- microCMSのセットアップ ── アカウント作成、APIスキーマ定義
- Astro側のコード変更 ── microCMSクライアント追加、既存Markdownとのハイブリッド構成
- Decap CMSの削除 ── 管理画面・OAuth関連ファイルの削除
- 37記事の自動移行 ── スクリプトでMarkdown → microCMSに一括投入
Claude Codeとの作業の進め方
今回の移行作業は、すべてClaude Codeと対話しながら進めました。
私はデザイナーで、コードを書くのはそれほど得意ではありません。でもClaude Codeを使うと「こうしたい」と伝えるだけで、コードの変更からビルド確認まで一気にやってくれます。
実際のやりとりの流れ
まず「ブログのCMSが使いづらいので、いい方法ない?」と相談するところから始まりました。
Claude Codeが選択肢を提示してくれて、microCMSに決めた後は:
- microCMSの管理画面で何を入力するかを画面のスクリーンショットを見せながら確認
- コードの変更はClaude Codeが実行 ── APIクライアント作成、ページ修正、Decap CMS削除
- ビルドの確認もClaude Codeが実行 ── エラーがあればその場で修正
- 本番デプロイは
git push── Cloudflare Pagesが自動でビルド
microCMSの設定(APIキーの権限設定など)は自分で画面操作が必要ですが、「次に何をすればいいか」をClaude Codeが教えてくれるので迷いませんでした。
37記事の自動移行
一番驚いたのは、既存の37記事(ブログ33件 + ニュース4件)の移行です。
「これまでの記事をmicroCMSに入れたいけど、1つずつ手で入力しないとダメ?」と聞いたら、Claude Codeが移行スクリプトを書いてくれました。
スクリプトの仕組みはこうです:
src/content/blog/にあるMarkdownファイルを読む- frontmatter(タイトル・日付・タグなど)を解析
- 本文をMarkdown → HTMLに変換
- 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との相性もよく、日本語環境での運用は圧倒的に楽です。