HR系転職システム開発
# プロジェクト概要
国内最大級の正社員人材紹介サービスのアプリケーション開発
# 要件1:求人一覧への企業ロゴ表示
【課題】求人一覧にロゴがなく、求職者が企業を視覚的に識別できない状態だった。
また、ロゴデータの登録・管理フローも未整備だった。
【判断・アプローチ】ストレージはAWS S3を選定。既存の社内システム→求人一覧へのデータ移送バッチにロゴ移送を追加することで、新規パイプラインを立てずに済む最小変更での実現を判断。
【成果】管理画面への登録・削除UI、S3保存機能、バッチ移送処理、求人一覧への表示を
エンドツーエンドで実装。影響範囲全体を担当した。
# 要件2:LINEプッシュ通知の性能改善(並列化 + 二重送信防止)
【課題】日次22時締切のLINEプッシュバッチが性能不足で全件送信できておらず、未送信件数が恒常的に発生していた。
【判断・アプローチ】単純なスレッド増設だと、複数スレッドが同一求人データを取得し二重送信が発生するリスクがあると事前に認識。
スレッドごとに処理対象を排他的に割り当てる設計を先に確定してから並列化に踏み切った。
【成果】未送信件数0件を達成。二重送信障害も発生させずにリリース。性能改善とデータ整合性の両立を実現した。
# 要件3:バッチJOBNET再設計(JP1)
【課題】データ削除系の日次バッチの開始時間が遅く、後続処理に影響が出ていた。
【判断・アプローチ】JP1の先行・後続JOBの依存関係を整理し、開始時間の変更が他バッチに与える
影響を洗い出したうえで設定を変更。副作用が生じないことを確認してから適用した。
【成果】削除バッチの早期実行を実現し、後続処理のスケジュールに余裕を確保。
# 要件4:LINEプッシュ未送信求人データのログ可視化
【課題】日次バッチで定刻までにLINEプッシュ出来なかった求人データが削除された場合でも、その件数がログに出力されず、状況が把握しにくい状態だった。
当初のビジネスサイドの指示では削除件数1件以上でエラー通知する設計だったが、これはシステム運用部署の監視コストが過大になるという課題が発生した。
【判断・アプローチ】「誰が・いつ・どんな目的でログを見るか」を整理したうえで、システム運用部署とビジネス部署の利害を調整。
常時監視が必要なエラー通知ではなく、ビジネス部署が任意のタイミングで確認できるログ出力方式に変更することを提案・合意した。
ログは見やすく集約・加工して出力する形に改修し、オフショア開発したコードのネスト構造も併せて整理した。
【成果】システム運用部署の監視負荷を削減しつつ、ビジネス部署が自律的に状況確認できる運用を確立。関係者の運用コストを踏まえた設計判断で価値を出した。
# 要件5:応募完了メールへの類似求人表示 + APIエラー運用設計
【課題】類似求人は応募完了画面にのみ表示されており、メール経由での再エンゲージメント機会が活用されていなかった。
【判断・アプローチ】画面表示用に取得済みの類似求人データをそのままメール送信APIに渡す方法も取れたが、
それではメール送信モジュールが類似求人データの構造に依存し、結合度が高まると判断。
メール送信側で改めてAPIを呼び出す設計を選び、モジュール間の独立性を保った。
なお、2回APIを呼び出すため取得結果が異なる可能性は認識していたが、
両者の呼び出し間隔は1秒未満であり、データ差異が生じるリスクは実質的に無視できると判断して許容した。
また、APIエラー時にメール送信自体が失敗するリスクを考慮し、エラー時の縮退運用を0から設計した。
【成果】メールへの類似求人表示を実現。APIエラー時も本来のメール送信を損なわない運用設計を確立した。
# 要件6:気になる求人一覧からの複数同時応募 + 仕様変更への進言
【課題】「気になる求人一覧」に応募導線がなく、求職者の応募機会が失われていた。
複数同時応募の場合、応募完了メールにも複数の応募求人を表示する必要があった。
【判断・アプローチ】初期仕様を精査した際、同時応募求人とおすすめ求人がメール上で重複する
可能性を発見。放置すると品質の信頼を損なうと判断し、PDMへ自発的に問題を共有。
重複を排除する仕様に変更することを提案・合意した。
【成果】複数同時応募フローを実装。仕様上の問題を開発着手前に潰すことで手戻りを防止した。
# 要件7:ソースコード背景の調査コスト削減(NotebookLM連携)
【課題】「なぜこのロジックが存在するのか」を調べるたびに、Excelの要件定義書を
人力で検索する工数が発生していた。
【判断・アプローチ】Excelの書式が複雑な箇所はプログラムでの読み取りが困難と判断し、「自動化できる範囲」と「手作業が必要な範囲」を切り分けて設計。
構造化されたデータ部分はプログラムでConfluenceに自動コピーし、書式が不規則な部分は手作業で補う、ハイブリッド運用を採用した。
【成果】完全自動化ではないものの、大部分の移行工数を削減しNotebookLMでの即時検索環境を整備。技術的制約を踏まえた現実解として、チームの調査コスト削減に貢献した。
# 要件8:職歴欄のプロジェクト単位化
【課題】職歴欄のプロジェクト単位化に伴い、DB・API・画面の型定義が文字列から文字列コレクションへと変わる為、
影響範囲が広く、漏れのない洗い出しが必要だった。
【判断・アプローチ】型変更の影響はDB・APIの戻り値・画面描画の3層にまたがるため、
まず影響範囲を体系的に整理してから実装に入ることを優先。手戻りリスクを最小化する順序で進めた。
【成果】DB・API・UI全層を統一的に変更し、1求人欄から複数プロジェクト単位の入力・表示形式への移行を完遂。
# マルチリポジトリ環境におけるリリース管理と自動化の推進
複数リポジトリが複雑に関連し合う大規模アプリケーションにおいて、
リリース事故ゼロと工数削減を目標に、計8環境へのリリース工程の策定から実行までを主導。
【具体的な取り組みと思考プロセス】
①リリースプロセスのガバナンス強化と円滑な進行(ファシリテーション)
複数リポジトリの同時並行開発では、ブランチ管理のミスや手順の不備が致命的なデグレードを招くリスクが潜んできた。そこで、リリースリハーサルを主導役を担当した際は、リリース手順書のレビュー基準を明確化。プルリクエストの承認フローに「依存関係のチェック」を組み込むことで、人的ミスを構造的に排除した。また、ステータス更新漏れをリアルタイムで指摘・管理することで、関係者間の情報乖離による手戻りを未然に防止。
②8環境におよぶリリース作業の効率化と品質担保
環境数が多いことによる「手順の煩雑化」と「手動操作によるミス」が最大の課題だった。そのため、従来手動で行っていたSQL実行をGitHub Actionsにより自動化。DDL/DMLの整理ルールを策定し、自動実行のパイプラインに乗せることで、作業時間を短縮しつつ実行ログの透明性を確保した。結果として、リリース後の画面バージョン確認やログ収集のルーチン化により、リリース完了判断の迅速化を実現しました。
【発揮したバリュー】
本プロジェクトでは、バックエンド・フロントエンド・インフラ・QAにわたる複数の職種を横断しながら、要件定義から運用保守、さらにはデータ分析に至るまで一貫して対応した。以下のようなバリューを発揮した。
1.課題解決力・パフォーマンス改善への貢献
LINEプッシュ通知に関する性能問題では、並列処理を導入し、スレッド単位で求人データを分散処理することで、日次バッチの未送信件数を0件に削減した。これにより、システム全体の信頼性とパフォーマンスを大幅に向上させ、サービス品質の維持に貢献した。
2.技術横断的な開発対応力
AWS S3、LINE Messaging API、JP1、Oracle DB など、幅広い技術に対応し、求人一覧画面に企業ロゴを表示させる機能や、データ可視化ログの改修を成功させた。フロント・バック・インフラといった技術分野をまたいで設計・実装を行ったことで、チームに技術的な幅と安定感をもたらした。
3.ユーザー視点の改善提案と実行力
求人応募完了メールに類似求人を追加する提案では、既存APIを再利用しつつ、エラー発生時の運用設計をゼロから行い、ユーザー体験を損なわない設計を実現した。単なる機能追加に留まらず、サービスの使いやすさ向上を意識した開発を行った。
4.可読性・保守性の高いコード設計
LINEプッシュ通知の残データログ出力処理において、ネスト構造を排除し、可読性・保守性の高いコードへリファクタリングを行った。将来的な拡張や障害調査の効率化にも寄与している。