# プロジェクト概要
## 目的・背景
会員情報登録・変更の導線のUI/UXの向上を図ること、レガシーな技術を刷新することを目的としたプロジェクトです。
## 役割
フロントエンドとバックエンドの開発で、チームは5人ほどでした。チーム内ではプロジェクトのリーダーとして主にフロントエンドの開発に従事しました。
## 使用技術
フロントエンドは、TypeScript、React.js、Next.jsで開発を進めて、デザインツールはFigmaを使いました。バックエンドはPerlでした。DBMSはMySQLで、プロキシサーバーとしてNginxを採用していました。
# 取り組んだ課題
途中からの参画でしたが、仕様に不明確な点が多く、特に会員情報の変更の導線に関して変更点が多くありました。そのため、顧客と綿密に会話を重ねながら仕様を見直して、プログラムの設計を変更しながら進めました。
## 会員パターンついて
会員変更については、会員のパターンが多くあることが課題でした。会員種別が無料会員、有料会員、クーポン利用会員、アプリ利用会員で、会員の状態を含めると15パターンあり、今後も変更が必要になることが予想されるため、TypeScriptの型定義で1箇所で管理できるように工夫しました。
## 課金登録のフロー
課金手段はクレジットカード、キャリア決済、クーポン利用など多様にありました。また、会員のパターンとして支払状況による分岐が必要でした。条件分岐が複雑化したり、1つのファイルが肥大化する傾向にあったため、コードの可読性、処理の再利用性に留意して責務を適切に分けるように進めました。
# 取り組みの成果
リリース後は大きな不具合は見られず落ち着いた運用を行うことができています。また、仕様変更が行われることが度々ありましたが、素早い対応が可能でした。可読性、再利用性、責務など基本的なことに留意したプログラムの作成に努めたことや、使用に関して顧客と会話を重ねたことが要因かと思います。
技術的には、SEOに配慮する必要のない動線であるため、Next.jsのSSGを利用しており、動的に変化するパスも可能な限り事前に設定するようにしています。そのため、素早く画面を表示することができています。また、グローバルな状態管理(Context API)を使って、ブラウザの「戻る」や「進む」の操作をおこなった際にも入力したデータが復元されるようにしています。