
microCMSからマークダウンベースのブログシステムに移行した話
はじめに
これまでmicroCMSというヘッドレスCMSを使用してブログを運営していましたが、この度マークダウンファイルベースのシステムに移行することにしました。この記事では、移行を決めた理由、実際の移行作業、そして移行後の感想について詳しくお話ししたいと思います。
microCMSを使っていた理由
最初にmicroCMSを選んだ理由は、主に以下の点でした。
管理画面の使いやすさ
microCMSは非常に直感的な管理画面を提供しており、ブログ記事の作成や編集が簡単に行えました。リッチテキストエディタも充実しており、画像の挿入やリンクの設定なども視覚的に行うことができました。
API連携の柔軟性
REST APIを通じてコンテンツを取得できるため、フロントエンドとバックエンドを完全に分離した構成を実現できました。これにより、Astroのような静的サイトジェネレーターとの連携も非常にスムーズでした。
自動化機能
Webhookを使用することで、記事の公開と同時にCloudflare Pagesでの自動デプロイを実現していました。記事を投稿すると、数分後には自動的にサイトが更新される仕組みは非常に便利でした。
移行を決めた理由
しかし、運用を続ける中でいくつかの課題が見えてきました。
外部サービスへの依存
microCMSは外部のSaaSサービスであるため、サービスの継続性や料金体系の変更などに対する不安がありました。また、インターネット接続がない環境では記事の編集ができないという制約もありました。
バージョン管理の難しさ
記事の内容をGitで管理することができないため、変更履歴の追跡や複数人での協業が困難でした。特に、記事の修正や更新を行う際に、以前のバージョンとの比較が難しいという問題がありました。
コストの考慮
現在は無料プランで運用していましたが、将来的に記事数が増えた場合の料金体系を考慮すると、長期的なコストが気になっていました。
移行作業の詳細
Astroコンテンツコレクションの設定
まず、Astroのコンテンツコレクション機能を使用してマークダウンファイルを管理する仕組みを構築しました。
import { defineCollection, z } from 'astro:content';
const blog = defineCollection({
type: 'content',
schema: z.object({
title: z.string(),
description: z.string(),
pubDate: z.coerce.date(),
updatedDate: z.coerce.date().optional(),
heroImage: z.string().optional(),
tags: z.array(z.string()).default([]),
author: z.string().default('Shooon'),
draft: z.boolean().default(false),
}),
});
この設定により、マークダウンファイルのフロントマターで記事のメタデータを管理できるようになりました。
ページルーティングの変更
microCMS APIを使用していた既存のページを、マークダウンファイルを読み込む形に変更しました。特に、動的ルーティングの部分では、getCollection
関数を使用して記事一覧を取得し、静的パスを生成するように修正しました。
記事データの移行
既存のmicroCMSの記事データをマークダウン形式に変換する作業も行いました。これは手動で行いましたが、記事数がそれほど多くなかったため、それほど大きな負担にはなりませんでした。
移行後のメリット
完全なローカル環境での作業
マークダウンファイルベースになったことで、インターネット接続がない環境でも記事の作成や編集が可能になりました。また、お気に入りのテキストエディタを使用して記事を書けるようになったのも大きなメリットです。
Gitによるバージョン管理
記事の変更履歴をGitで管理できるようになったため、いつ何を変更したかが明確に分かるようになりました。また、複数人での協業も容易になりました。
外部サービスへの依存の解消
外部のCMSサービスに依存しなくなったため、サービスの継続性やコストについて心配する必要がなくなりました。
デプロイの高速化
microCMS APIを呼び出す必要がなくなったため、ビルド時間が短縮され、デプロイがより高速になりました。
移行後の課題
管理画面の喪失
microCMSの直感的な管理画面がなくなったため、非技術者にとっては記事の作成や編集が難しくなりました。ただし、現在は主に自分一人で運営しているため、それほど大きな問題にはなっていません。
画像管理の複雑化
microCMSでは画像のアップロードと管理が簡単でしたが、マークダウンベースでは画像ファイルの管理を自分で行う必要があります。現在はpublic/images
ディレクトリに画像を配置していますが、より効率的な管理方法を検討中です。
今後の展望
記事作成の自動化
Manus AIを活用して、記事の企画から執筆、マークダウンファイルの作成まで自動化することを検討しています。これにより、より効率的にコンテンツを作成できるようになると期待しています。
検索機能の実装
現在は記事一覧からの閲覧のみですが、将来的には記事の検索機能を実装したいと考えています。マークダウンファイルベースであれば、全文検索の実装も比較的容易に行えるはずです。
多言語対応
国際的な読者にも対応するため、多言語対応を検討しています。マークダウンファイルベースであれば、言語ごとにディレクトリを分けて管理することも可能です。
まとめ
microCMSからマークダウンベースのブログシステムへの移行は、いくつかの課題もありましたが、全体的には非常に満足のいく結果となりました。特に、外部サービスへの依存を解消し、Gitによるバージョン管理が可能になったことは大きなメリットです。
今後も継続的にシステムの改善を行い、より良いブログ運営を目指していきたいと思います。同じような移行を検討されている方の参考になれば幸いです。
この記事は、AIアシスタント「Manus」の協力により作成されました。