【プロジェクト名】
宿泊事業者向け補助金申請プラットフォーム開発プロジェクト
【プロジェクト概要】
持続可能な観光産業への転換を支援する公的施策の効率的な運用を実現するための宿泊事業者向け補助金申請プラットフォームの設計・開発プロジェクト。ゼロベースからの新規サービス立ち上げであり、複数のフェーズに細分化された短納期プロジェクトでした。
【開発手法】
アジャイル開発(段階的デリバリー方式)
【チーム情報】
・チーム構成:PM 1名、テックリード 1名、フロントエンドエンジニア 2名(自分含む)、バックエンドエンジニア 6名、QAエンジニア 2名
・自身の役割:実装者(技術選定、コーディング規約策定、コードレビューを担当)
・開発期間:6ヶ月(3フェーズに分割)
【担当業務内容】
フロントエンド開発(Laravel Blade, React.js, TypeScript)を担当
・Notionを活用した詳細な画面仕様書の設計・作成
・Laravel BladeとReact.js/TypeScriptを組み合わせたハイブリッド実装
・React Hook Form と Zod によるバリデーションの制御
・AxiosインスタンスやSWRを使用したデータフェッチ
・FLOCSS設計思想に基づくSCSSによる統一的なスタイリング
・フロントエンドの継続的改善および保守管理(バージョン管理含む)
・viteによるバージョン管理
・リンターの設定によるコード検証
⚪︎開発・実装内容A:フロントエンド設計と技術スタック構築
【概要】
プロジェクト初期段階でのフロントエンド技術スタックの選定と実装アーキテクチャの設計
【どのような機能の開発・実装か】
Laravel BladeとReact.jsを組み合わせたハイブリッド構成の設計と実装基盤構築
【課題・問題点】
・フェーズごとに既存システムとの互換性を保ちながら、モダンなUI/UXを提供する必要があった
・短納期での開発を実現するため、開発効率と保守性の両立が求められた
・チーム内でのTypeScriptの経験値にばらつきがあった
【打ち手・使用した技術】
・Laravel Bladeをベースにしつつ、動的なUIコンポーネントにはReact(TypeScript)を採用する構成を提案
技術選定の背景:
・MUIなどのUIライブラリによる初期表示のアクセアビリティの強化と直感的なUI/UXの構築実現
・コンポーネント単位での開発によるチーム間の並行作業効率化
・型安全性確保によるバグの早期発見
・Viteを導入し、開発効率の向上と安定的なバージョン管理を実現
・ESLint/Prettierによる厳格なコード品質管理と統一的なコーディングスタイルの確立
・TypeScriptの勉強会を実施し、チーム全体のスキルセットの向上に貢献
⚪︎開発・実装内容B:フォーム設計とバリデーション実装
【概要】
複雑な申請フォームの設計と実装、エラーハンドリングの整備
【どのような機能の開発・実装か】
宿泊事業者が補助金申請を行うための多段階フォームの実装と、厳密なバリデーション処理の構築
【課題・問題点】
・10ページ以上にわたる複雑な申請フォームを扱う必要があった
・バリデーションルールが複雑で、相互依存関係のあるフィールドの検証が必要だった
・バックエンドとフロントエンドの両方でバリデーションを整合させる必要があった
【打ち手・使用した技術】
React Hook FormとZodを組み合わせたバリデーション機構の構築
スキーマベースでのバリデーション定義により、フロントエンドとバックエンドで型定義を共有
設計思想:
・フォームの段階的保存機能の実装により、ユーザーフレンドリーな実装を目指した
・エラーメッセージのカスタマイズによるUX向上
・Zod schemaを活用した型安全なバリデーション実装
・実装したカスタムフックにより、フォーム間のデータ共有と状態管理を効率化
⚪︎開発・実装内容C:データフェッチ層の設計と実装
【概要】
APIとの通信ロジックの設計と実装、状態管理の最適化
【どのような機能の開発・実装か】
バックエンドAPIとの通信基盤の構築と、効率的なデータ取得・キャッシュ機構の実装(自身が設計・実装)
【課題・問題点】
・複数画面で同じデータを参照するケースが多く、API呼び出しの重複が懸念された
・APIレスポンスの構造が複雑で、型安全な取り扱いが必要だった
【打ち手・使用した技術】
AxiosのカスタムインスタンスとSWRを組み合わせた、型安全なデータフェッチ層の構築
設計方針:
・カスタムHookを作成し、コンポーネント間でのデータフェッチロジックを抽象化
・SWRのキャッシュ機構を活用した重複リクエストの最適化
・IndexedDBを活用したオフラインデータの永続化と同期処理の実装
・APIレスポンスのインターフェース定義によるTypeScriptの型安全性確保
実装の結果、ページロード時間を短縮、データ取得時のエラー発生の低減を実現
⚪︎開発・実装内容D:UI/UXデザインとスタイリング
【概要】
統一的なデザインシステムの構築とスタイリング実装
【どのような機能の開発・実装か】
FLOCSSに基づく設計思想を採用したSCSSフレームワークの構築とコンポーネントライブラリの実装(チーム全体で設計、自身がレビューと実装指導)
【課題・問題点】
・複数のステークホルダー(クライアント、システム管理者、エンドユーザー)向けに一貫したUXを提供する必要があった
・将来的な拡張性と保守性を考慮したCSS設計が求められた
・レスポンシブデザインへの対応が必須だった
【打ち手・使用した技術】
・FLOCSSアーキテクチャを基盤とした、明確な命名規則と構造化されたSCSSの実装
実装アプローチ:
・コンポーネント単位での再利用可能なスタイル定義
・変数とミックスインを活用した一貫性のあるデザイン要素の統一
・メディアクエリの戦略的な設計によるレスポンシブ対応
・Storybookを導入し、UIコンポーネントのカタログ化と視覚的テストの効率化
この取り組みにより、新機能の追加開発効率の向上に繋がり、デザインの一貫性が担保された。
⚪︎成果と評価
・重大なバグや不具合をほぼゼロに抑え、予定通りのサービスローンチを実現
・クライアントからの高い満足度を獲得
・チーム内でのTypeScriptとReactの実装方針が確立され、後続プロジェクトでも活用
・実装したコンポーネントライブラリは社内の他プロジェクトでも再利用される標準資産となった