社員情報を管理するAPIです。
webエンジニアとしての基礎技術の習得を目的に作成しました。
グループ企業の会社の社員管理を想定しております。
社員の基本情報を管理するだけではなく、社員の持つスキルに関しても着目して作成しました。
なぜならば、会社内で社員の持つスキルに関して詳細に把握している企業が少ないように感じたためです。
希望ポジションはバックエンドエンジニアであるため、APIのみ作成しました。
Swagger上から叩いてみてください。
ER図を実際の実務に耐えられるように設計したため、全機能を作成しておりません。
-
ER図はA5:SQL Mk-2を用いて作成しました。employee-management\rdb\erフォルダに
employee-management-er-diagram.a5er
というファイル名でER図を置いておりますが、A5:SQL Mk-2がないと閲覧できません。 -
テーブル定義書のHTMLはemployee-management\rdbフォルダに置いております。
-
データベース設計はWEB+DB PRESS Vol.130のイミュータブルデータモデル と楽々ERDレッスンを参考にして作成しました。
- Java 19
- Spring Boot 2.7.7
- Maven 4.0.0
- JUnit 5
- PostgreSQL 14
- MyBatis-Spring 2.2.2
- MyBatis Generator 1.3.0
- GitHub Actions
-
リーダブルコードや現場で役立つシステム設計の原則 ~変更を楽で安全にするオブジェクト指向の実践技法、良いコード/悪いコードで学ぶ設計入門を参考に読みやすいコードや保守性の高いコードになるように意識してコーディングをしました。
-
データベース設計は実務の中で積めていなかった経験であり、後工程での手戻りが非常に大きくなる工程なのでWEB+DB PRESS Vol.130のイミュータブルデータモデル と楽々ERDレッスンを参考にして何度も修正を重ねながら作成しました。
-
テストが必要なメソッドに関してはテストを作成し、安心してリファクタリングができるような体制を作りました。
-
一人の開発でもコードを読み返したときに理解しやすくなるように、javadocや意図コメントをコードを書きながら書くように意識しました。
-
パッケージはコントローラーやモデル、サービスなど設計パターンでまとめる技術駆動パッケージではなく、業務の関心ごとを元にまとめるようなパッケージにすることにより、一つの機能で複数のパッケージを検索する手間を削減するように努めました。
-
エラーメッセージなどのファイルはハードコーディングしないように別途ファイルに書き出すようにして、保守性を高めました。
-
GitHub Actionsを用いてCIを構築し、push時に自動テストを実行するようにしました。
- ユーザー登録、ログイン機能(JWT認証で実装)
- トランザクション管理機能
- 権限管理機能
- ロギング機能
- CRUD機能
- ビジネスロジックの実装
- バリデーション機能
- GitHub ActionsによるCI機能
- GETは未認証でもできる。
- POSTは認証しないと利用できない。(※データを更新しない[/api/v1/employees/skills/search]は例外)
- DELETEはADMINロールを持つユーザーだけが実行することができる。
git cloneをしてプロジェクトを取得する。
git clone https://github.com/tonbiattack/employee-management.git
プロジェクトのパッケージまで移動する。
cd /your-directory/employee-management
実行する。
mvn spring-boot:run
http://localhost:8080/swagger-ui/
1.ページ下部の認証
をクリック