# プロジェクト概要
- マンション管理を一元化する大規模データを扱うツールの開発・運用を行なっている
- 大規模プロジェクト
# 担当した役割
- バックエンドとフロントエンドを両方を担当。追加開発から保守運用を行いました。
# 技術スタック
- フロントエンド : Vue.js, JavaScript, Sass
- バックエンド : PHP/Laravel , Auth0
- インフラ : AWS(ECS, RDS, Cloud Front, S3, Cloud Watch Redis, Lamda) , Docker Circle CI
# 主要機能
- 発注、支払い、請求の月次・年次の管理
- 収支計算
- 部屋管理
- 駐車場などの共同部管理
- 理事会の役職管理
# チーム構成
- PM 1名
- ディレクター1名
- バックエンドエンジニア 3名(自分)
- iOSエンジニア 1名
- Androidエンジニア 1名
## 出したバリュー(取り組み)
### iOS、Androidアプリとの連携
### 課題
- WEB, iOS, Android版のアプリが存在するが、開発の仕様についてWEB側とアプリ側、さらにアプリの中でもiOSやAndroidのメンバーでも認識が異なることが多々あり、コードレビューや動作確認後に手戻りが発生するケースが散見されていた。
### 改善・工夫したこと
- 手戻りが多く、認識の不一致ががあったため、ミーティングを増やして合意が取れた内容(仕様書やプルリク)などを充実させ、オンラインでコミュニケーションを徹底的にやった。結果、認識齟齬が発生しないで手戻りが減少した。
## 大規模なソースコードと仕様の理解
### 課題
- 前任者がいなくなってしまうことがあり、1ヶ月で引き継ぎを行い、今後実装するにあたって抜け漏れがないようにソースコードを読み解きかつ、仕様を理解する必要があった。
### 改善・工夫したこと
- 実装する前に、主要な機能と影響範囲はどれくらいかを検討して実装を進めた。処理フローがわかりにくいところは、フローチャートに書き起こしてロジック周り、動作の流れを確認した。また、毎週メンバー同士でミーティングを開き、仕様についてや気になることを共有して知識を深めていった。その結果、実装の抜け漏れがなく納期前に納品することができた。
## バックエンドとフロントエンドの連携開発
### 課題
- バリデーション機能でフロントのモーダルメッセージを使うか、バックエンドだけでバリデーションエラーメッセージを表示させるかで仕様を満たすのに悩むことがあった。
### 改善・工夫したこと
- 無駄コードは極力書かないように、まずは既存で使えるコードを見つけて流用できないかをチェックした。その結果、追加でフロントの実装はしないで、バックエンドのみの実装だけで仕様通りに開発ができた。大規模なプロジェクトなので実装するときは使い回しができるか?、影響範囲は考慮されているか?を考えて実装した。
# 開発で工夫したこと
プロジェクトの規模は大きく、修正や機能追加でも影響範囲が大きいのでPRでは、みんなで回しあって確認、レビューを徹底的にやった。その結果、ソースの可読性が上がった。
退会APIを実装したときに、影響範囲が他にもないかを確認しながら実装した。認証周りにミドルウェアの影響範囲があったのでそこを考慮して実装した。