現状のシステムの仕組みを解説
はじめに
今年の1月に作成した就業管理システムの解説をしていこう
https://github.com/ki-hi-ro/Employment-management-system
プログラムを説明することは、現職、そして、未来の仕事に活かされる
そう信じている
できること

部署と役割の情報を持つ従業員の登録、すべての従業員の表示、タイムスタンプ付きの従業員の出退勤打刻、本日または特定の日の出席記録を見ること
部署と役割の情報を持つ従業員の登録(add-employee)

hiroki@shibatahiroshitakanoiMac Employment-management-system % python employment_cli.py add-employee "就業太郎" 営業 "マネージャー"
Employee registered:
[2] 就業太郎 (営業 / マネージャー)
すべての従業員の表示(list)

iroki@shibatahiroshitakanoiMac Employment-management-system % python employment_cli.py list
[1] Shibata Hiroki (Enginner / member)
[2] 就業太郎 (営業 / マネージャー)
タイムスタンプ付きの従業員の出退勤打刻(clock-in、clock-out)

hiroki@shibatahiroshitakanoiMac Employment-management-system % python employment_cli.py clock-in 1
python employment_cli.py clock-out 1
Clock-in recorded:
Employee 1: 2026-04-29T19:49:49 -> open
Clock-out recorded:
Employee 1: 2026-04-29T19:49:49 -> 2026-04-29T19:49:49
本日または特定の日の出席記録を見ること(report)


hiroki@shibatahiroshitakanoiMac Employment-management-system % python employment_cli.py report
Attendance for today:
Employee 1: 2026-04-29T19:49:49 -> 2026-04-29T19:49:49
hiroki@shibatahiroshitakanoiMac Employment-management-system % python employment_cli.py report --date 2026-04-29
Attendance for 2026-04-29:
Employee 1: 2026-04-29T19:49:49 -> 2026-04-29T19:49:49
コードの構成

.gitignoreは無視してもらっても構わない
処理の流れ(一番簡単なlistを例に解説)
正直あまり理解できてないが解説していこう
すべての従業員を表示するには、以下のようにする

iroki@shibatahiroshitakanoiMac Employment-management-system % python employment_cli.py list
[1] Shibata Hiroki (Enginner / member)
[2] 就業太郎 (営業 / マネージャー)
employment_cli.pyのmain関数は以下
def main() -> None:
parser = build_parser()
args = parser.parse_args()
manager = EmploymentManager()
args.func(args, manager)
4行ある
1行目の parser = build_parser() は、コマンドラインに渡す引数を定義している
listの部分のみを抜き出すと以下のようになる。subparsertsにlistを加えている。そして、handle_listという関数をセットしている。これによって、listコマンドが来たときに、一覧表示する関数が呼ばれる。
def build_parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(description="Employment management CLI")
subparsers = parser.add_subparsers(dest="command", required=True)
list_parser = subparsers.add_parser("list", help="List all employees")
list_parser.set_defaults(func=handle_list)
return parser
import argparse をemployment_cli.pyの1行目で行っている。このモジュールの使い方について理解しようと思ったら、さらに時間がかかる。
2行目の args = parser.parse_args() では、CLI(コマンドラインインターフェース)で入力された文字を意味のあるデータに変換している。
python employment_cli.py list が入力されたら、以下に変換されている。
Namespace(
command='list',
func=handle_list
)
Namespace は引数をまとめた箱
3行目の manager = EmploymentManager() では、データ管理の準備をしている。
具体的には、以下の処理を行っている
data/employees.jsonを読み込む- 社員情報・勤怠情報をメモリに持つ
4行目の args.func(args, manager) では、処理を実行している。
これで、JSONから一覧を表示させている。
[1] Shibata Hiroki (Enginner / member)
[2] 就業太郎 (営業 / マネージャー)
[3] 就業太郎2 (営業 / マネージャー)
コメントを残す