営業リソースが足りない企業が仕事を掲載し、フリーランスや副業の営業マンがその仕事に応募し、両者のマッチングをはかるという求人Webサービスの開発 / 運用を行っていました。
主な機能は以下の通りです。
- 求職者用画面
- 仕事の検索, 詳細確認, ブックマーク, 応募
- マイページ
- プロフィール管理, 給与明細出力, 応募した求人の管理
- 求人を掲載する企業用画面
- 求人情報の登録, 更新, 削除
- 応募者の管理
- 企業情報管理
- 社内用管理画面
- ユーザー(求職者, 企業, 管理ユーザー)管理
- お知らせやブログ記事の管理
- 各種CSVインポート / エクスポート(求職者への支払い情報, ユーザー情報, 社内経理課用の情報 など)
使用技術は以下の通りです:
- フロントエンド:
- TypeScript, Next.js(Pages Router), Emotion, Redux(Toolkit), RTK Query
- バックエンド:
- PHP, Laravel, Go, MySQL, Deployer, GitHub Actions, Docker, AWS
5名のチームにバックエンドエンジニアとして参加しました。
継続的な新規機能追加を中心に、入社から退社まで長く携わりました。
2019年の4月に未経験からバックエンドエンジニアにキャリアチェンジし、始めてアサインされたプロジェクトでした。継続的な新規機能追加と運用、改修などを行い、2023年2月末の退社まで長く携わりました。
同プロジェクトに長期にわたって携わったエンジニアは私のみであり、オーナーシップを持って開発を行いました。
チーム構成は以下の通りでした。
- PM
- 1名
- 開発チーム
- 5名
## 自動デプロイ導入
参加当初はデプロイ方法がDeployerというツールを使用した手動デプロイでした。開発マシンにリリース用ブランチをpullし、コマンドを実行することでデプロイされるというものです。
モノレポ構成だったためフロントエンドで変更があった際もバックエンドエンジニアが手動でコマンドを実行してリリース作業をしていました。なので軽微な修正の反映すら手間がかかるといった状況でした。
そこで運用改善の一環としてGitHub ActionsとDeployerを組み合わせた自動デプロイを提案・導入し、リリース速度やコミュニケーションコストを減らすことができました。
設定方法などをQiitaにまとめて社内で共有し、その後他プロジェクトでも同様の自動デプロイ方法を導入する文化を根付かせることに繋がりました。
(書いた記事はこちら: https://qiita.com/koyablue/items/a809f86ca934de52f206)
## Goによるバッチ処理の実装
既存の求人情報に対して追加の情報を大量に登録しなければならないことがありました。PHPで行うには無理があったので、別プロジェクト(別セクションに後述)で使用経験があったGoでデータ投入のためのバッチ処理を実装しました。
元データが整理されていなかったので、必要情報をCSVファイルにまとめるところまでをPMを通して他部署に協力してもらいました。その後CSVにまとまったデータをGoによってDBに流し込みました。
## レガシーなフロントエンドのTypeScript / Next.jsへのリプレイス
一度チームを離れましたが、大規模な改修計画が発足した際にフロントエンド担当としてチームに再加入しました。バックエンドをAPI化し、フロントエンドをTypeScriptとNext.jsで実装するという内容でした。
この計画の少し前に社内の別プロジェクトで初のフロントエンド実務を行っており、その際の自走能力を評価されて引き続きフロントエンドエンジニアとして参加することになりました。
当時すでに約3年ほど同サービスに関わり続けており、適任だと判断されてのアサインでした。
長期間携わったことによるドメイン知識の蓄積やコードベースへの深い理解をもとに、バックエンドエンジニアと密にコミュニケーションを取りながら、後続の担当者に引き継ぐまで開発を行いました。