
設定・環境構築
読み込み中...
2026/3/19
2026/3/19
2026/3/19
2026/3/19
2026/3/19
2026/3/19
2026/3/19
2026/3/15
2026/3/15
2026/2/26
今回は、【 Next.js×MicroCMS】初心者向け爆速ブログ作成ハンズオンというテーマで記事をシェアします。
初心者向けなので、緬く解説しながら進めていこうと思っています。
Next.jsとmicroCMSを用いて無料でブログを作ってみたい方々
WordPress や STUDIO などの今時の便利ツールを使いたくない方々
無料でブログやPF掲載用のサイトを作成したい方々
わからないことは自分で調べられる人方々
PC : MacBook Air(M1,2020)
RAM : 8GB
OS : macOS Monterey(ver12.1)
Language: TypeScript5.0
Library: React18
FW: Next.js13.5(App routerを採用)
~ $ npx create-next-app my-tech-blog --typescript
https://microcms.io にアクセスしてコンテンツ管理画面を作成します。
SERVICE_DOMAIN=xxxxxxxxxxxx
API_KEY=xxxxxxxxxxxx
~ my-tech-blog $ npm install --save microcms-js-sdk
import { createClient } from 'microcms-js-sdk';
export type Blog = {
id: string;
title: string;
body: string;
}
export const client = createClient({
serviceDomain: process.env.SERVICE_DOMAIN,
apiKey: process.env.API_KEY,
});
export const getBlogs = async () => {
const blogs = await client.getList<Blog>({ endpoint: "blogs" });
return blogs;
}
export const getDetail = async (contentId: string) => {
const blog = await client.getListDetail<Blog>({
endpoint: "blogs",
contentId,
});
return blog;
};
import Link from "next/link";
import { getBlogs } from "@/../libs/client";
export default async function StaticPage() {
const { contents } = await getBlogs();
if (!contents) {
return <h1>No Contents</h1>;
}
return (
<div>
<ul>
{contents.map((blog) => (
<li key={blog.id}>
<Link href={`/blog/${blog.id}`}>{blog.title}</Link>
</li>
))}
</ul>
</div>
);
}
import { getDetail, getBlogs } from "@/../libs/client";
export async function generateStaticParams(){
const { contents } = await getBlogs();
const paths = contents.map((blog) => ({ blogId: blog.id }));
return [...paths];
}
export default async function StaticDetailPage({
params : { blogId },
}: {
params: { blogId : string};
}) {
const blog = await getDetail(blogId);
return (
<>
<p>{blog.title}</p>
<div dangerouslySetInnerHTML={{ __html: `${blog.body}` }} />
</>
)
}
CSSを追加してダークモードにも対応します。
VercelとGitHubリポジトリを連携してデプロイします。
今回はブログを作成していくところまでを担当しました。
ベースはできたと思うのでここからどうアレンジしていくかは皆様にお任せいたします!
自分が作成しているブログ(開発中)も見てくださると嬉しいです。