# プロジェクト概要
LaravelでバックエンドのAPIを開発し、Vue.jsでフロントエンド開発をしています。タスク内容についてプロダクトマネージャーと要件をつめて、設計、開発を実施します。
2年は開発メインで、現在はマネージャー業務と運用・保守・改善活動と企画段階のROI判断のための概算見積をしています。
# チーム情報
- Webエンジニア:5〜20名(業務委託含む)
- モバイルエンジニア:3名
- QAエンジニア:3〜5名(業務委託等含む)
- プロジェクトマネージャー:2名
- プロダクトマネージャー:3名
## 役割
Webエンジニア、マネージャー
# 主要実績
## 大幅リニューアル対応
### 概要
既存機能をUXを改善しより使いやすい機能に置き換えるプロジェクト。
### 担当機能
日々の点検業務のデータを管理する機能の作り直しを担当しました。
### 課題・問題点
1. パフォーマンス
日々追加されていくデータで、一番データの多いお客様で30万レコード程度存在していました。
また、サービスの特徴として、1つのSPAアプリを元請け、下請け、孫請け、、、などといった権限の異なるユーザーが利用することが想定されています。
元請けには孫請けの情報は見せてはいけない項目、孫請けには元請けを見せてはいけない項目、などの要件があります。
こういった考慮が必要なため、パフォーマンスの考慮が必要でした。
### 取り組み・工夫
大きな工夫としては、二点あります。
1. 大量データを使ったテストを開発時から実施しました。本番データをマスクしたデータを用意してそれを使ってパフォーマンスを確認しながら開発しました。
2. 基本的にデータベースアクセスはLaravelのORMを使ってアクセスするのですが、先述した元請け、下請けなどの委託関係については、SQLを直書きしてORMに結合させるようなことをしました。
### 成果
1. 開発時からパフォーマンスを意識して開発することにより、テストやリリース直後の本番にてパフォーマンス障害を発生させませんでした。
## 日々の点検業務単位で委託関係をもたせる開発
### 概要
日々の点検業務のもととなるマスタデータとして業務という情報があります。
既存ではこの業務単位に元請け、下請けなどの委託関係を持たせていましたが、日々の点検業務単位で設定するように改修を実施しました。
### 課題・問題点
1. 委託関係のデータベース設計をどうするか。
2. 委託関係を条件にしている処理がたくさんある。
### 取り組み・工夫
1. 委託関係のデータベース設計は、既存の業務単位にもたせている構成と同じにしました。これにより、既存のコードを流用することができ、開発工数が削減できました。
2. 委託関係を条件にしている処理がたくさんあることについては、主に認可の処理が多かったので、認可周りのキーワードでソースコードを全検索したり、もとである業務単位の委託関係の処理を一通り確認して必要な処理を置き換えたり、新規に追加したりしました。
### 成果
1. 開発時に影響箇所をしっかり特定していたので、リリース後に漏れによる障害を発生視させませんでした。
## お客様のみ発生するブラウザエラー調査(運用・保守)
### 概要
特定のお客様である画面である操作をするとブラウザエラーになるというお問い合わせをいただき調査しました。
他にも原因特定の難しい障害調査を担当しています。
### 課題・問題点
1. 社内で複数人で操作しても再現することができず、原因の特定が難しい。
2. アプリケーションのエラーではなく、ブラウザのエラーが発生していて、原因の特定が難しい。
### 取り組み・工夫
1. 本番データをマスキングしたデータを用いて、実際のお客様の操作をシミュレーションして、ブラウザの開発者ツールでおかしい点がないか、分析しました。分析した結果、該当の操作をした際に実行しているAPIのレスポンスが一般的な容量を超えるものであることがわかりました。Laravelはモデル同士のリレーションを簡単に表現できるため、意図せずリレーションがネストして不要な情報が大量に含まれていました。必要なもののみ返却するように改修することで解決いたしました。
## チームワーク環境の醸成
### 概要
フルリモート環境で各メンバーが協業して業務を行える環境づくりをしました。
コミュニケーションの基本はSlackを用いたテキストコミュニケーションで、必要があればハドルなどで同期的コミュニケーションを実施しました。
### 課題・問題点
1. プロダクトの初期開発から在籍し細かい仕様を把握していた業務委託のエンジニアの方がいなくなり、質問に答えてくれる方がいなくなった。
2. 各メンバーは自分のタスクがあるので、積極的に回答する雰囲気ではありませんでした。
### 取り組み・工夫
1. まずは、質問がSlackチャンネルに投稿されるとすぐに回答するように努めました。
3. 自分の把握していない機能についても、コードを解析して回答しました。
### 成果
1. 他のメンバーも自分の把握している機能について、回答してくれるメンバーが出てきました。
2. 細かい仕様に関する質問やちょっとした質問も出るようになりました。
## ピープルマネジメントについて
### 概要
Webエンジニアチーム10名のマネージャーとして、1on1と目標設定などを遂行しました。
1on1は3チームに分けてリーダーの方と実施しています。
また、コミュニケーション環境の改善に努めました。
### チーム内のコミュニケーション課題の解決と環境改善
(※この段落は、表現によって所属企業や自分の印象が悪くなる気がしたのでChatGPTに印象良く表現してもらいました。)
チームメンバー間のコードレビューにおける意見の対立が発生した際、それぞれの主張をヒアリングし、公平な視点で状況を整理しました。ちょうどチーム編成の見直しが進められていたため、適切なチーム分けを行い、各メンバーがより良い環境で業務に取り組めるよう調整しました。
その後、特定のメンバーがNotion上の議論で感情的になり、他のメンバーとの対立が発生。別のメンバーからのフィードバックを受け、マネージャー陣と連携し、人事面談を実施。適切な対話を促し、チーム内の雰囲気を損なわないようフォローしました。
また、Slack上で周囲のメンバーが萎縮するような発言が繰り返されるケースがありました。状況を把握した上で、マネージャー陣と協議し、1on1の面談を実施。発言の意図を確認しつつ、建設的なコミュニケーションの重要性を伝えました。本人の理解が不十分な点もあったため、さらに周囲のメンバーの意見を収集し、チーム全体の状況を踏まえた対応を実施しました。
これらの経験を通じて、チームマネジメントにおける円滑なコミュニケーションの重要性を再認識し、対話を重視した課題解決を心掛けました。問題が発生した際には、当事者だけでなく周囲の意見も尊重し、適切な対応を取ることで、チームの生産性と協調性の向上に貢献しました。
## エンジニア採用活動
### 概要
Webエンジニアの正社員、業務委託などの採用活動を担当させていただきました。
### 取り組み・工夫
1. 社内にノウハウがないのでネットの記事や、生成AIとの壁打ちなどで面接時の質問内容を検討して実行しました。