# プロジェクト経験概要
プロジェクト名: 自社ERP ソリューション(人材、関連会社、生産ラインの統合管理)プロジェクト
担当フェーズ: 基本設計、詳細設計、開発、単体テスト
期間: 2022.04 ~ 2023.12
## 思考プロセス
本プロジェクトでは、以下の課題に直面していました:
- **既存のERPシステムの老朽化**: 10年以上使用されていたシステムで、技術的負債が蓄積していた
- **分断されたデータ管理**: 生産ライン、関連会社、人材管理が別々のシステムで運用されており、統合されたデータ分析やリアルタイムの情報共有が困難
- **手動プロセスによる非効率性**: 多くのデータ入力・更新が手動で行われ、業務負荷増大とヒューマンエラーの原因に
- **パフォーマンスの問題**: APIの最適化不足によりページの読み込み速度が遅く、ユーザー体験を損なっていた
これらの問題を分析した結果、単なる既存システムの改修ではなく、アーキテクチャから見直す必要があると判断しました。特に、ユーザー離脱率の高さ(30%)は業務効率に直接影響していたため、UX改善を最優先課題として設定。また、継続的な機能追加と保守を容易にするために、開発プロセス自体の改善も並行して進めることが重要だと考えました。
これらの課題を解決するため、以下のアプローチを採用しました:
1. SPA(Single Page Application)アーキテクチャの採用とSSR最適化によるパフォーマンス向上
2. マイクロサービス的なAPI設計による拡張性と保守性の確保
3. CI/CDパイプラインの構築による開発・デプロイプロセスの効率化
4. スクラム開発の導入によるイテレーティブな開発サイクルの確立
# チーム情報
## チーム規模: 13名
- PM: 1名
- 開発: 8名(内訳:バックエンド4名、フロントエンド4名)
- テスト: 3名
- デザイナー: 1名
## 自分の担当領域
サブリーダーとして以下を担当:
- 技術選定とアーキテクチャ設計(特にフロントエンド部分)
- 開発チームのタスク管理とスケジュール調整
- コードレビュー体制の構築と実施
- APIインターフェース設計
- 主要な機能モジュールの開発
# 開発・実装内容A (SPA・API最適化によるUX改善)
## 【概要】
ERPシステムのWebアプリケーションをモノリシックなサーバーサイドレンダリングからSPA(Single Page Application)アーキテクチャに刷新。Vue.jsを採用し、SSR(Server-Side Rendering)の最適化によりページ読み込み時間の短縮とユーザー体験の向上を実現。
## 【どのような機能の開発・実装か】
個人として以下を担当:
- Vue.jsとNuxt.jsを用いたSPAアーキテクチャの設計と実装
- SSRの最適化(Nuxt.jsのasyncDataを活用したデータプリフェッチ)
- REST APIとGraphQLを組み合わせたバックエンドインターフェースの設計
- コンポーネント設計とVuexによる状態管理パターンの確立
## 【課題・問題点】
- 既存システムはサーバーサイドレンダリングが最適化されておらず、ページのリロード時間が15秒以上かかっていた
- 複数のAPIを連続して呼び出す必要があり、画面表示までの時間が長く、ウォーターフォール問題が発生
- 頻繁にアクセスされるデータに対しても毎回DBクエリが実行され、バックエンドへの負荷が高かった
- ブラウザキャッシュの活用が不十分で、同じデータを何度もロードしていた
## 【打ち手・使用した技術】
個人として以下の対策を実施:
- **SSRの最適化**: Nuxt.jsの導入とasyncDataを活用し、初期レンダリング時にサーバーサイドでデータを取得することで、クライアント側の初期表示を高速化
- **APIの集約**: GraphQLを一部導入し、複数リソースの取得を1リクエストに集約(従来の7回のAPI呼び出しを1回に削減)
- **キャッシング戦略の導入**:
- バックエンドではRedisを導入し、頻繁にアクセスされるデータをキャッシュ化
- フロントエンドではVuexストアを活用し、セッション中のデータ再利用を促進
- HTTP ETagとConditional Requestsの実装によるネットワークトラフィックの削減
- **レスポンシブデザインの改善**: データ量の多い表示画面を分割表示に変更し、レンダリング負荷を分散
## 【成果】
- ページのリロード時間を15秒→3秒に短縮(約80%削減)
- APIの最適化とGraphQL導入により、ユーザーの離脱率を30%→8%に改善
- バックエンドの負荷を平均60%軽減し、サーバーリソースの効率的な利用を実現
- モバイルデバイスからのアクセス率が25%向上(レスポンシブデザイン改善による)
# 開発・実装内容B (CI/CD & デプロイ自動化)
## 【概要】
Docker + Jenkins + GitLabを活用したCI/CDパイプラインの構築。開発からテスト、デプロイまでの全プロセスを自動化し、開発サイクルの短縮とリリース品質の向上を実現。
## 【どのような機能の開発・実装か】
個人として以下を担当:
- Jenkins + Docker + GitLab CIによるCI/CDパイプラインの設計と構築
- Spring BootアプリケーションのDockerコンテナ化とオーケストレーション
- 環境ごとの設定を管理するための仕組み構築(Dev/Staging/Production)
- 自動テスト(単体・結合・E2E)の導入とパイプラインへの組み込み
## 【課題・問題点】
- 従来は手動デプロイで、環境ごとの設定変更が必要で、設定ミスによるデプロイ失敗が月平均5回発生
- テスト環境と本番環境の構成差異により、環境依存のバグが頻発
- リリースごとにQAチームの手動テストが必要で、リリースサイクルが長期化(平均4週間)
- ブランチ管理が標準化されておらず、マージ作業に時間がかかっていた
## 【打ち手・使用した技術】
個人として以下の対策を実施:
- **CI/CDの自動化**:
- JenkinsとGitLab CIを連携させ、コミットからデプロイまでの自動化パイプラインを構築
- Docker Composeを活用し、アプリケーション、DBなど全環境を一貫して管理できるよう設計
- **環境の統一化**:
- 環境変数を.envファイルに集約し、Docker環境間での設定共有を実現
- Terraformを導入し、インフラ構成をコード化(IaC)して環境間の一貫性を確保
- **自動テストの拡充**:
- JUnitによる単体テスト、RestAssuredによるAPI結合テスト、Seleniumを使用したE2Eテストを自動化
- テストカバレッジを計測し、80%以上を維持する仕組みを導入(JaCoCo活用)
- **Git-FlowとGitLab Flow**:
- ブランチ戦略を明確化し、feature/develop/master構成のワークフローを確立
- マージリクエストに対する自動テストと複数人によるレビュー必須化
## 【成果】
- デプロイにかかる時間を30分→5分に短縮(約83%削減)
- デプロイ失敗率を月平均5回→0.5回に削減(90%改善)
- リリースサイクルを4週間→1週間に短縮(75%削減)
- テスト工数を50%削減し、QAチームがより専門的なテストに集中できる環境を整備
- 環境差異に起因するバグの発生を95%削減
# 開発・実装内容C (データ統合・分析基盤の構築)
## 【概要】
複数システムに分散していた生産ライン、関連会社、人材データを統合的に管理・分析する基盤を構築。リアルタイムダッシュボードによる意思決定支援機能を実現。
## 【どのような機能の開発・実装か】
個人として以下を担当:
- データウェアハウス設計とETLプロセスの構築
- 分析用APIの設計と実装(集計・予測機能)
- リアルタイムダッシュボード用のバックエンド処理
- バッチ処理の最適化と定期実行の仕組み構築
## 【課題・問題点】
- データソースが5つのシステムに分散し、横断的な分析が困難
- レポート生成に平均3日を要し、意思決定の遅延を招いていた
- 分析用クエリの実行がトランザクション処理に干渉し、システム全体の応答性が低下
- ユーザーごとに異なるデータアクセス権限の管理が複雑化
## 【打ち手・使用した技術】
個人として以下の対策を実施:
- **データ統合アーキテクチャ**:
- PostgreSQLをメインDBとして採用し、読み取り処理と書き込み処理を分離(CQRS原則)
- 夜間バッチ処理でデータを集約・前処理し、分析用のマテリアライズドビューを作成
- **パフォーマンス最適化**:
- 頻出クエリのインデックス最適化(実行計画分析による)
- 大量データ処理のためのPartitioningを実装
- **セキュリティとアクセス制御**:
- Row-Level Securityを実装し、ユーザーロールに基づいたデータアクセス制御を強化
- 機密データを自動的にマスキングする仕組みを導入
- **リアルタイム連携**:
- Websocketを活用したリアルタイム通知システム構築
- 重要指標の変化を検知し、関連部署に自動通知する仕組みを実装
## 【成果】
- レポート生成時間を3日→10分に短縮(99%以上の時間削減)
- データ分析基盤の導入により、在庫最適化で年間約2,000万円のコスト削減を実現
- システム全体のパフォーマンスを維持しながら、分析機能を提供(読み取り分離による)
- 部署間のリアルタイム情報共有が可能になり、意思決定サイクルが大幅に短縮(平均70%)
# 実績・取り組み
✅ **UX/パフォーマンス改善**
- SPA + SSR最適化により、ページ読み込み時間を80%短縮
- API設計の改善でユーザー離脱率を30%→8%に低減
✅ **CI/CD導入による開発効率化**
- Docker + Jenkins + GitLab CIによるパイプライン構築
- リリースサイクルを4週間→1週間に短縮(75%削減)
✅ **データ統合・分析基盤の構築**
- 複数システムのデータを統合し、リアルタイム分析基盤を実現
- レポート生成時間を3日→10分に短縮
✅ **スクラム開発の導入・定着**
- Jiraを活用したスプリント管理の導入
- 開発期間を当初計画より2ヶ月短縮
✅ **ナレッジ共有基盤の構築**
- Notionを活用したドキュメント整備とチーム内ナレッジ共有
- オンボーディング期間を2週間→3日に短縮
# 技術スタック
✅ **OS**: Windows Server 2019, Linux (Ubuntu)
✅ **言語**: Java 17, JavaScript/TypeScript, Kotlin, HTML5, CSS3/SCSS
✅ **フレームワーク**: Vue.js 3, Nuxt.js, Spring Boot 2.7
✅ **DB**: PostgreSQL 14, MS-SQL 2019, Redis 6
✅ **インフラ**: Docker, Kubernetes, Jenkins, GitLab CI/CD, AWS (EC2, S3, RDS)
✅ **ツール**: Swagger, Jira, Slack, Git, Figma, JUnit, Selenium, JaCoCo