唐突に勤怠管理システムが作りたくなった休日

あー、そういえばちょうど良い具合の勤怠管理システム欲しいな～！ 
そんな休日ありますよね！？ 

Azure でちょっとしたプロトタイプみたいな設計レシピ作ってくれと言われたので作り始めてみたメモ。

オーダー:
- 就労管理
- Azure を使う
- Azure OpenAI も使う
- あとは自由

雑だがあとは自由なら自由にやってみようということでとりあえず。

## Request 時刻を Excel に記録

![la2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93824/07ce4349-7851-ff34-7757-5cd5064d5545.gif)

https://learn.microsoft.com/ja-jp/azure/connectors/connectors-native-reqres?tabs=consumption

https://learn.microsoft.com/ja-jp/connectors/excelonlinebusiness/

## Microsoft Forms からの Request を Excel に記録

![la3.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93824/a8ec7b64-0fb4-e361-d9ca-fa9378cdf813.gif)

https://learn.microsoft.com/ja-jp/connectors/microsoftforms/


## アイディアを膨らませる

ものが動くと楽しいですよね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93824/e75dedef-c280-f583-d724-acae5ee5138d.png)

> 勤怠管理システムを構築する際には、以下の機能を考慮することが重要です：

> ユーザー管理： 従業員の基本情報やアクセス権限を管理できる機能が必要です。
> 打刻機能： 出勤や退勤の打刻機能を実装し、これを元に労働時間を計測できるようにします。
> 休暇申請機能： 従業員が休暇を申請し、管理者がそれを承認できる仕組みが必要です。
> シフト管理： 従業員の勤務シフトを設定し、管理できる機能が便利です。
> 残業管理： 従業員の残業時間を記録し、給与計算に反映できる機能があると良いです。
> 給与計算： 労働時間や残業時間から給与を計算できる機能を組み込むと、全体の効率が向上します。
> レポート機能： 勤怠や労働時間に関するレポートを生成できる機能が重要です。
> 通知機能： ユーザーに対して通知を送る仕組みがあると、重要な期限や変更があった際に効果的です。

>これらの基本的な機能を考慮して、システムの要件を整理しましょう。

一気に言ってくれるじゃないか。ユーザー管理は最近こういうのを知ったのでこれでいいんじゃないの。

https://learn.microsoft.com/ja-jp/entra/identity/app-provisioning/user-provisioning

引用:
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93824/f8fd1340-7fe9-01e3-c2ad-004dd9332ccb.png)

その他の打刻以外のところで言うと、

休暇申請、シフト管理は、たぶんそれだけで大きな 1 機能になりそうなので後回し。給与計算も言わずもがな。

残業管理はたしかに、打刻した時刻から割り出したりはできそう。
レポート と 通知 は汎用的にあるといいよね。

## 通知機能

そうなると次になんかやってみたいのは通知なんだけど以下は超簡単。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93824/8aba71ea-addf-f3dc-bae6-feace9b19c3c.png)

https://learn.microsoft.com/ja-jp/azure/logic-apps/concepts-schedule-automated-recurring-tasks-workflows

https://learn.microsoft.com/ja-jp/azure/connectors/connectors-native-recurrence?tabs=consumption

https://learn.microsoft.com/ja-jp/azure/app-service/tutorial-send-email?tabs=dotnet

## レポート

レポートとかやりたくなってくるとデータを入れる箱はどこにするのが良いのかなと感じ始める。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93824/d492eb9b-b199-efa1-cc58-d2c79a2b79cb.png)

> Azureで大規模な打刻管理システムを構築する場合、Azure SQL Databaseが適しています。これは、クラウドネイティブなデータベースサービスであり、スケーラビリティ、セキュリティ、可用性が高いです。また、Azure Cosmos DBも考慮に値します。データベース選択は、具体的な要件やアプリケーションの特性によりますので、詳細な検討が必要です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93824/2c12ddb7-a835-021f-a8a5-6d3be4e2488f.png)

> はい、大規模な打刻管理にExcelを使用すると、データの処理やセキュリティの面で課題が生じる可能性があります。クラウドベースのデータベースや専用の打刻管理システムは、スケーラビリティやデータの効率的な管理において優れています。Azureのデータベースサービスを活用することで、より信頼性の高いシステムを構築できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93824/7872103e-9fb7-c675-2ea6-04482f6d7a4c.png)

> もちろん、Excelは小規模なデータ管理や一時的な目的には非常に有用です。特に小規模な組織やプロジェクトでは、Excelを使用して打刻データを管理することも一般的です。ただし、次第にデータの規模が拡大し、複雑性が増すと、Excelは限定された機能やスケーラビリティのために制約が生じることがあります。

> クラウドベースのデータベースサービス（例: Azure SQL Database）は、データの効率的な管理、セキュリティの向上、スケーラビリティの確保など、大規模で複雑なデータ管理ニーズに対応するために設計されています。ですので、データ量や要件が増加してきた場合は、データベースサービスの検討が有益です。

https://learn.microsoft.com/ja-jp/azure/cosmos-db/try-free?tabs=nosql

https://learn.microsoft.com/ja-jp/azure/azure-sql/database/free-offer?view=azuresql

箱はやはりクラウドの課金の肝なんだよなあ。結局悩ましいのはこの辺になりそうである。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93824/768c9770-ebaf-e495-d225-8ec2c220e12f.png)

Oh...
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93824/ad6f3645-4f73-4937-e861-455a95922108.png)

わーい

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/93824/b053d977-1be8-4d7e-928e-25dc4d39828b.png)


みたいな感じです。まだ OpenAI らしきもの使えてない。レポートで使えるはず。つづく

## Better than ほげほげ

日本だととかく重箱の隅を楊枝でほじくるけどさ、こういうのあるじゃん、「やったもん勝ちだぜ」的な考え方。と思い、思い出したのは以下。

https://dev.classmethod.jp/articles/knqyf263-oss-better-than-nothing-awsdevday/

https://qiita.com/DON4024/items/2481504380b279c00397

ということで、ちょうど良い具合の勤怠管理システムを色々妄想し始める話でした。

以上です～