homeIcon

Next.js + microCMS でJamstackなブログを作ってみた

フロントエンド
2025.06.01
2025.08.10

はじめに

はじめまして!宮﨑と申します!
普段は人材系事業会社のWebエンジニアとして、サイトの保守・運用などを担当しています。

日々学んだ技術や知識をアウトプットするためにプロフィールサイト兼ブログを作成してみました。
これからJamstack構成や Next.js + microCMS での開発を考えている方の参考になれば幸いです。

Miyazaki's profile

宮﨑貴大のプロフィールサイトです。

my-profile-mu-gold.vercel.app

OGP Image

Jamstackとは?

JavaScript API Markup の頭文字を取ったもので、JavaScriptとAPIとMarkupを組み合わせたWebアプリケーションアーキテクチャです。
Jamstackの特徴としてパフォーマンスの高さとセキュリティの高さがうたわれています。

microCMSを選んだ理由

microCMSはAPIベースのヘッドレスCMSです。コンテンツ管理の手間をなるべく減らしたいのと同時に、以下のようなメリットがあるため使用しました、

  • ノーコードでスキーマ作成できる
  • 日本語ドキュメントが充実
  • API連携がシンプル
  • 高速なレスポンス

microCMS|APIベースの日本製ヘッドレスCMS

microCMSはAPIベースの日本製のヘッドレスCMSです。もう社内向け編集/管理画面を自作する必要はありません。開発・運用コストを大きく下げることでビジネスを加速させます。

microcms.io

OGP Image

サイト構成について

今回作成したサイトでは、以下の内容でJamstack構成にしました。

使用技術

  • フロント:Next.js(React/TypeScript)
  • デザイン:TailwindCSS、vanilla-extract
  • コンテンツ管理:microCMS
  • デプロイ:Vercel

コンテンツ

  • プロフィール
  • ポートフォリオ
  • ブログ
  • お問い合わせ

システム構成

Vercelでホスティングをしています。
また、Next.js では SSG を採用しており、ビルド時に microCMS から API にて記事データを取得し、静的ファイルを生成するようにしています。そのため、画面遷移時の同期通信などは発生せず、快適な操作性を実現しています。

画像1

開発の流れ

前提

プロジェクト立ち上げやmicroCMSの導入は以下の記事を参考に行いました。
具体的な手順などは以下に分かりやすく記載されていますので、気になった方は見てみてください。(雑ですみません...)
今回は、私が行ったことを軸に話していきます!

microCMS + Next.jsでJamstackブログを作ってみよう(Next.js 15 ver.)

microCMSとNext.js 15を組み合わせて、Jamstackなブログを作成するチュートリアルです。

blog.microcms.io

OGP Image

ワイヤーフレームの作成

デザイン素人ながらも頑張って作成してみました。
ツールはFigmaを使用しましたが、これも初めてだったのでUdemyで動画を見て使い方を学びました。作成したワイヤーフレームはあまりにも素人感満載で恥ずかしですが、慣れてくるとデザインを考えるのが意外と楽しかったです。

PC

画像2

sp

画像3

microCMSの設定

microCMSについても使用するのは初めてでしたが、日本製のCMSということもありドキュメントやチュートリアルが充実していてキャッチアップしやすかったです。
また、構築自体も API作成 → APIスキーマ作成 → 記事を作成 でサクッと構築でき、思っていたより学習コストがなく簡単にできました!

BlogのAPIスキーマ構成

画像4

Blogの記事コンテンツ

記事内容は Markdown(MDX) で管理し、ビルド時にhtmlにパースしてページに表示しています。

画像5

実装

本サイトは、Next.js の App Router をベースに構築しています。トップページ、ブログ、ポートフォリオといった各セクションは独立したルートとして設計し、共通のレイアウトコンポーネントを用いて一貫性のあるデザインを実現しました。

記事データはビルド時に microCMS から取得し、Next.js の SSG(静的生成)で HTML に変換されるように実装。これにより、通信の待ち時間なく、高速なページ表示を実現しています。
CMSとの連携もシンプルで、必要な情報だけを API 経由で取得し、構造化されたデータとして扱えるのも便利でした。

また、スタイルは TailwindCSS を基本としつつ、カラーや余白、タイポグラフィなど共通スタイルは vanilla-extract で定義。見た目とコードの整合性を保ちながら、保守性の高いスタイリングを目指しました。

Vercelへデプロイ

デプロイには Vercel を使用しましたが、本当に驚くほど簡単で感動しました。
まず GitHub にプロジェクトを push し、Vercel 側の管理画面で GitHub リポジトリと連携。あとはビルドコマンドや出力ディレクトリ(Next.js プロジェクトの場合は自動で設定される)を確認するだけで、初回デプロイが完了します。

本サイトでは SSG(静的生成)を前提とした構成としているため、 Next.js の generateStaticParams 関数を用いて、ビルド時に microCMS から記事やプロフィールなどのデータを取得しています。
これにより、各ページは静的HTMLとして生成され、ページ遷移時のデータ取得が不要になり、動的な通信を最小限に抑えたパフォーマンス重視の設計になっています。

まとめ

今回の制作を通じて、Jamstack構成でのWebサイト開発の楽しさと難しさの両方を実感することができました。特に、Next.jsのApp Routerを使った設計や、microCMSとの連携による柔軟なコンテンツ管理は、学びも多くとても良い経験になりました。

また、構成を意識しながら一つのサイトを自分の手で形にしていく中で、開発全体の流れを俯瞰して考える力も身についたと感じています。
まだまだ改善点はありますが、自分の活動を発信できるベースとして、今後もアップデートを続けていく予定です。

最後に

今後はカテゴリ機能や記事の並び替え、目次のハイライト表示など、さらに使いやすいブログにしていきたいと思っています。
また、VercelだけでなくAWSを使ったデプロイにも挑戦し、インフラ面の知識も深めていく予定です。

ここまで読んでいただきありがとうございました!
本記事が、Next.js や microCMS を使った開発に取り組む方の参考になれば嬉しいです。
なお、本サイトのソースコードは以下で公開していますので、よければ覗いてみてください!

GitHub - miyazaki-dev01/My_profile: プロフィールサイト(React[Next.js]/TypeScript)

プロフィールサイト(React[Next.js]/TypeScript). Contribute to miyazaki-dev01/My_profile development by creating an account on GitHub.

github.com

プロフィールサイト(React[Next.js]/TypeScript). Contribute to miyazaki-dev01/My_profile development by creating an account on GitHub.
Share