現状のシステムの仕組みを解説

はじめに

今年の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 (営業 / マネージャー)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です