自社のプロダクト開発・運用
派遣等の求人や面接の管理システム
## プロダクト概要
派遣業界向けの採用管理SaaSシステム。
領域は応募から採用までのフローを一括で管理を行える。
特徴としては過去に応募したり在職していた求職者の掘り起こしを行う部分であり、休眠状態の求職者へアプローチを重点的に行うことができる
【チーム全体】
- PdM : 4人
- エンジニア : 12人
- フロントエンド : 6人
- バックエンド : 6人
- UIデザイナー : 1人
- QAエンジニア : 6人
これらを3つのチームに分けそれぞれわけ、私が所属していたチームは7人規模となりました
- PdM : 1名
- フロントエンド : 2名(私含む)
- バックエンド : 2名
- QAエンジニア : 2名
---
## 業務内容
**概要**
- 人材派遣管理の新規機能実装
- 技術負債となっている箇所のリプレイス
- ユーザー満足度が低い画面や機能をリプレイス
**担当業務**:
フロントエンド領域, 仕様書ドキュメント作成、Issueチケット切り、PdMやUIデザイナーとの協議、チームレトロ、チーム内での機能探索会の実施
**使用技術**:
Vue.js, React.js, Next.js, Node.js, アジャイル/スクラム, GitHub
---
### Vue.jsからReactへのリプレイス作業
Vue2で構築されていた機能をReact(Next.js)へ置き換える社内のリプレイスプロダクト。
**【課題】**
Vue2のEOLになったため、Vue3への更新が必要となったのと、これからのプロダクトをより洗練していくため、これを気にコミュニティが活発であり、TypeScriptの恩恵が受けれるReact(Next.js)へリプレイスを行う。
**【実装・目的】**
プロダクト理解をより深めるために、リプレイスIssue(画面)を一部担当を致しました。
Vue2側で実装されている画面や機能をコードリーディングを行い、それをどうReact側へ落とし込むかを実務として経験することにより、プロダクト理解を含めコードリーディング能力と設計力と実装力を向上させる事を目標と致しました。
**【成果・成長点】**
Vue側では1つの行数が多いコンポーネントだったのを、Reactでは機能毎に切り分けをし更にAPI層や関数群や型定義などをディレクトリに整理をし、後で他エンジニアから見てもリーディングしやすい事を意識し実装を行いました。
コードレビューではチームの暦が長いフロントエンジニアやテックリードの方から多くの指摘を頂き、何度も実装し直すなどで自己の立ち位置と不足している部分、実装を通して学んだ事が多いタスクとなりました。
#### 新機能画面の新規実装
**【課題】**
1ヶ月毎の開発期間毎に次期開発計画として新規機能開発を行う。
新規機能開発を選出するベース。
- プロダクトをより洗練していく中で必要な機能
- ユーザーの満足度が低い及びユーザーから改善の要望があった機能
その中で私が携わった箇所の2つの機能の課題があった。
- 求職者への求人配信や復職の働きかけなどの結果の統計がExcelで非常に見にくく、件数が多いと負荷が高く閲覧に支障を来していた
- 配信や復職の働きかけなどを行わない除外対象とする画面で、設定ミスが発生しうるUIであったので改修が急務であった
- 新たな機能としては除外対象としてメールアドレスのドメインを指定する場面が出てきたので対応する
**【実装】**
当初はメンターの方とペアプロしながら作業を行ったが、チームでの新規実装1Storyをすべて携わる事となり、PdMとデザイナーとの仕様定義から実装、週に1度のスプリントレビューでの開発内情報共有なども行った。
実装していく中で開発をスムーズに行う上で以下の事を工夫して行った。
- 実装に入る前にUIデザイナーが作成してくださったFigmaを元に、どのような実装をするかDesignDocを作成
- DesignDocをテックリードやチームのフロントエンドエンジニアにレビューをして頂き、設計を固める
**【成果】**
実装上での成果としては、初期はメンターエンジニアとの伴走から疑問点をペアプロで解決していただいた時が多かったが、最終的には新規実装のエピックなどは、私個人1人で新規実装を行えるようになった。
開発を行った結果、ユーザー様からは以前より使いやすく見やすくなったとの声を頂きました。
・エクセルで見ていた統計をブラウザ上で見ることができ、フィルターなどが非常に使いやすかった
・統計画面の実装をお聞きしており、非常に期待し待っていたとのユーザー様の声をいただいた
#### バックエンドエンジニアと共同でREST APIの仕様定義
半年ほどより、チームのバックエンドエンジニアの方とともに新規実装するAPIの定義やどのようなデータの構造が必要なのかを、打ち合わせしながら共同でAPIの実装を行った。
私はフロントエンド側の知識を元に、フロントエンドではどのような形で使われるかをバックエンドエンジニアの方へ伝え、どのような形での実装がよいかの情報提供をし、ときにはバックエンドエンジニアの方の疑問をフロント側の実装内容を元に解決に導いた。
##### 手引のドキュメント作成
実装を行う上で、開発チーム独自に組んだロジックや関数などをメモや使用方法の手引をドキュメントにしておくことで、どこで詰まったかやどのように使えばよいかを社内での共有資産としてドキュメント化を行った。
##### 仕様書への仕様変更箇所の反映及びADRへの反映
PdMやUIデザイナーとの仕様決定ミーティングを通して決定した内容を、自ら仕様書へ反映を行い、ADRなどへ変更ポイントを記載しチームチャットで周知を行った。
PdMが行う作業であったが、携わらせていただくことで仕様書の流儀やドキュメントの変更ポイントの書き方、チームへの周知などを経験することで、仕様決定時の流れを学ぶことができた。
#### チーム内での実装箇所の探索会を実施
ユーザーからの使い心地や不具合点などを事前に洗い出すために、実装した画面や機能に対してチームメンバーで一度触り機能を確かめるイベントを一定の進捗毎に開催を行った。
開発メンバーだけではなく、QAエンジニアの方にも入っていただくことにより、QA目線での不具合や機能的にわかりにくいポイントの洗い出しなども行うことで、より品質の高い状態での実装を終える事がチームとして出来るようになった。
また、開発チーム全体としては週に1度スプリントレビューで実装箇所のお披露目があるため、その前までに所属チーム内で探索会を行う事でより品質が高い状態でスプリントレビューでCSや営業の方にお披露目が可能となった。
---
### 成長への取り組み
##### DesignDocを元にしたIssue切り出し、実装、PR作成
より実装コードの設計力を向上させ、また実装方針をドキュメント化していくためにDesignDocをメンターエンジニアの方と共に作成を行った。当初はペアプロで行っていたが、一通りDesignDocの作成と実装を行った後には、1人で作成をしその後メンターエンジニアやテックリードエンジニアの方にレビューをしてもらってからの、実作業へ移るような開発工程へとシフトした。これにより、事前に実装上でAPIとの疎通をどのコンポーネントに任せるかや、コンポーネントの親子関係を決定しておくことで、実装する上での品質向上や実装速度の向上を実現した。
#### 最新のトレンドに詳しくなるためのウィークリーニュース活動
次のエンジニアとして進むべき道を「最新の技術に詳しく、設計やアーキテクチャでリードできるエンジニア」と定めました。
どのような事を行えば最新のトレンドに詳しいエンジニアになれるかを考えた時に、いち早く最新の情報を入手しそれを試す事であると考えました。そこでまずはじめに社内のフロントエンドエンジニア向けに一週間前の週に発表されたり出来事が起こったニュースをまとめ、概要と感想を添えて社内に発信するウィークリーニュースをこの5月から始めました。
社内のエンジニアよりもいち早く情報を入手し社内発信を行う事で、社内のテックリードエンジニアでもまだ気づいていないライブラリの更新などをお伝えすることができ、プロダクトの環境更新などの一助になったこともあります。
トレンドでより深堀りを行ってみたいものに関してはテックブログを作成し、サンプルコードなどを元にどのような技術なのかを社内外共に情報発信しました。
その結果、社内としてはテスト環境改善のためPlaywrightの導入検討を行っている中で、私主導の勉強会などを行う予定となっておりました。