microCMSへの移行 更新日 2026年10月24日
目次
AstroとmicroCMSを連携させる手順は? Studioの記事URLをAstroで変えずに再現するには? AstroとmicroCMSのサイトをCloudflare Pagesへデプロイするには? microCMSと組み合わせるならAstro、Next.js、Nuxtのどれがよいですか?
# AstroとmicroCMSを連携させる手順は? 開発を始める前提として、作業端末にはNode.jsとnpmが導入されている環境が必要です。あらかじめmicroCMS側でサービスを作成し、記事を配信するためのAPIとフィールドを定義しておきます。次に、npm create astro@latestでAstroのプロジェクトを作ります。
microCMSとの通信には公式ライブラリのmicrocms-js-sdkを利用するため、プロジェクト内へパッケージを追加しましょう。プログラム内では、SDKが提供するcreateClient関数にサービスドメインとAPIキーを渡し、データ取得用のクライアントを生成します。
接続情報の設定では、プロジェクトのルート階層にある.envファイルへ環境変数を書き込みます。設定する項目は、サービスドメインとAPIキーの2つ。サービスドメインには、管理画面URLの先頭部分のみを指定します。管理画面のアドレスが「my-blog.microcms.io」なら、値は「my-blog」。APIキーも管理画面で確認できます。
Astroでは、ブラウザ側のコードに露出させない機密情報と、クライアントに渡すPUBLIC_で始まる変数が明確に区別される仕組みです。そのため、APIキーのような認証情報は接頭辞を付けずに管理し、サーバーやビルドの処理でのみimport.meta.env経由で呼び出します。
記事を取得するメソッドは、APIの形式で使い分けます。ブログのように記事が並ぶリスト形式ならgetList、1件だけを持つオブジェクト形式ならgetObjectです。公式の入門例はgetObjectで書かれています。だから、記事一覧にそのまま当てはめても動きません。
静的生成を行う詳細ページを設ける場合は、動的ルートのファイルからgetStaticPathsをエクスポートし、生成対象となる各記事のパラメータを返します。表示を確認したら、管理画面で変更・公開した内容が開発サーバーに反映されるかを見てください。最後にnpm run buildが通れば、初期導入は完了です。流れ全体はmicroCMS公式のAstro導入手順 にまとまっています。
# Studioの記事URLをAstroで変えずに再現するには? たとえばStudioで「/posts/hello-world」という記事を公開していたとしましょう。Studio側の動的ページは固定パスとSlugによって構成されており、Slugは作成時の自動発行値だけでなく、手動で変更された固有文字列も登録されています。同じモデルの中で重複はできません。「/posts」の部分はサイトごとに違うので、自分のサイトの実際のパスに合わせてください。
URLの変更を避けるための第一歩は、過去に公開した全記事のパスを正確に洗い出す作業。サイトマップ単体で全件が揃う保証はありません。Studioの記事一覧やアクセスログからもURLを拾い、漏れを防ぎましょう。
静的生成では、getStaticPaths()が返すオブジェクトのparamsによって、書き出すURLが決まります。ファイル名の角括弧で囲んだ識別子とparamsのキー名を一致させることで、Studio時代と同じURLで静的HTMLが出力されます。
ちなみに、microCMS側へデータを移す際は、Studioで使っていたSlugをそのままコンテンツIDとして割り当てる方法が分かりやすい選択肢。ただし、IDにはAPIごとに形式の決まりがあります。ID変更、PUT API、ID指定付きのCSVインポートで形式に合わない値を入れると、エラーになります(コンテンツIDの形式 )。記号の多いSlugを使っていたなら、本番の取り込み前に1件だけ試してみてください。
# AstroとmicroCMSのサイトをCloudflare Pagesへデプロイするには? 作成したAstroとmicroCMSのプロジェクトは、どのような手順を踏めばCloudflare Pagesへ配置し、入稿と同時に自動更新される環境を整えられるでしょうか。最初に進める作業は、Astroのソースコードを管理しているGitHubリポジトリとCloudflare Pagesの連携です。Cloudflareの管理画面にあるPagesのメニューから対象リポジトリを選択すると、初期設定の入力欄が現れます。フレームワークのプリセットはAstro、ビルドコマンドはnpm run build、出力先はdistです(Cloudflare PagesのAstro向け手順 )。Git連携にしておけば、新しいコミットをプッシュするたびに自動でビルドされ、公開まで進みますね。
AstroとmicroCMSの構成では、ビルドの最中に記事を取りに行きます。このため、ビルド時にもmicroCMSの接続情報を読める状態にしておく必要があります。microCMSの実装例に合わせるなら、変数名はMICROCMS_SERVICE_DOMAINとMICROCMS_API_KEYです。サービスドメインの値には.microcms.ioを付けません。
もうひとつ決めておきたいのが、記事を更新したときの流れです。コードの変更はGitのプッシュで反映されますが、microCMSで記事を公開しただけではサイトは作り直されません。Cloudflare Pagesの管理画面でデプロイフックのURLを発行したあと、microCMSの管理画面へ移動します。各APIの「API設定」から「Webhook」を開き、通知先としてCloudflare Pagesを選択して取得したURLを登録。microCMSの操作をきっかけにビルドが始まります。
通知するタイミングも設定で選べます。記事の公開時だけにビルドを走らせれば、下書きを保存するたびに作り直されることはありませんね。Gitからの更新とmicroCMSからの更新は入口が別です。記事が反映されないときは、Webhookの側から確かめてください。
# microCMSと組み合わせるならAstro、Next.js、Nuxtのどれがよいですか? Webサイトを制作する際、コンテンツ中心の配信を目指すAstroと、機能豊富なWebアプリケーションを作るNext.jsやNuxtとでは、設計思想や向いている用途が大きく異なります。Studioから移ってくるサイトの多くは、ブログやお知らせ、会社案内といった読ませるページが中心です。Astroは、ブログやマーケティング向けのサイトのような、コンテンツが主役のサイトを作るためのフレームワーク。
対照的にNext.jsは、ReactをベースにしたフルスタックのWebアプリケーション構築を得意としています。また、Vueを基盤とするNuxtも同様にフルスタックのWebアプリケーションを構築できる枠組みです。会員向けの機能や入力内容の処理など、アプリに近い動きを今後増やしていくなら、この2つが候補に入ります。
JavaScript SDKはNext.jsでもAstroでも使え、Nuxt向けにも連携用のSDKが用意されています(microCMSのSDK一覧 )。つまり、どのフレームワークを採用してもコンテンツの受け渡し自体に支障はありません。
そうなると、チームがすでに触れている技術で決めるのが現実的でしょう。Reactを書ける人がいればNext.js、Vueに慣れているならNuxtです。Nuxtの公式チュートリアルも、Vueに不慣れな人には先にVueの基礎を学ぶよう勧めています。
どちらにもなじみがなく、記事をきれいに表示できれば十分というサイトもありますね。その場合は、コンテンツ中心のサイト向けに作られたAstroが、いちばん目的に近いと感じます。
はまれぽメモ
はまれぽの本命構成はAstro×Cloudflareで、Studioの記事を今のURLのまま移します。記事を自分で更新したい場合は、microCMSなどの管理画面を付けます。料金は月額3,000円〜(運用込み)/単発98,000円〜(税別)です。
こんな聞き方も AstroとmicroCMSを連携させるにはどうしますか? microCMSとAstroでサイトを作るにはどうしますか? AstroとmicroCMSで完全な静的サイトを作るにはどうしますか? AstroとmicroCMSのサイトをCloudflare Pagesへデプロイするにはどうしますか? AstroとmicroCMSでブログを作るにはどうしますか? AstroとmicroCMSで記事一覧のページネーションを作るにはどうしますか? microCMSと組み合わせるならNuxt、Next.js、Astroのどれがいいですか? microCMSと組み合わせるならNext.jsとAstroのどちらがよいですか? AstroのサイトでmicroCMSの下書きプレビューを表示するにはどうしますか? microCMSとAstroで使える無料のテンプレートはありますか? astro microcms 連携 microcms-js-sdk astro
あわせて知りたい(関連する疑問) Q AstroのサイトでmicroCMSの下書きプレビューを表示できますか? Astroを用いたサイト構築においても、microCMSの下書きプレビュー機能は問題なく実現できますよ。microCMSのAPI設定で、画面プレビューの遷移先URLを指定します。このURLにはコンテンツIDとdraftKey(下書きを取り出すためのキー)を含められます。Astro側は、その2つを受け取って下書きを取得し、表示する処理を書きます(画面プレビューの設定 )。URLを登録しただけでは画面に何も出ないため、表示側の実装もセットで用意してください。
表示側の作り方は2通りあります。ひとつは、サーバー側で都度レンダリングを実行する方式。配信基盤に対応したアダプターを導入し、プレビュー用のページコンポーネントに「export const prerender = false」という宣言を記述します。この記述を追加したページだけがリクエスト時に動的生成され、一般公開される他の記事ページは静的生成のまま維持できるため、表示の軽さとプレビューの利便性を両立させやすい設計といえますね。
もうひとつは、静的に書き出したHTMLの上で、ブラウザ側JavaScriptから直接microCMSのAPIへ問い合わせて下書きを展開する方式です。この方法であればサーバー側の実行環境を用意せずに済みますが、通信を調べればブラウザ側でAPIキーを把握することが技術的に可能となります。この方式を取るなら、キーの権限をGETだけのように必要な範囲へ絞ります。キーを人目に触れさせたくなければ、サーバー側で処理する方法を選ぶことになりますね。
Q AstroとmicroCMSで記事一覧のページネーションは作れますか? 作れます。ただ、ページを分ける場所はmicroCMS側とAstro側の2か所です。ここを混同すると、思った通りに動きません。
microCMS側では、SDKのgetListでqueriesにlimitとoffsetを渡します。何件ずつ、何件目から取るかを指定して、記事を分けて取得できます。このとき気をつけたいのが取得件数の既定値です。何も指定しなければ返ってくるのは10件で、limitの上限は100件です(取得件数の既定と上限 )。APIを呼び出して10件しかデータが返ってこない場合でも、それは登録データが10件しかないわけではなく、既定の上限値が適用されているためですね。
記事一覧の分割表示を実装する際、ビルド時にすべてのページを静的ファイルとして書き出しておく方式と、閲覧者が訪れた瞬間にオンデマンドで生成する方式とでは、Astro内での処理の組み立て方が大きく変わります。Astro側では、静的生成の場合、番号付きの動的ルートとgetStaticPathsを使ってページ番号ごとのページをビルド時に作ります。手元の配列をページ単位に切り分けるpaginateも組み込まれていますね。一方、サーバー側でリクエストのたびにページを組み立てるオンデマンド動的ルートを選択した場合は、アクセスごとにデータが取得されるためgetStaticPaths自体を使用しません。
APIから分けて取る方法と、まとめて取った配列をAstroで切る方法は別物です。記事が100件を超えるサイトなら、offsetをずらしながら全件を集め、その配列をpaginateに渡す形が組みやすいでしょう。
Q microCMSとAstroで使える無料のテンプレートはありますか? 初期構築の手間を省き、すぐに手元で動作確認を始められるような、無償で利用可能なテンプレートはあるのでしょうか。あります。「Astroを使用したシンプルなブログ」というテンプレートが、MITライセンスで公開されています(テンプレートの掲載ページ )。MITライセンスはテンプレートのコードを使う条件の話です。microCMSや配信先の利用料金とは分けて考えてください。
連携の処理はフロント側にすでに組み込まれています。.envにMICROCMS_API_KEYとMICROCMS_SERVICE_DOMAINを設定すれば、microCMSとつながります。Studioから移す場合も、接続部分を一から書かずに済みますね。
動作環境の書き方には差があります。掲載ページではNode.js 18以上とされていますが、作者のREADMEは24以上を前提にしています。迷ったら、READMEにある24以上を用意してください。
なお、配布されているテンプレート群にはコミュニティの有志が制作したものも多く含まれており、個々の作者によって保守が行われています。依存ライブラリやフレームワークの更新が反映されていないこともあります。使う前に、テンプレートの内容と最終更新日を見ておきましょう。
Q Studioで使っていたmicroCMSのAPIキーをそのまま使えますか? たとえばStudioの管理画面でこれまでmicroCMSとの接続に使っていたAPIキーがあるとしても、それをそのままAstroの設定ファイルへ書き写して使い回すことは推奨されません。技術的な仕様の観点だけで見れば、Studioの連携設定に入力していた文字列は、microCMSが発行したX-MICROCMS-API-KEYそのもの。APIリクエストの認証方式自体は共通しているため、文字列をそのままAstro側の.envに記載しても通信自体は成立してしまいます。
ただ、2026年10月にStudioで不正アクセスがありました。Data Connect APIやAPI連携(Beta)に登録された外部サービスのAPIキーやトークンは、暗号化して保存されていたものも含めて、内容を知られた可能性があります(Studioの不正アクセスに関するお知らせ )。漏れたと決まったわけではありません。それでも、Astroへ移るこの機会に新しいキーへ替えるのが筋でしょう。
移行の途中で、Studioのサイトをまだ公開している場合は順番が大切です。microCMSで新しいキーを作り、Studio側の設定を新しいキーに更新してから、古いキーを失効させましょう。先に古いキーを止めると、Studioのサイトで連携が止まる場合があります。microCMSでは管理者権限を持つユーザーであれば、管理画面のキー一覧から「追加」を選んで即座に新しいキーを生成できます。
ビルド時にサーバー側から記事を取る構成なら、キーは閲覧者から見えません。ブラウザから直接APIを呼ぶ部分を作るなら、その用途にはGET権限だけを付けた別のキーを用意してください。
この内容をChatGPTで相談
前のQ&A Studioから移る場合、microCMSの料金はどう決まりますか?次のQ&A Studioから移るなら、WordPressとmicroCMSのどちらがよいですか?