# プロジェクトの概要
既存のRailsアプリケーションにおけるフロントエンド部分を、Next.js と TypeScript を用いてフルリニューアルしたプロジェクトです。技術負債の解消と表示速度の改善を主な目的とし、UIの刷新とともにコンテンツ管理の体制も見直しました。
# 背景と目的
長年運用されてきたRailsベースのアプリは、JavaScriptのスパゲッティ化や保守の難しさが課題となっていました。また、表示速度の遅さやSEO対応の限界もあり、モダンなフロントエンドフレームワークへの移行が急務でした。
# チーム構成、担当した役割
- エンジニア:2名
- デザイナー:1名
エンジニアチームにはNext.jsやTypeScriptの知見がほとんどない状態からのスタートでしたが、各自がキャッチアップを進めつつ実装に取り組みました。
## 開発・実装内容A:記事コンテンツ部分の移行と表示ロジックの構築
【概要】
従来のRails管理画面で管理されていた記事コンテンツを、外部CMS(microCMS)へ移行し、表示ロジックをNext.js/TypeScriptで再実装しました。
【どのような機能の開発・実装か】
microCMS から取得したデータを使った動的ルーティングの記事一覧・詳細ページの構築
構造化データ(JSON-LD)やOGPなどSEO要件を満たす表示構成の設計
コンテンツ更新時のWebhookを使ったrevalidationの仕組み構
こちらは私が主体となり設計・実装まで行いました。
【課題・問題点】
microCMS導入による従来運用フローとのギャップ
ビジネスサイドからの入稿レイアウトの希望とデザイナーとのディレクション
表示速度と最新性の両立(静的生成とリアルタイム更新のバランス)
【打ち手・使用した技術】
API取得のキャッシュ層を設け、fallback時のローディング状態やエラーハンドリングを柔軟に対応
Webhook による再検証APIのエンドポイントをNext.js側で実装
OGP対応:next/head + getServerSidePropsを併用したメタ情報注入
## 開発・実装内容B:UI設計およびチーム連携体制の構築
【概要】
UIリニューアルに際し、デザイナーと密に連携しながら新しいデザインシステムのベースをフロント側に実装しました。
【どのような機能の開発・実装か】
コンポーネントベース設計(Atomic Designベース)での共通UIの構築
デザイナーとのFigma連携によるUIブレの吸収とルール整備(Storybook活用)
これらはチーム全体で設計・分担実装し、私は主に記事表示UIとその派生コンポーネントを担当しました。
特に、デザイナーがデザインしたコンポーネントを抽象化し、汎用性を意識した形で再設計・実装することに注力しました。
【課題・問題点】
Next.js初心者が多く、再利用性の高いコンポーネントの設計方針がバラバラになりやすい
デザイン上の命名やprops設計ルールが未整備
【打ち手・使用した技術】
UIルールの整備:Props名・スタイル適用方針のドキュメント化
Storybook によるUI一覧・テスト可能なコンポーネント管理
tailwind.config.jsでのカスタムデザイントークン定義
共通ユーティリティ(フォーマット関数など)を lib/ 配下に集約
# 成果
- パフォーマンス改善:Search Consoleの指標が向上しました。
- 運用負荷の軽減:外部CMSへの移行により、非エンジニアでも記事更新が可能になり、運用チームの負担を大幅に軽減。
- 保守性向上:TypeScriptによる型安全とNext.jsのファイルベースルーティングにより、機能追加や修正が容易になりました。
# 思考プロセス
「既存仕様をNext.jsに置き換える」のではなく、「どの@`ようにすれば運用と表示品質の両立ができるか」を常に問い直しながら設計
検索エンジンや更新頻度、コンテンツ運用担当のリソースも考慮し再検証のバランス設計を提案
UIにおいてもFigmaだけでなく、実際のユーザー操作を想定したモック動作をデザイナーと共有して設計