Logo

My portfolio

Webアプリ

デザイン・実装両面のスキルを提示することを目的とした、自身のポートフォリオサイトを作成した。App RouterベースのNext.jsとmicroCMSを組み合わせており、CMSから案件データや自己紹介文を取得し動的ルーティングによって各詳細ページを構成している。

My portfolio

使用言語

Next.js、 TypeScript、 React

期間

2025/06 - 2025/07

クライアント

役割

Frontend Development、 UI Design

チーム構成

使用技術

Next.js、TypeScript、React

Objectives

前回のポートフォリオではhtml, scss, jqueryを用いてハードコーディングしていたため、新しい案件を追加するたびに手動でコードを編集する必要があり運用の負担が大きかった。
なので今回はmicroCMSとNext.jsを組み合わせ、ノーコードで柔軟にコンテンツを管理・反映できる仕組みに刷新した。

Key Features

App RouterベースのNext.jsを用いて、CMSから取得した情報に応じた動的ルーティングを実現している。
自己紹介ページや案件の詳細情報はmicroCMSで管理されており、API経由で取得して各ページに反映される。リッチテキストには独自のレンダラーを実装することで、見出し・リスト・リンクなどの装飾表現にも柔軟に対応可能な構成とした。

microCMSのリッチエディタ内をCSSでどう装飾するか

microCMSのリッチエディタ内の装飾方法は、今回最も悩んだポイントだった。リッチテキストはHTML形式で提供されるため、単純に dangerouslySetInnerHTML を使うだけではデザインの一貫性や拡張性に課題があった。
最終的に、HTMLを構文解析する html-react-parser を用いて、要素ごとに独自のクラスや構造を与える方法を採用。これにより、柔軟なCSS設計が可能となり、見出しやリスト、強調表現なども一貫してスタイリングできるようになった。

詳細な対応は下記の記事にまとめている。
microCMSのリッチエディタ内をCSSで装飾する方法【html-react-parser】

技術スタック

フレームワーク

Next.js (App Router)

言語

React、TypeScript

スタイリング

Tailwind CSS

ビルドツール / 開発環境

Turbopack

テスト

Jest, React Testing Library

デプロイ

Vercel

CMS

microCMS

UX

Client ComponentとServer Componentを適切に分離し、不要なJavaScriptの読み込みを抑制。ナビゲーションやコンテンツロードもストレスなく行える構成とした。CMS側でコンテンツ構造を設計し、非エンジニアでも更新できる仕組みを実現。

Next Step

アニメーションの導入や多言語対応など、より広い読者に対応できるよう継続的に改善予定。
他の案件も見る

Case Studies