## 概要
既存のWebアプリをフルリニューアルする必要があったため、行なったプロジェクト。
## チーム情報
PL: 1人
ディレクター: 3人
デザイナー: 2人
システムエンジニア: 4人
フロントエンドエンジニア: 5人
## 担当役割
フロントエンドエンジニアのテックリードとして参画し、以下を担当しました。
- Next,js(アプリケーション部分) + React.js(コンポーネント部分)の切り分けのため、 Nx(monorepo)を使用して、0から環境を構築
- コードレビュー・実装のフォロー
- 「システムエンジニア」が作成した仕様書・「ディレクター」が作成したワイヤーフレームをもとにページの実装
- デザイナーと協力してコンポーネントが提供する機能の仕様作成・コンポーネントの分類
## 使用技術
- Next.js
- React.js
- TypeScript
- Nx(monorepo)
- React Hook Form
- Yup
- SCSS
- ESLint
- Stylelint
- Prettier
- Atomic Design
## 課題
以下のような課題があり、プロジェクトにアサインに至った。
- 長年運用されていたWebサイトのため、レスポンシブデザイン等にはなっておらずスマートフォンユーザーに対して適切なUIが提供されていない事象になっていた。
- フロントエンド周りが昔の技術から変更がされていなかったため、ページのパフォーマンスや状態管理、インプットの使い勝手などフロントエンド部分の最適化がされていない状態になっていた。
## 取り組み
1. フルリニューアルにあたって、フォーム周りの状態管理やSEO、コンポーネントベースでの開発ができるようにフレームワーク + SSR環境にすることができるようにNext.js + React Hook Form + Yupを採用することでユーザーの入力したフォームの最適化やページのパフォーマンスの最適化を行いました。
2. CMS周りで運用されているページも存在したため、HTMLを生成し、CMS領域に反映する必要があったため、Next.jsとは別にReact.jsの環境のアプリケーションについても環境を構築することでコンポーネントはNext.jsのものと統一化することで開発効率が落ちることなく生産する環境を作りました。
3. ESLint, Stylelint, Prettierを導入することで、コードのフォーマットや記載ルールを意識することなく機械側で確認・修正を行うことができるようにすることで、品質担保・スピード感の両方を行えるようにしました。
## 工夫した点
1. Next.js, React.jsで別のアプリケーション上で同じコンポーネントを使用するためNx(monorepo)を利用しました。このようにすることで1つのリポジトリ上で管理を行うことができるため、アプリ間でのバージョン差異等を発生させないことで品質を管理しやすいように心がけました。
2. 新しく入ったメンバーや海外で働いているメンバーもいたため、コードのフォーマットや記載ルールのドキュメント等を作成するよりもESLint, Stylelint, Prettierを用いて機械ができることを機械に任せることでレビューコストの削減を行うことができるように心がけました。これにより、品質担保・スピード感の両方を同時に行うことができました。