## プロジェクト概要
### 目的、背景
**開発対象:** ショップオーナー向け情報管理サイトとエンドユーザー向けグルメ予約サイトを統合した大規模ECプラットフォーム。
### 規模感、チーム構成、担当した役割
- **プロジェクト規模:** 全体で50~100名、エンジニアリングチームは約30名
- **サブチーム構成:** 6つのサブチーム(グルメ、通販、ウェブチケット、ビューティー、ファーム、モバイルアプリ)
- **私の役割:**
2022年4月 - 11月: ウェブチケットサブモジュールにてシステムエンジニア (SE) を担当。各種開発業務やシステムの保守を実施。
2022年12月 - 現在: グルメモジュールでプロジェクトリーダー (PL) に抜擢。要件定義、実装、テスト、リリース、そして保守に至るまでの一貫した業務を全般的に担当しています。
### 使用技術や開発環境
`HTML5`, `CSS`, `SCSS`, `PHP`, `JavaScript`, `jQuery`, `Laravel`, `Vue.js`, `Docker`, `GitHub`, `Visual Studio Code`, `Backlog`, `Slack`, `PostgreSQL`, `Sourcetree`, `TablePlus`, `SQL`
## 主要開発・実装内容
### 1. クーポン機能の開発
**【概要】**
- ショップオーナーが自由にクーポンを作成・管理でき、エンドユーザーがそれを利用できる機能の開発。
**【課題・問題点】**
- 複雑なクーポン適用ルールを確実に実装し、エンドユーザーにスムーズで直感的なUXを提供する必要
- 具体的な課題は、日付/時間帯制限、使用回数制限、対象商品制限などの各種クーポンルールの管理と適用
**【打ち手・使用した技術】**
- PHPおよびLaravelでのバックエンドロジックの実装。
- Vue.jsを使用し、フロントエンドでのユーザーインターフェースの実現。
- **要件定義とタスク配分:** PMとのヒアリングを通じてクーポンに関する仕様詳細を調査し、要件をスプレッドシートにまとめ、開発メンバーにタスクの配分。
主にクーポンの表示やメールでのクーポン使用の案内、ショップオーナー管理画面での表示、クーポン適用ルールの調整を担当。
開発メンバーにはクーポン適用ロジックの開発(使用時の割引処理、DBインサート処理など)を担当していただく。
- **ユーザーインターフェース開発:** クーポンの生成、利用、表示を行うフロントエンドインターフェースをVue.jsを用いて開発。レスポンシブデザインを実装してモバイルでも利用できるよう対応。
#### 結果・反映
ショップオーナーは自由にクーポンを作成・管理できるようになり、エンドユーザーもそれらのクーポンを効果的に利用することが可能になる。複雑なクーポンルールも正確に実装され、システムはスムーズで直感的なユーザーエクスペリエンスを提供。また、プロジェクトメンバー間の役割分担も明確に行われ、タスクが適切に進行・管理。これにより、プロジェクトは順調に進行し、目標を達成。
### 2. 決済APIのインテグレーション
**【概要】**
- オーナー管理サイトでの「来店処理」機能の致命的バグ修正と、複雑化した決済システム(店頭払い、クレジットカード決済の仮実同時決済と与信)の実装。クレジットカード決済はPayPalを使用し、ユーザーポイント付与、キャッシュバック、プラットフォーム手数料など複数テーブルにわたる取引のログを管理。
**【課題・問題点】**
- 「来店処理」機能が機能していない重大なバグの存在。
- クレジットカード決済の際、仮実同時決済と与信の複雑なハンドリング。
- ユーザーポイント付与、オーナーキャッシュバック、運営マージンの複雑なデータハンドリングと更新。
**【打ち手・使用した技術】**
- **バグ解決:** 「来店処理」機能のバグを追跡し、そのメカニズムの理解と修正を実施。
- **決済オプションの統合:** PayPal APIを用いてクレジットカードの仮実同時決済と与信を処理。
- **データハンドリング:**複数のテーブル(ユーザー、オーナー、運営サイドなど)を効果的に更新・管理するロジックを構築。
決済毎のポイントの付与、オーナーへのキャッシュバック、プラットフォーム手数料を正確に計算し、適切なテーブルにデータを反映。
#### 結果・反映
エンドユーザーからショップオーナー、さらに運営側へと連鎖する複雑な決済フローとデータハンドリングを確立。これにより、システムは多様な決済シナリオと取引をスムーズかつ正確に処理が可能。先方も把握していなかったこの領域を、私が独立して調査し、ヒアリングを行い、実装からテストまで一手に担当。システムの信頼性と利便性の向上に貢献。
### 3.インボイス対応APIの導入
**【概要】**
- グルメ飲食店の予約システムにおける、新しいインボイス管理機能の導入。予約時に自動的にインボイス用テーブルに関連データを挿入するAPIの開発と実装。
**【課題・問題点】**
- 予約毎のインボイス作成には、複数の料金要素(飲食料、サービス料、チャージ料、クーポン使用料、ポイント使用料など)が含まれ、それぞれが異なる計算ロジックを必要。
- 消費税率の変動(8%から10%など)にも柔軟に対応できるよう設計する必要。
**【打ち手・使用した技術】**
- **協議と認識の統一:** プロジェクトマネージャーと共に、インボイステーブル設計に関してリーダー会議で協議を行い、テーブル設計を理解し、開発の方針を決定。ここでは、全ての料金要素と消費税の取り扱いに関する認識を明確にし、スムーズな開発を進める基盤を作成。
- **計算ロジックの設計・実装:** 複雑な計算ロジックをLaravelフレームワーク内で実装。ビジネスロジック層において、各料金要素を引数として受け取り、適切な税率で計算を行うサービスクラスを定義。予約データに基づいて正確なインボイス額を計算し、APIを通じてインボイス用テーブルにデータを挿入する処理の構築。
- **テスト実施:** 異なる税率や料金構造を含んだ複数のシナリオでテストを実施し、計算ロジックとデータのINSERT処理が正確に行われることを確認。ユニットテストを用いて、関数の出力が期待通りであるかを検証し、エンドツーエンドテストで実際のユースケースを模倣し、APIの実装を確認。
- **ドキュメンテーション:** インボイス計算ロジック、APIの使用方法、データ構造などを詳細にドキュメント化し、チームメンバーや他チームと共有。
#### 結果・反映
このプロジェクトでは、複雑なビジネスロジックをコードに落とし込み、APIを通じて自動的にデータベースに反映させるという課題の取り組み。複数の料金要素や異なる税率をうまくハンドリングし、正確な計算結果を出力することに成功。
### 4.お取り寄せ商品の登録・管理システムとその商品情報の表示機能の導入
**【概要】**
- お取り寄せ商品の登録・管理システムとその商品情報の表示機能を開発。これにより、ショップオーナーがグルメモジュールで通販商品を表示できる新機能の提供が可能。
**【課題・問題点】**
- グルメモジュールと通販モジュールの間で商品情報の共有がない。
- ショップオーナーが自店のグルメページで販売したい通販商品を手軽に選択・管理できるシステムが存在しない。
- エンドユーザーがグルメショップページで通販商品を確認できない。
**【打ち手・使用した技術】**
- ショップオーナーがグルメモジュールで通販商品を選択・登録できるUIとシステムの開発。
- 既存の複数のデータベーステーブルの構造と関連性を徹底的に調査し、ブラックボックス化されていた商品登録のプロセスを解明。これを基に、新しい商品情報が適切に各テーブルにINSERTされるロジックを実装。
- エンドユーザーがショップページで選択された商品を閲覧できる機能の開発。
#### 結果・反映
ショップオーナーは、新しい管理画面を利用して通販商品の選択と管理が可能。これにより、通販商品を手軽にグルメモジュールに組み込み、展示・販売することが可能。
エンドユーザーは、グルメショップページ上で通販商品を確認し、購買選択をすることができる。これにより、ユーザーがショップに興味を持ち、購買意欲を増す材料が増加。
プロジェクトは計画通りに進行し、調査から設計、実装、テスト、そしてリリースまでのフローを無事完了し、スムーズに機能が反映される。
## 取り組みの成果
- 260件以上のバグ・タスク・要望に対応し、プロジェクトの進捗と品質を一貫してマネージメント。
- 要求分析から実装、リリースまで一貫した機能開発のリーダーシップを担当。
- 新機能の追加や既存機能の最適化に成功し、ユーザーエクスペリエンスの向上とビジネス価値の増加を実現。