## プロジェクト概要(目的・人数・体制)
既存の経費精算システムからフロントエンドを独立させ、技術的負債を解消する新規プロダクトの開発を担当しました。開発はスクラム方式で行われ、チームはフロントエンドエンジニア5名、デザイナー1名、バックエンドエンジニア2名で構成されていました。私はフロントエンドエンジニアとして参加しました。
## プロジェクトにおける自身の役割
機能開発において、詳細設計、実装、レビュー、QA、デザイナーとのコミュニケーションを一貫して担当しました。また、自分の強みであるアクセシビリティやスタイリングに関する知見をチームメンバーと共有し、レビューを通じて最適な実装になるよう努めました。
## 当時の背景 / 抱えていた課題
システム誕生から約6年が経過していたため、当時の技術的選択が古くなるなど、さまざまな課題がありました。例えば、Rails依存のCoffeeScriptによるフロントエンド実装、不十分なテストによる不安定な品質確認、レガシー技術による開発者のモチベーション低下、バックエンドとの密結合などです。これらの課題を解決するために、新規リポジトリを作成し、Next.jsとTypeScriptによるフロントエンドを実装し、画面ごとに置き換えるプロジェクトを行いました。
## 課題に対して自信が発揮したバリュー及び成果
はじめはプロジェクトが検証段階にあったので、機能要件をなるべく最小限に絞り、コンパクトなリリースを目指しました。そのため、PdMやデザイナーと定期的にコミュニケーションを取り、「これは技術的なモダナイズであり、出力レベルのリプレイスではない」という共通認識を持つよう心がけました。また、デザインシステムの整備が並行して進行中であったため、UIデザインのレビューやエンジニア視点でのUI最適化・実装方法の提案を行いました。
アクセシビリティの改善には、UIコンポーネントライブラリとしてRadix UIを採用し、開発者のスキルに依らず一定の品質を保つためにeslint-plugin-jsx-a11yとMarkuplintを導入しました。さらに、カラーコントラストなどのアクセシビリティチェックを行うために@axe-core/playwrightを導入し、アクセシビリティテストを実装しました。また、CSS Modulesを使用して、ライブラリに依存しないスケーラブルで簡潔なスタイリングを実現し、静的コード解析ツールとしてSonarQubeを導入するなど、さまざまな品質向上に寄与しました。
## 執筆記事
技術書展マーケットでの「[Money Forward TechBook #8](https://techbookfest.org/product/p0VNvfTRW6xNEMpjhLpXTV?productVariantID=rvSvNCmTBNkYWy9BifD9bG)」で、こちらの分離プロジェクトで行ったアクセシビリティ改善活動について「アクセシブルなプロダクトを提供するための取り組み」という題目で執筆しました。
以下の記事は、プロジェクト関連の記事になります。
- [aria-labelで始める、アクセシビリティ改善活動](https://zenn.dev/moneyforward/articles/b5c9b060cf9237)
- [marginではなく、レイアウトを指定しよう(レイアウト手法 Stack、Clusterの紹介)](https://zenn.dev/moneyforward/articles/075a74334ca512)
- [href="#"のみの指定はやめよう(フォーカス移動の問題点)](https://zenn.dev/moneyforward/articles/18c45ef93815dd)
- [画像が「情報」を持っているかどうかの判断基準、持っていない場合はalt=""を指定しよう](https://zenn.dev/moneyforward/articles/bc93f64ba4d36a)