**① どんなサービス・システムか**
自動車部品メーカーの製造現場向けの**生産管理システム**です。これまで紙とExcelで管理していた作業日報、不良報告、稟議や予算などの各種申請を、製造ラインのタブレットから直接入力できるようにし、管理側で**リアルタイムに集計・可視化**できるシステムです。
**② あなたは何を担当したか**
5名体制(PM1名、エンジニア4名)のチームにおいて、私は**フロントエンドとバックエンドの設計主担当**として参画しました。フロントエンドとバックエンドのアーキテクチャ設計をリードしつつ、コーディング標準の策定やジュニアエンジニアのコードレビュー・メンタリングを実施しました。
また、画面の実装にとどまらず、**GraphQL**を通じたデータ連携や**NestJS**でのバックエンド実装、**Terraform**を用いた**AWS**インフラの自動化にも横断的に関与しました。
**③ どんな技術を用いたか**
- **React / Feature-Sliced Design (FSD)**: 製造現場のタブレット向け入力画面や管理用ダッシュボードの構築で使用。画面拡張に耐えうるスケーラブルなフロントエンドアーキテクチャとしてFSDを設計・導入しました。
- **GraphQL**: フロントエンドとバックエンド間の柔軟なデータ通信に利用。作業日報や申請データの複雑な取得・更新APIを統合しました。
- **NestJS**: 稟議や予算申請など、多段階のワークフローを持つバックエンドロジックの実装を担当しました。
- **AWS / Terraform**: システム全体のデプロイメント環境の構築およびIaC(Infrastructure as Code)化によるインフラ運用の改善・自動化に用いました。
**④ どんな機能を開発したか**
作業日報、不良報告、各種申請(稟議・予算など)、分析画面を開発しました。また、管理側が日々の業務状況を把握するための**リアルタイム可視化ダッシュボード**を実装しました。
**⑤ どんな課題に取り組んだか**
当初は日報と品質チェックのみの想定でしたが、開発途中で各種申請や分析機能へと要件が拡大し、影響はUIとサーバーの両方に及びました。フロントエンドでは、増え続ける入力項目や画面ごとに異なるバリデーションにより、コンポーネントの依存関係が肥大化する懸念がありました。同時にバックエンドでも、要件が変わりやすい多段階の承認フロー(稟議や予算など)によってNestJSのビジネスロジックが複雑化の限界を迎え、GraphQLのスキーマも不要なリレーションで肥大化するリスクが生じていました。**UIとサーバーの両面で、システムが破綻しないように構造を根本から整理する必要**がありました。
**⑥ どんな工夫をしたか**
フロントエンドとバックエンドの双方でアーキテクチャを見直しました。**フロントエンド**にはFeature-Sliced Design (FSD) を導入し、共通化すべき処理と画面固有の処理を明確に分離して不要な条件分岐を防ぎました。**バックエンド(NestJS)**では、肥大化を防ぐために各モジュールをドメインごとに厳格に分割しました。特に複雑な申請ワークフローの処理サービスを独立・カプセル化することで、あるロジックの変更が他の機能やGraphQLスキーマの複雑さに影響を及ぼさない、**疎結合な設計**を実現しました。
**⑦ どんな成果を出したか**
複雑な既存画面への影響を抑えながら、リリースから一年以上(三次フェーズまで)**安定して継続開発を行える基盤を構築**しました。また、システムの導入とリアルタイムダッシュボードの活用により、クライアントの日次業務モニタリング時間を**約40%削減**することに成功しました。