## プロジェクト概要
最新技術を活用した自社SaaSプロダクトの全面リニューアルと機能強化を推進し、ユーザビリティと開発効率の向上を実現しました。
## 役割・体制
### 自身のポジションと役割
- フロントエンド・バックエンド・インフラの設計・開発・テスト・リリースを担当し、技術選定のリード役として、最新の技術スタック導入を推進しました。
- 開発工程全体において、アジャイルな開発手法の中で、要件定義から運用・保守までの一連の工程をリードし、チームメンバー間の連携や進捗管理を行いました。
- また、インフラ設計と実装にも関与し、『[AIが推測]Kubernetes、Azure Web Apps、Azure Functionsを活用したスケーラブルなインフラ構築』を担当しました。
- 技術的な課題やソースコードのコンフリクト問題に対して、Gitフローのルール整備やCI/CD自動リリースの導入を推進し、開発の品質向上と効率化を実現しました。
### チーム規模と構成
- エンジニア20名(内5名のBP)、デザイナー3名(内2名のBP)、インフラエンジニア1名の合計24名のチームの一員として、リソース調整や技術支援を行いながら、プロジェクト推進に貢献しました。
- チーム内での役割分担により、開発・設計・テスト・運用の各フェーズを効率良く進める体制を整えました。
## 背景・課題
- 既存のSaaSサービスが古くなった技術スタックや拡張性の低さ、UI/UXの使いにくさにより、顧客満足度と競争優位性の低下が懸念されていました。
- 技術刷新とともに、複数の開発チームが並行して新機能の追加・改善を行う必要があり、リソースやソースコードの管理に課題がありました。
- 特にソースコードのコンフリクト頻発や、スケーラブルなインフラの設計・運用に関する技術的課題が最大の障壁であり、これらを解決しつつ、スピーディに安定したリリースを行う必要がありました。
- また、従来のリリース手法では段階的なリリースや迅速なフィードバック取得が困難なため、柔軟なリリースサイクルの構築も求められました。
- 技術の学習と導入、リソース確保、スケジュール調整の両立が最大の課題でした。
## 実際の取り組み
### 開発環境
- React/TypeScriptによるフロントエンド開発と、Next.jsを用いたサーバーサイドレンダリングを採用し、UI/UXの向上とパフォーマンス最適化を図りました。
- バックエンドには、Node.jsベースのHasuraとPostgreSQLを連携させ、効率的なデータ管理とGraphQL APIの高速化を実現しました。
- インフラは、Kubernetesを用いたコンテナオーケストレーションと、Azure Web Apps、Azure Functionsを組み合わせ、高い可用性とスケーラビリティを確保しました。
- GitHub Actionsを用いたCI/CDパイプラインを整備し、自動ビルド・テスト・デプロイの仕組みを導入して、リリースの自動化と品質維持を実現しています。
### 設計・改善内容
- 開発効率向上とソースコードの整合性確保のため、]Gitフローのルール策定とレビュー体制の徹底を実施しました。
- ソースコンフリクトの頻発に対応し、長期ブランチの放置を防止するため、定期的なマージタイミングとブランチ運用のルール化を行いました。
- CI/CDの自動テスト導入により、マージ前に不具合を検知し、品質を担保しました。
- 技術学習を促進するため、社内勉強会やナレッジ共有会を開催し、チーム全体の技術力向上と情報共有を推進しました。
- 顧客からの要望やスケジュールに柔軟に対応できるよう、段階的リリースを導入し、リリースリスクの低減と、迅速なフィードバックの取得を実現しました。
### その他アピールポイント
- Azure Functionsを活用したサーバーレスアーキテクチャにより、インフラコストの最適化とシステムの自動スケールを実現し、安定性とコスト効率を両立させました。
- Hasuraをフロントエンドと連携させることで、GraphQL APIの高速化と開発効率の向上を図り、フロントとバックエンドの連携がスムーズに行える仕組みを整備しました。
- また、Azureのセキュリティ機能を適用し、認証・認可の強化とともに、Azure Entra IDを利用したSSOの導入により、セキュリティ向上とユーザビリティの両立を実現しています。
## 成果・価値
- 開発効率は、ソースコードのコンフリクトや作業重複の削減により、向上しました。
- 技術調査とナレッジ共有の取り組みを通じて、新技術導入の立ち上がり期間が短縮され、安定したリリースサイクルを確立できました。
- チームの開発速度と品質向上により、リリースサイクルの短縮と安定性の向上を達成し、顧客満足度が向上しました。
- さらに、リソース調整とリリースの段階化により、複数プロジェクトの管理負荷やソースコンフリクトの発生が大幅に減少し、開発効率がアップしました。
- これらの改善により、リリースの安定性と品質が向上し、結果的に顧客からの信頼獲得と、ビジネスの成長に寄与しました。