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