
🚪はじめに
管理人のTKGです。
今回は Next.js とヘッドレスCMSを組み合わせてブログを構築しました。
本記事ではその背景や全体の開発フロー、詰まりポイントなどの概要をご紹介します。
※ 各技術や工程の詳細については、今後投稿予定の個別記事にて解説予定です。
🎯想定読者
- Next.jsを使ってブログサイトを作ってみたい方
- ヘッドレスCMSに興味があり、導入の雰囲気をつかみたい方
- フロントエンドを中心としたブログ制作の流れを把握したい方
📘本記事でわかること
- Next.js + CMSを使ったブログ制作の全体像
- 技術スタックの選定理由
- 詰まりポイントとその乗り越え方
🧭作成背景
- 発信基盤の構築
- 自身の技術検証・実装の記録を外部公開する場として、ブログを立ち上げ。
- ヘッドレスCMS活用の検証
- コンテンツとプレゼンテーションを分離する構成が、自身や将来の案件で応用できるかを検証。
- Jamstackの理解深化
- 静的生成・API連携のアーキテクチャ思想を体感するため。
🧱使用技術スタック
🧑💻 フロントエンド
- Next.js(v14.1.4)
- 使い慣れたApp Router構成で開発が可能であり、 SSG/SSRの柔軟な選択が可能で、CMSとの連携に適していたため採用
- React(v18.2.0)
- 特にこだわりはなく、新しい安定版を採用。
- TypeScript(v5.8.2)
- 型安全なコードベースによるバグ抑制と保守性の向上のため採用
🗃 CMS(コンテンツ管理)
- Newt
- 以下3点の理由のため採用
- UIが直感的でわかりやすい
- 日本語ドキュメントが充実しており学習コストが低い
- 無料プランが充実
- 以下3点の理由のため採用
補助ライブラリ・API関連
- react-google-recaptcha
- reCAPTCHAによるスパム対策のため採用
- resend
- 問い合わせ通知用に採用
🚀 ホスティング
- Vercel
- 自動ビルド&デプロイが可能でNext.jsの開発元が提供しているサービスのため採用
📝開発の流れと進行ログ
- 要件定義と構成検討
- カテゴリや著者、タグなどの構成を設計
- Newtでモデル定義とコンテンツ投入
- スターターキットを活用し、テストコンテンツを投稿
- Next.jsでのデータ取得実装
- APIトークン管理、ルーティング設計、動的ルーティング導入(
[slug]
)
- APIトークン管理、ルーティング設計、動的ルーティング導入(
- 各ページのUI修正&機能追加
- 要件定義で設計した
- ビルド&デプロイ(Vercel)
- パフォーマンス確認&meta情報などの最適化
🧩詰まりポイント(抜粋)
- レンダリング方式の罠
- App Router構成では Server Components がデフォルトとなるため、クライアント側の処理(useEffectやwindow依存コード)が動作しないケースが発生 ⇒コンポーネントの切り分けを実施し、レンダリング方式を整理することで対応
- 動的ルーティングのビルドタイミング
- CMS連携による slug ベースの記事ページ(例:/articles/[slug])で、記事データが取得できず404になる、または params.slug が未定義となるケースが発生 ⇒必要に応じて revalidate を設定して ISR(Incremental Static Regeneration)を採用することで対応
📂投稿予定の記事
- Newtでのモデル設計とAPI連携の流れ
- 各ページの設計の考え方と実装手順
- 設計初期でのレンダリング方式の見極め方
📦成果物&GitHub
Share this post