概要:
社内で受注したプロジェクトのマネジメトおよび社員の工数を管理するアプリケーション。
受注しようとするプロジェクトの期間、受注金額、パートナー企業、およびパートナーを管理し、そのプロジェクトに対して実際受け入れるかの承認ワークフローを形成する。必要なデータはPDF,CSV,Excelにて出力できる。またアプリ内で社員の勤怠、パートナーの勤怠を入力でき、そこで働いた工数や単価とプロジェクトでの管理数値と結びつけて総合的に管理する。
技術的なポイント:
サーバーサイドではJava,Spring Bootを使い、DBデータを整形して画面に返す、DBから帳票の生成、CSV,Excel出力のような基本的な実装から、勤怠データのさまざま計算(社員のロールによる勤怠時間の違い、休憩時間、法定休暇、有給、遅刻、早退)部分の多少ロジカルな部分の実装も基本設計(DB設計なども)からコーディングに落とし込んで実装した。いろいろなパターンを考慮する必要があり若干複雑であり、また給与計算に直結するためテストコードに落とし込みながら注意を払って実装した。
Javaのコーディングだけでなく、問題の解決としてSQLで可能ならストアドプロシージャ、ストアドファンクションなども選択した。
チーム開発における役割:
チーム開発において、各自が仕事をやりやすくするための工夫を常に考えて提案し、実際にいろいろ取り入れられた。例えばGitのフローなどはなんとなくmasterとそれ以外があるような状態で混沌としていたものを良しと思えなかったので開発チームへフローの提案、なんどもブラッシュアップするような機会を作り、このプロジェクトにあっていると思うオリジナルのGitフロー作成のきっかけを作った。
ほかにも開発以外の場の提案をいろいろ行った。例えば定期的なプロジェクトでの課題共有会、勉強会、テスト勉強会など提案し、決して押し付けにならないようバランスをとりながら各自の意見をいいやすい場を作ることを心がけた。