【ソースコード公開】Next.js, Chakra UI, microCMS でJamstackなブログを開発しました
Next.js、Chakra UI 、microCMS、TypeScriptを使って本ブログを作成したのできっかけと概要について書いています。
ソースコード
以下で公開しています。Next.js(version: 13, App Router), Chakra UI, microCMS を使って個人ブログを作りたい、という方にとって以下のソースコードが参考になれば幸いです。
https://github.com/tkugimot/nextjs-microcms-blog-handson
実装した機能
- ホーム(記事一覧ページ)
- 記事詳細ページ
- ライトモード/ダークモード切り替え
- 多言語対応(日本語と英語)
- タグ
実装しなかった機能
- ページング
- 検索
個人的にページングが見辛くてあまり好きではないですし、microCMSからは100件取るようにしていますし、SSGなのでそれほど重くなることもないでしょうし、少なくとも最初から実装する必要はないかなと思いました。90件記事を書くような時期がきたら実装しようかなと思います。
検索については最初は実装していたのですがこれもパフォーマンス的にイマイチですし、ブログ内の記事が少ない内は不要かなと思いました。
技術スタック
項目 | 技術 | 選んだ理由 |
---|---|---|
フレームワーク | Next.js (version: 13, App Router) | 仕事で使っていた。ドキュメントが充実している。 |
CMS (Contents Management System) | ||
ホスティングサービス | 使い方が簡単。広告の導入が可能。 | |
言語 | 型を使って安全に開発したい。 | |
UIライブラリ | UIライブラリを使って楽したい。ドキュメントが充実している。 | |
ドメイン | 営業メールが全然来ない。 | |
ソースコード管理 | 他を使う理由がない。 |
※ microCMSはまだ日本語でのサポートがメインですが、管理画面は英語でも利用できるようです。
構成
簡単ですがこんな感じの構成になっています。
すみません、図で上手く表現できていませんが、Userからのアクセスの際にはmicroCMSまでリクエストは届かず、build時に静的なコンテンツを生成しています。
Next.jsのappのソースコードをGitHubのmainブランチに反映した時、またはmicroCMSのコンテンツを更新した際に、Netfliy側でbuild -> deployまで走ります。
上記の図を生成した PlantUML のソースコードを一応置いておきます。
@startuml
actor User as user
cloud Internet {
rectangle Browser as browser
rectangle DNS_Server as dns
cloud Netlify {
rectangle Next.js as app
}
rectangle microCMS as microcms
note bottom: SSG(Get contents during the build process)
rectangle GitHub as github
}
user -right-> browser
browser -down-> dns
dns -up-> browser
browser -right-> app
app -left-> browser
browser -left-> user
app -down-> microcms
microcms -left-> app
app -down-> github
github -up-> app
@enduml
本ブログ開設にかかった費用
1円。zubora-code.netのドメイン代のみ。
本ブログを開発したきっかけ
「SOFT SKILLS ソフトウェア開発者の人生マニュアル 第2版」 を読んで、ちゃんと発信しようという気持ちにさせられました。詳しくは以下に書評を書いてますのでもし興味があればご一読ください。
https://zubora-code.net/ja/articles/bookreview_softskills
最後に
本当は本ブログの開発過程を詳細に本ブログに記録してハンズオン形式のチュートリアルを書こうと思っていたのですが、段々と雑になって質の低い記事になってしまいそうだったので、もう少し時間が取れる時に丁寧に書きたいと思います。