以下に、本発明に係る就業時間計算装置、就業時間計算方法および就業時間計算プログラムの実施形態を、図面に基づいて詳細に説明する。なお、本実施形態によりこの発明が限定されるものではない。
[1.概要]
近年、「働き方改革」というキーワードで、労働時間の適正管理が重要性を増し、それに伴い勤怠管理システムに対する期待とニーズも高まっている。働き方改革では、例えば、労働者の正確な勤務状況を管理部門や所属上長が正確に把握し、過重労働を防止したり、定期的な休暇取得を促したり、といった改善を行う必要がある。そのため、労働者の日々の勤務状況を時間(分)単位で適切に登録し、管理する必要がある。
一方で、多様な働き方に合わせて有効な休暇取得を促すための施策として、時間単位で有給休暇(以下、時間有休と呼ぶ)を取得可能とする例も増えている。時間有休の利用方法の例としては、仕事と生活の調和を図る(日中の通院など)、メリハリのある働き方(仕事を調整して、普段より1時間早く帰る)、などが考えられる。
時間有休の導入により、1日の中で休暇、休憩のように複数の不在事由が組み合わせで発生するようになり、取得時間の組み合わせも多様化する。一方、複数の不在事由の組み合わせが発生する場合、既存の登録方法では管理が複雑になるという課題がある。これは、既存の登録方法では、同一の時間帯に異なる事由を重複して登録することができない(入力エラー)とする制御が一般的であり、入力制御に合わせてデータを分割して登録するなど、入力方法を調整する必要があるためである。
図1および図2を用いて、複数の不在事由が組み合わせで発生する場合の、既存の登録方法について、概略的に説明する。図1は、ある社員(社員ID「A」の社員とする)のある日(2017年9月3日とする)の勤務スケジュールの例を示す。なお、以下では、時刻を24時間表記にて記載する。また、社員ID「A」の社員を、社員Aと呼ぶ。
図1(a)の例では、勤務開始時刻が時刻「09:00」、勤務終了時刻が時刻「18:00」であって、休憩の開始時刻が時刻「12:00」、終了時刻が時刻「13:00」とされている。また、社員Aは、休憩時間を挟んで、開始時刻を時刻「11:00」、終了時刻を時刻「14:00」として時間有休を取得している。すなわち、この場合の時間有休は、時刻「12:00」から時刻「13:00」までの休憩時間を含む。各時間は、図1(b)に示されるように、時間有休による休暇時間が2時間(120分)、休憩時間が1時間(60分)とされる。また、勤務開始時刻から終了時刻までの時間(9時間)からこれら休暇時間および休憩時間を差し引いた6時間(360分)が実労働時間となる。
図2は、図1(a)で示した勤務スケジュールを、既存技術を用いて登録する例を概略的に示している。図2(a)は、図1(a)の勤務スケジュールによる、社員Aの実際の勤怠の様子を模式的に示す。社員Aは、勤務開始時刻の時刻「09:00」に勤務を開始し、時間有休の開始時刻の時刻「11:00」に勤務を休止する。時間有休として取得された時刻「11:00」〜時刻「14:00」の間には、休憩時間(時刻「12:00」〜時刻「13:00」)が挟まれている。この休憩時間は、時間有休による休暇時間中の見做し休憩であって、社員Aが元来持つ権利である。社員Aは、時間有休の終了時刻の時刻「14:00」から勤務を再開し、勤務終了時刻の時刻「18:00」まで勤務を継続する。
図2(b)を用いて、既存技術による登録方法の第1の例について説明する。この第1の例は、時間帯毎の事由を正しく登録する場合の例である。休憩時間(時刻「12:00」〜時刻「13:00」)が予め定められている場合、図2(b)に示すように、時間有休を、休憩時間より前の時刻である時刻「11:00」〜時刻「12:00」の時間帯と、休憩時間より後の時刻である時刻「13:00」〜時刻「14:00」の時間帯とに分けて、勤務スケジュールに対してそれぞれ追加登録する。第1の例では、このように時間有休を2回に分けて登録することで、時間有休と休憩時間との重複登録を避けている。
図2(c)を用いて、既存技術による登録方法の第2の例について説明する。この第2の例は、休憩時間を挟んで2つに分割される時間有休を1つに纏めて登録する例である。この場合、例えば本来時刻「12:00」〜時刻「13:00」である休憩時間をずらして時刻「13:00」〜時刻「14:00」とすることで、時間有休の時間長である2時間分の連続した時間帯(時刻「11:00」〜時刻「13:00」)を確保し、この時間帯に、時間有休を登録する。これにより、時間有休と休憩時間との重複登録を避けることができる。一方で、この第2の例では、時間有休の登録自体は1回分の登録で済むが、休憩の取得時間をずらす作業が必要になる。
なお、図1(a)で示した勤務スケジュールは、パターンの一例であって、実際は、「半日休と休憩」、「私用外出と休憩」、「私用外出と休暇」など事由の組み合わせおよび数の違いや、時間の重複具合の違いによって、様々な派生パターンが発生し得る。特に、図1(a)の例では、時刻「11:00」、時刻「12:00」、時刻「13:00」のように、切りが良い時刻(この場合1時間単位)で事由が区切れているが、実際は、時刻「11:15」、時刻「12:30」、…のように、分単位で正確に管理される場合も想定が必要となる。
また、深夜時間帯(時刻「22:00」〜翌日の時刻「05:00」)の労働に対しては、労働基準法によって深夜割増賃金の支払いが義務付けられている。そのため、入力された労働、休憩および休暇の時間帯が深夜時間帯であるか否かの区別も必要となる。さらに、1日の標準の労働時間(所定労働時間)範囲外の労働について所定外の割増賃金を就業規則により定めている場合があるため、入力された労働、休憩および休暇の時間帯が所定外の時間帯か否かの区別も必要となる。
実施形態では、以下の方針により上述した課題を解決する。
・不在事由の種別毎に、複数の事由が重複した場合の優先度を設ける。
・勤怠情報を登録するための入力画面では、種類の異なる不在事由について、重複する時間帯を含んだ入力を許可する。
・勤怠情報登録後の集計処理内で、事由の区切れ目、重複、優先度を自動判定し、正しい内訳時間を算出する。
・事由の区切れ目以外に、所定労働の開始時刻および終了時刻、ならびに、深夜時間帯の開始時刻および終了時刻の区切れ目も判定し、所定外労働時間、深夜労働時間の集計も可能とする。
より具体的には、本実施形態では、重複部分を有する事由が異なる複数の時間帯の登録を許可し、これら複数の時間帯の開始時刻および終了時刻により各時間帯を分割し、各事由に設定される優先度に従い、分割された時間帯において重複する事由から1つを選択する。これにより、複数の事由が組み合わせで発生する場合であっても、それぞれの事由を分離した登録を簡易な登録方法にて実現できる。
[2.構成]
実施形態に係る就業時間計算装置の構成について説明する。図3は、実施形態に適用可能な就業時間計算システムの構成例を示す。実施形態に係る就業時間計算システムは、例えば、就労時間帯および不在事由に応じて賃金の計算が変わる、企業や店舗などの組織に用いて好適なものである。以下では、実施形態に係る就業時間計算システムが、企業に適用されるものとして説明を行う。
図3(a)は、就業時間計算システムが、ネットワーク30に接続された、実施形態に係る就業時間計算装置10と、サーバ20とを含む例である。就業時間計算装置10は、ディスプレイに、出退勤時刻、休憩時刻、不在時刻などの時刻情報を入力するための入力画面を表示させ、ユーザ(社員など)は、これらの時刻情報を、この入力画面に従い就業時間計算装置10に対して直接的に入力する。
サーバ20は、例えば社員情報を管理するための社員マスタを含み、就業時間計算装置10に対して社員の情報を提供することができる。なお、サーバ20の機能を就業時間計算装置10に含めることも可能である。
図3(b)は、図3(a)で説明した構成に対して、ネットワーク30に接続される入力端末40を追加した例である。就業時間計算装置10は、ユーザが時刻情報を入力するための入力画面を表示させるための表示情報を、ネットワーク30を介して、入力端末40に送信する。入力端末40は、就業時間計算装置10から送られた表示情報に従いディスプレイに入力画面を表示させる。ユーザは、入力端末40に表示された入力画面に従い時刻情報を入力する。入力端末40は、入力された時刻情報を、ネットワーク30を介して就業時間計算装置10に送信する。
図4は、実施形態に係る就業時間計算装置10に適用可能なハードウェア構成の例を示す。図4において、就業時間計算装置10は、CPU(Central Processing Unit)1000と、ROM(Read Only Memory)1001と、RAM(Random Access Memory)1002と、グラフィックI/F(インタフェース)1003と、ストレージ1004と、入出力I/F1005と、通信I/F1006とを含み、これら各部がバス1010により互いに通信可能に接続される。このように、実施形態に係る就業時間計算装置10は、情報処理装置としての一般的なコンピュータを用いて構成できる。
ストレージ1004は、ハードディスクドライブやフラッシュメモリといった不揮発性の記憶媒体であって、CPU1000が動作するためのプログラムや、各種のデータが記憶される。CPU1000は、ストレージ1004やROM1001に記憶されるプログラムに従い、RAM1002をワークメモリとして用いて、この就業時間計算処理装置10の全体の動作を制御する。
グラフィックI/F1003は、CPU1000によりプログラムに従い生成された表示制御信号を、ディスプレイ1020が対応可能な画像信号に変換して出力する。これにより、プログラムに従った画面をディスプレイ1020上に表示させることができる。
入出力I/F1005は、外部機器との間でデータの入出力を行うインタフェースである。入出力I/F1005としては、例えばUSB(Universal Serial Bus)を適用できる。図4の例では、入出力I/F1005に対して、ユーザ操作に応じた制御信号を出力する入力デバイス1021が接続されている。入力デバイス1021からユーザ操作に応じて出力された制御信号は、入出力I/F1005を介してCPU1000に送られる。
入力デバイス1021は、キーボードやポインティングデバイスを適用できる。これに限らず、入力デバイス1021として、表示デバイスと一体的に構成されたタッチパネルを適用させてもよいし、音声入力を行うマイクロホンを適用させてもよい。入力デバイス1021としてマイクロホンを適用させる場合、入出力I/F1005は、アナログ音声信号をディジタル音声信号に変換するA/D変換器を含む。また、入出力I/F1005に対して、出力デバイスとしてプリンタやスピーカを接続することができる。出力デバイスとしてスピーカを適用させる場合、入出力I/F1005は、ディジタル音声信号をアナログ音声信号に変換するD/A変換器を含む。
通信I/F1006は、CPU1000の指示に従い、LAN(Local Area Network)やインターネットといったネットワークに対する通信を行う。
なお、サーバ20、および、図3(b)に示した入力端末40は、図4の就業時間計算装置10と同様の構成にて実現可能であるため、ここでの説明を省略する。
図5は、実施形態に係る就業時間計算装置10の機能を説明するための機能ブロック図である。なお、図5は、図3(a)を用いて説明した構成を想定した機能ブロック図となっている。
図5において、就業時間計算装置10は、制御部110と、記憶部120と、入出力I/F(インタフェース)部130と、通信I/F140部とを含む。これら制御部110、記憶部120、入出力I/F部130および通信I/F部140のうち、制御部110、入出力I/F部130および通信I/F部140は、CPU1000上で動作する就業時間計算プログラムが実行することで構成される。記憶部120は、例えばストレージ1004およびRAM1002の所定の記憶領域が用いられる。
なお、制御部110、記憶部120、入出力I/F部130および通信I/F部140の一部または全部を、互いに協働して動作するハードウェア回路により構成することも可能である。
記憶部120は、入力情報記憶部121およびデータ記憶部125を含むと共に、不在事由マスタ122および優先度マスタ123の各マスタが記憶される。これらのうち、入力情報記憶部121およびデータ記憶部125は、例えばRAM1002またはストレージ1004の所定領域が適用される。また、不在事由マスタ122および優先度マスタ123は、ストレージ1004に不揮発に記憶される。
なお、図5では、記憶部120が社員マスタ124を含むように示されているが、社員マスタ124は、実際にはサーバ20に記憶される。図5の例のように、社員マスタ124を就業時間計算装置10が記憶していてもよい。
記憶部120において、入力情報記憶部121は、入力画面に従いユーザ(例えば社員)により入力された、事由種別および事由種別に対応する時刻情報などを含む勤務情報データが記憶される。
図6は、実施形態に適用可能な、勤務情報データを入力、登録するための入力画面の例を示す。図6(a)において、入力画面200は、後述するUI部111により生成され、例えばディスプレイ1020に表示されるもので、入力部2000および2100と、集計結果情報表示部2200とを含む。入力部2000は、入力画面200に対して入力を行うユーザ(社員)の識別情報(社員IDとする)と、日付とを入力するための各入力領域を含む。なお、日付は、例えば、就業時間計算装置10が備えるカレンダ機能により自動的に入力されるようにしてもよい。
以下では、社員Aが、2017年9月3日における勤務スケジュールを入力するものとして説明を行う。
入力部2100は、勤務時間に関する情報として、事由種別「勤務」に対する出勤時刻および退勤時刻と、事由種別「休憩」に対する開始時刻および終了時刻と、事由種別「不在事由」に対する開始時刻および終了時刻と、を入力するための各入力領域2101、2102、21031、21032、…、21041、21042、…を含む。
入力画面200に含まれる各入力領域について、より詳細に説明する。入力領域2101は、例えば勤務時間として定められた所定時間の開始時刻および終了時刻とを入力するための領域である。所定時間は、就業時間帯としてシステムによって予め定められた時間帯であって、この所定時間の開始時刻および終了時刻は、当該システムにより設定した値を予め入力しておくことができる。ここでいうシステムは、例えば、就業時間計算装置10を含む就業管理システムであって、例えば企業などの組織により運用される。図6(a)の例では、入力領域2101に対し、所定時間の開始時刻および終了時刻として、時刻「09:00」および時刻「17:30」がシステムにより予め入力されている。
入力領域2102は、事由種別が「勤務」に属する勤務時間帯の開始時刻および終了時刻を示す出勤時刻および退勤時刻を入力するための領域である。図6(a)の例では、出勤時刻および退勤時刻が出退実績として示されている。
入力領域21031、21032、…は、それぞれ、事由種別が「休憩」に属する休憩時間帯の開始時刻および終了時刻を入力するための領域である。図6(a)の例では、入力領域21031、21032、…として示されるように、1日の中に複数の休憩時間帯(休憩1、休憩2、…)を設定可能となっている。また、図6(a)の例では、「休憩1」で示される休憩時間帯は、開始時刻および終了時刻として、時刻「12:00」および時刻「13:00」がシステムにより予め入力されている。
入力領域21041、21042、…は、それぞれ、事由種別が「不在事由」に属する不在事由時間帯の不在事由、開始時刻および終了時刻を入力するための領域である。図6(a)の例では、入力領域21041、21042、…として示されるように、1日の中に複数の不在事由(不在事由1、不在事由2、…)を設定可能となっている。
なお、各入力領域21041、21042、…において、「事由」で示される領域は、不在事由の内容を入力するための領域である。当該領域は、詳細を後述する不在事由マスタ122に基づき複数の事由種別から選択された不在事由の内容が入力される。
入力情報記憶部121は、入力部2100に含まれる各入力領域2101、2102、21031、21032、…、21041、21042、…に入力された各情報を、勤務情報データとして、入力部2000に入力される社員IDおよび日付と関連付けて記憶する。
入力画面200において、集計結果情報表示部2200は、上述した入力部2100に含まれる各入力領域2101、2102、21031、21032、…、21041、21042、…に入力された値に基づき集計した集計結果である実績集計情報が表示される。図6(a)の例では、集計結果情報表示部2200は、それぞれ所定内実労働時間、所定外実労働時間、実労働時間、深夜労働時間、休憩時間、有給休暇時間および不就労時間の集計結果を表示するための表示領域2201〜2207を含む。これら各表示領域2201〜2207に表示される各時間の集計方法については、後述する。
なお、図6の例では、入力画面200は、各項目が横方向に並べられているが、これはこの例に限定されず、入力画面200のレイアウトは任意である。例えば、各項目を縦方向に並べ、明細形式の画面としてもよい。また、入力情報記憶部121は、入力画面200に入力された勤務情報データを、例えば入力画面200に準じた構成のテーブルにより入力情報記憶部121に記憶する。
次に、実施形態に係る不在事由マスタ122について、より具体的に説明する。図7は、実施形態に係る不在事由マスタ122の例を示す。不在事由マスタ122は、不在に係る事由種別と、当該不在の内容を示す不在事由とが関連付けられて、予め記憶部120に記憶される。図7において、不在事由マスタ122は、レコードに「不在事由」、「不在単位区分」および「事由種別」の各項目を含み、ユーザの不在事由を定義する。項目「不在事由」は、不在事由の名称が定義される。図7の例では、項目「不在事由」に対して、「終日有休」、「前半有休」、「後半有休」、「時間有休」、「介護休暇」、「遅刻」および「終日欠勤」の各不在事由名が定義される。
上述した入力画面200において、各入力領域21041、21042、…における「事由」で示される領域に入力される不在事由の内容は、この項目「不在事由」に定義される各不在事由名から選択される。
項目「不在単位区分」は、不在とする時間帯の単位が定義される。図7の例では、「終日」、「前半」、「後半」および「時間」が定義されている。これらのうち、「終日」、「前半」および「後半」は、勤務時間として規定される所定時間における、予め定められた時間帯を不在の単位とする。例えば、「終日」は、当該所定時間の開始時刻から終了時刻までの時間帯、「前半」および「後半」は、それぞれ、当該所定時間に対して規定される前半(例えば午前中)および後半(例えば午後)の時間帯を不在の単位とする。これら「終日」、「前半」および「後半」は、時間帯を固定的とするなどの入力制御が可能とされる。また、「時間」は、任意の時刻を設定可能であり、不在の単位の時間帯を固定しない。図7の例では、不在事由「終日有休」、「介護休暇」および「終日欠勤」の不在単位区間が「終日」、不在事由「前半有休」および「後半有休」の不在単位区間がそれぞれ「前半」および「後半」とされ、不在事由「時間有休」および「遅刻」の不在単位区間が「時間」とされている。
項目「事由種別」は、不在に係る事由種別であって、全ての事由種別のうち不在事由の、例えばその企業における制度上の種別を定義する。図7の例では、「有給休暇」、「無給休暇」および「不就労」の3種類の事由種別が定義されている。これらのうち、事由種別「有給休暇」および「無給休暇」はそれぞれ休暇として扱われ、「有給休暇」は既定の賃金が支払われる事由種別であり、「無給休暇」は賃金が支払われない事由種別である。一方、事由種別「不就労」は、休暇としては扱われない不在事由であって、賃金が支払われず、場合によっては罰則が課せられる事由種別である。
次に、実施形態に係る優先度マスタ123について、より具体的に説明する。図8は、実施形態に係る優先度マスタ123の例を示す。図8において、優先度マスタ123は、レコードに「事由種別」および「優先度」の各項目を含み、事由種別に対して優先度を関連付ける。図8の例では、項目「優先度」において最も優先度の高い優先度「1」から、最も優先度の低い優先度「4」まで、4段階に優先度が定義されている。この各優先度「1」〜「4」に対して、項目「事由種別」の定義される「休憩」、「有給休暇」、「無給休暇・不就労」および「勤務」がそれぞれ関連付けられている。
より詳細には、事由種別「休憩」は、一定以上の労働時間につき必ず付与される権利であって、最も高い優先度が設定される。事由種別「有給休暇」は、法令や就業規則の定めにより、特定の条件下で有給で取得する権利がある休暇であって、休憩の次に高い優先度が設定される。 事由種別「無給休暇」および「不就労」(図8では、「無給休暇・不就労」として纏めて示している)は、介護休暇、私用外出、欠勤、自己都合による遅刻など、無給扱いまたは罰則対象とみなされるような不在時間であって、休憩および不在に係る事由において、最も低い優先度が設定される。また、事由種別「勤務」は、上述の休憩および不在を全て控除した結果、実労働時間と看做される時間であって、他の休憩、不在事由と比べて最も低い優先度が設定される。
なお、優先度マスタ123において項目「事由種別」に定義される各事由種別に対する優先度の関連付けは、図8の例に限定されない。また、項目「事由種別」に定義される事由種別も、図8の例に限定されない。さらに、不在自由に対する優先度は、法令や就業規則を鑑みて優先度マスタなどによる設定切替にすることも可能だが、ユーザ(社員)が持つ権利の強い不在事由ほど優先度を高くするのが合理的である。
データ記憶部125は、例えば制御部110のワークエリアとして用いられる記憶領域であって、入力情報記憶部121に記憶される勤務情報データに応じた処理に基づき生成される、事由明細データ300、基準時刻明細データ310、事由明細分割データ320および事由明細分割抽出データ330を含む各データが揮発的あるいは不揮発的に記憶される。これら事由明細データ300、基準時刻明細データ310、事由明細分割データ320および事由明細分割抽出データ330の具体的な例については、後述する。
図5において、制御部110は、UI(User Interface)部111と、記憶管理部112と、作成部113と、分割部114と、選択部115と、集計部116と、を含む。
UI部111は、上述した入力画面200を生成し、生成した入力画面200をディスプレイ1020に表示させる。また、UI部111は、入力画面200に応じて入力された各データを受け付ける。例えば、UI部111は、入力画面200において、入力部2000に入力された社員IDおよび日付情報と、入力部2100の各入力領域に入力された勤務情報データとを、入出力I/F1005を介して受け取る。UI部111は、受け取った社員IDおよび日付情報、ならびに、勤務情報データを、記憶管理部112に渡す。
記憶管理部112は、記憶部120に記憶されるデータの管理、ならびに、記憶部120に対するデータの記憶および記憶部120からのデータの読み出しを制御する。例えば、記憶管理部112は、UI部111から渡された社員ID、日付情報および勤務情報データを、記憶部120に含まれる入力情報記憶部121に記憶する。また、記憶管理部112は、記憶部120に記憶されるデータ(例えば社員マスタ124)がサーバ20上のデータである場合には、サーバ20に対して、データの記憶および更新要求と、データの取得要求とを送信する。
作成部113は、入力画面200に応じて入力された複数の時刻情報に基づき、ある社員(社員Aとする)がある勤務日(2017年9月3日とする)において設定した事由種別を列挙して、各事由種別に対し、優先度と、開始時刻および終了時刻とを関連付けたデータである事由明細データ300を作成する。作成部113は、さらに、生成した事由明細データ300に含まれる複数の開始時刻および終了時刻と、予め定められた時刻とに従い、1日の時間に区切りを入れ、隣接する区切りに挟まれた区間を作成する(基準時刻明細データ310)。すなわち、作成部113は、1日の時間に対して、記憶部120の入力情報記憶部121に記憶された複数の時刻情報が示す時刻と、予め定められた時刻と、により区切った区切りを設定し、隣接する該区切りに挟まれた区間を作成する。
分割部114は、事由明細データ300と基準時刻明細データ310とを所定の条件に従い結合し、1日の時間を、基準時刻明細データ310に基づき隣接する区切りに挟まれた区間に分割した事由明細分割データ320を生成する。すなわち、分割部114は、勤務時間帯、休憩時間帯および不在時間帯を、作成部113により作成された区間毎に分割して分割時間帯を生成する。
選択部115は、事由明細分割データ320に基づき、事由明細分割データ320で分割された各区間において、異なる事由種別が重複する区間毎に、最も高い優先度が関連付けられた事由種別を選択して事由明細分割抽出データ330を生成する。すなわち、選択部115は、作成部113により作成された区間それぞれのうち、1以上の分割時間帯を含む区間において、分割時間帯のうち最も高い優先度が設定された事由種別に対応する分割時間帯を、区間毎に選択する。
集計部116は、選択部115により選択された各分割時間帯を、対応する事由種別が同一の分割時間帯毎に集計する。集計結果は、UI部111により、入力画面200に含まれる集計結果情報表示部2200に表示される。これに限らず、UI部111は、集計結果を表示させる表示画面を入力画面200とは別途に生成してもよい。また、集計部116は、集計結果を記憶部120に記憶してもよいし、ネットワーク30を介して外部(例えばサーバ20)に送信してもよい。
就業時間計算装置10において、入出力I/F130部は、入力装置150および出力装置151が接続される。一例として、図3(a)に示した就業時間計算システムにおいては、入力装置150は、例えば図4における入力デバイス1021に対応し、入出力I/F部130は、入出力I/F1005を制御して、入力デバイス1021から出力された制御信号に応じた入力データを生成し、制御部110に渡す。出力装置151は、例えば図4におけるディスプレイ1020であって、入出力I/F部130は、グラフィックI/F1003を制御して、CPU1000により生成された表示制御信号を画像信号に変換してディスプレイ1020に供給する。
他の例として、図3(b)に示した就業時間計算システムにおいては、入力端末40に接続される入力デバイスおよびディスプレイを、それぞれ入力装置150および出力装置151に対応させることができる。
通信I/F部140は、図4における通信I/F1006を制御して、ネットワーク30に対する通信を行う。
就業時間計算装置10は、通信I/F部140の制御により、ネットワーク30を介してサーバ20との間で通信を行うことができる。なお、記憶部120に記憶される各マスタは、サーバ20に記憶させてもよい。
就業時間計算装置10における実施形態に係る各機能を実現するための就業時間計算プログラムは、インストール可能な形式または実行可能な形式のファイルでコンピュータにて読み取り可能な記録媒体に記録して提供される。このコンピュータで読み取り可能な記録媒体としては、メモリーカード、USB(Universal Serial Bus)メモリ、SD(Secure Digital)カード、フレキシブルディスク、光磁気ディスク、ROM、EPROM(Erasable Programmable Read Only Memory)、EEPROM(登録商標)(Electrically Erasable and Programmable Read Only Memory)、CD(Compact Disk)、MO(Magneto-Optical disk)、DVD(Digital Versatile Disk)、および、Blu−ray(登録商標) Discなどの任意の可搬用の物理媒体を含むものとする。したがって、本明細書で以下に説明するような処理または処理方法を実行するためのプログラムを格納した記録媒体もまた本発明を構成することとなる。
これに限らず、当該就業時間計算プログラムを、インターネットなどのネットワークに接続されたコンピュータ上に格納し、当該ネットワークを介してダウンロードさせることにより提供してもよい。また、当該就業時間計算プログラムをインターネットなどのネットワークを経由して提供または配布するように構成してもよい。
当該就業時間計算プログラムは、制御部110(UI部111、記憶管理部112、作成部113、分割部114、選択部115および集計部116)、入出力I/F部130および通信I/F部140を含むモジュール構成となっている。実際のハードウェアとしては、CPU1000がROM1001などの記憶媒体から当該就業時間計算プログラムを読み出して実行することにより、上述した各部がRAM1002などの主記憶装置上にロードされ、制御部110(UI部111、記憶管理部112、作成部113、分割部114、選択部115および集計部116)、入出力I/F部130および通信I/F部140が主記憶装置上に生成されるようになっている。
また、「プログラム」とは、任意の言語または記述方法にて記述されたデータ処理方法であり、ソースコードまたはバイナリコード等の形式を問わない。なお、「プログラム」は必ずしも単一的に構成されるものに限られず、複数のモジュールやライブラリとして分散構成されるものや、OS(Operating System)に代表される別個のプログラムと協働してその機能を達成するものをも含む。
[3.実施形態に係る処理]
次に、実施形態に係る処理について説明する。図9は、実施形態に係る就業時間計算装置10における処理を示す一例のフローチャートである。図9のフローチャートの実行に先立って、図6(a)を用いて説明した入力画面200に応じて、ユーザ(社員)により、入力部2100に含まれる各入力領域2101、2102、21031、21032、…、21041、21042、…に対して、所定時間と、出退勤時刻と、休憩の開始および終了時刻と、不在事由の開始および終了時刻と、を含む勤務情報データが入力される。なお、入力領域21031、21032、…、および、入力領域21041、21042、…への入力は、必要に応じて行われる。
上述した図6(a)の入力画面200において、入力部2100に含まれる各入力領域2102、21031、21032、…、21041、21042、…に、各時刻情報および不在事由が入力された例を、図6(b)に示している。ここでは、図1(a)を用いて説明した勤務スケジュールに従い、各時刻情報および不在事由が入力されるものとする。
なお、図6(a)および図6(b)の例では、入力部2000の各入力領域、および、入力部2100の入力領域2101および21031は、システムにより予め各値が入力されているものとする。より具体的には、入力部2000の各入力領域に対して、社員ID「A」と、勤務日「2017/09/03」が、システムによりそれぞれ入力される。また、入力部2100の入力領域2101に、所定時間の開始時刻として時刻「09:00」が、終了時刻として時刻「17:30」が、システムによりそれぞれ入力される。さらに、入力領域21031に対し、休憩1の休憩時間帯の開始時刻として時刻「12:00」が、終了時刻として時刻「13:00」が、システムによりそれぞれ入力される。
一方、入力領域2102、21031、21032、…、21041、21042、…のうち、システムにより予め入力がなされる入力領域21031を除く各入力領域は、入力画面200に従いユーザ(例えば社員A)により各値が入力される。図6(b)の例では、入力領域2102に対し、出勤時刻として時刻「09:00」が、退勤時刻として時刻「18:00」が社員Aによりそれぞれ入力されている。また、入力領域21041に対し、不在事由1の不在時間帯の開始時刻として時刻「11:00」が、終了時刻として時刻「14:00」がそれぞれ入力されている。また、入力領域21041において、項目「事由」に対して、不在事由「時間有休」が入力されている。
ここで、図1(a)に示した勤務スケジュールでは、時間有休として取得された時間帯(時刻「11:00」〜時刻「14:00」)が、休憩として設定された時間帯(時刻「12:00」〜時刻「13:00」)を含んでいる。図6(b)に例示されるように、入力画面200において、入力領域21041に、事由が不在事由である「時間有休」である不在時間帯の開始時刻および終了時刻として時刻「11:00」および「14:00」が入力される。また、入力領域21031に、入力領域21041に入力される不在時間帯に含まれる時間帯として、事由が「休憩」である休憩時間帯の開始時刻および終了時刻として時刻「12:00」および「13:00」が入力される。
このように、実施形態に係る入力画面200は、入力領域21031と入力領域21041とに示されるように(それぞれ太枠を付して示す)、このような、異なる事由の、重複する時間帯の入力を許容する。
また、実施形態に係る入力画面200は、不在事由を入力するための入力領域21041、21042、…についても、「事由」で示される領域に入力される不在事由の内容が異なれば、重複する時間帯の入力が許容される。例えば、入力画面200は、入力領域21041および21042に、上述した「私用外出」による不在と、「休暇(時間有休)」による不在とを、時間帯を重複させて入力できる。
図6(b)において、集計結果情報表示部2200に含まれる各表示領域2201〜2207は、上述した入力部2100に含まれる各入力領域2101、2102、21031、21032、…、21041、21042、…に入力された値に基づき集計した集計結果である実績集計情報が表示される。
図9の説明に戻り、ステップS100で、作成部113は、ある社員(社員Aとする)のある勤務日(2017年9月3日とする)について、入力画面200に入力された勤務情報データを、UI部111から取得する。次のステップS101で、作成部113は、ステップS100で取得した勤務情報データから、事由明細データ300を生成する。次のステップS102で、作成部113は、ステップS101で生成した事由明細データ300と、予め定められた所定労働時間および深夜労働時間に基づき、基準時刻明細データ310を生成する。
次のステップS103で、分割部114は、ステップS101で生成した事由明細データ300と、ステップS102で生成した基準時刻明細データ310とを所定の条件に従い結合して、1日の時間帯を各区間に分割した事由明細分割データ320を生成する。次のステップS104で、選択部115は、ステップS103で生成した事由明細分割データ320を、1日の時間帯を分割した各区間の開始時刻の順位に従いグルーピングする。次のステップS105で、選択部115は、ステップS104でグルーピングした各グループ内で最も優先度の高い事由を抽出し、抽出された事由に対応する区間により事由明細分割抽出データ330を生成する。
次のステップS106で、集計部116は、ステップS105で生成された事由明細分割抽出データ330から、所定の集計条件に従い区間を抽出して、当該区間を実績として集計する。集計結果は、例えばUI部111に渡されて入力画面200の集計結果情報表示部2200の各表示領域2201〜2207に表示される。また、集計結果は、記憶管理部112に渡されて、社員IDおよび日付情報と関連付けられて記憶部120に記憶される。記憶管理部112は、集計結果を、社員IDおよび日付情報と関連付けて、例えば社員マスタ124に記憶することができる。
[4.実施形態に係る処理の詳細]
次に、図9のフローチャートのステップS100〜ステップS106の処理について、より詳細に説明する。
[4−1.ステップS100]
ステップS100において作成部113が取得する勤務情報データは、少なくとも、入力領域2101に入力された所定時間の開始時刻および終了時刻と、入力領域2102に入力された、勤務時間帯の開始時刻および終了時刻である出勤時刻および退勤時刻と、入力領域21031に入力された休憩時間帯の開始時刻および終了時刻と、を含む。図6(b)の例では、勤務情報データは、さらに、入力領域21041に入力された、不在事由と、不在時間帯の開始時刻および終了時刻と、を含む。
[4−2.ステップS101]
ステップS101において、作成部113は、ステップS100で取得した勤務情報データから事由明細データ300を作成する。
図10は、実施形態に係る事由明細データ300の例を概略的に示す。図10の例では、事由明細データ300は、「社員」、「勤務日」、「事由種別」および「優先度」と、「開始時刻」および「終了時刻」との各項目を含むレコードによるテーブルとして示されている。これらのうち、項目「社員」および「勤務日」は、入力画面200の入力領域2000に入力される社員IDおよび勤務日の値が、各レコードに共通の値として格納される。
図10の例では、事由明細データ300の各レコードは、入力画面200における各入力領域2101、2102、21031、21032、…、21041、21042、…のうち、所定時間の入力領域2101を除く各入力領域毎に作成される。
項目「開始時刻」および「終了時刻」は、それぞれ、入力画面200における各入力領域2102、21031、21032、…、21041、21042、…それぞれに入力された開始時刻および終了時刻(入力領域2102においては出勤時刻および退勤時刻)が格納される。項目「事由種別」は、そのレコードの項目「開始時刻」および「終了時刻」に格納される値に対応する事由種別が格納される。また、項目「優先度」は、そのレコードの項目「事由種別」に格納される事由種別に、優先度マスタ123において関連付けられる優先度が格納される。
図11は、実施形態に係る作成部113が、図6(b)の入力画面200の各入力領域2101、2102、21031、21032、…、21041、21042、…に入力された値に基づき事由明細データ300を作成する例を、模式的に示す。図11の上段は、図6(b)の入力画面200の入力部2000および2100を抜粋して示し、下段は作成された事由明細データ300の例を示している。
事由明細データ300の第1レコードは、図中に太枠および矢印により示すように、入力領域2102に基づくレコードである。作成部113は、この第1レコードに対し、項目「開始時刻」および「終了時刻」に、入力領域2102に入力される勤務時間帯の開始時刻および終了時刻をそれぞれ格納し、項目「事由種別」に、入力領域2102に対応する事由種別「勤務」を格納する。また、作成部113は、優先度マスタ123に基づき、項目「優先度」に対して、事由種別「勤務」に対応する優先度「4」を格納する。
作成部113は、図中に太枠および矢印により示すように、事由明細データ300の第2レコードを、入力領域21031の入力内容に基づき作成する。すなわち、作成部113は、項目「開始時刻」および「終了時刻」に、入力領域21031に入力される勤務時間帯の開始時刻および終了時刻をそれぞれ格納し、項目「事由種別」に、入力領域21031に対応する事由種別「休憩」を格納し、優先度マスタ123に基づき、項目「優先度」に、事由種別「休憩」に対応する優先度「1」を格納して、当該第2レコードを作成する。
作成部113は、図中に太枠および矢印により示すように、事由明細データ300の第3レコードを、入力領域21041の入力内容に基づき作成する。すなわち、作成部113は、項目「開始時刻」および「終了時刻」に、入力領域21041に入力される勤務時間帯の開始時刻および終了時刻をそれぞれ格納する。また、作成部113は、入力領域21041における項目「事由」に入力された不在事由「時間有休」に基づき不在事由マスタ122を参照して、当該不在事由「時間有休」に対応する事由種別「有給休暇」を取得し、取得した事由種別「有給休暇」を項目「事由種別」に格納する。作成部113は、優先度マスタ123を参照して、この事由種別「有給休暇」に対応する優先度「2」を、項目「優先度」に格納して、当該第3レコードを作成する。
この、事由明細データ300の項目「事由種別」に格納すべき値は、各入力領域2101、2102、21031、21032、…、21041、21042、…について、作成部113において予め定めておくことができる。例えば、作成部113は、入力領域2102に対して事由種別「勤務」、入力領域21031、21032、…に対して事由種別「休憩」を予め定める。また、入力領域21041、21042、…については、項目「事由」に対する入力内容に基づき不在事由マスタ122を参照して事由種別を取得するように、予め定める。
[4−3.ステップS102]
ステップS102において、作成部113は、ステップS101で生成した事由明細データ300と、予め定められた所定労働時間および深夜労働時間に基づき、基準時刻明細データ310を生成する。
図12は、実施形態に係る基準時刻明細データ310の例を概略的に示す。図12において、基準時刻明細データ310は、「社員」、「勤務日」、「基準時刻」および「順位」の各項目を含むレコードによるテーブルとして示されている。これらのうち、項目「社員」および「勤務日」は、入力画面200の入力領域2000に入力される社員IDおよび勤務日の値が、各レコードに共通の値として格納される。
項目「基準時刻」は、分割部114が事由明細分割データ320を生成するために1日の時間帯を分割する際の基準となる時刻を定義する。より具体的には、作成部113は、事由明細データ300に含まれる各開始時刻および終了時刻と、システムにより予め定められた時刻とを、項目「基準時刻」の値として、時刻順に列挙する。予め定められた時刻は、例えば、勤務時間として定められた所定時間の開始時刻および終了時刻と、深夜時間帯の開始時刻および終了時刻と、を含む。項目「順位」は、各レコードについて、項目「基準時刻」に格納される時刻の若い方から順次増加する値を設定する。
図13は、実施形態に係る作成部113が、図6(b)の入力画面200の各入力領域2101、2102、21031、21032、…、21041、21042、…に入力された値と、図11に示した事由明細データ300と、に基づき基準時刻明細データ310を作成する例を、模式的に示す。図13の上段が図6(b)の入力画面200における入力部2100を、中段が事由明細データ300を、下段が基準時刻明細データ310を、それぞれ示している。
作成部113は、図中に太枠にて示されるように、入力画面200において入力部2100の入力領域2101にシステムにより入力される所定時間の開始時刻および終了時刻と、事由明細データ300の各レコードに含まれる各開始時間および終了時間と、を取得する。作成部113は、取得した各開始時刻および終了時刻を項目「基準時刻」の値として含む各レコードを作成し、作成した各レコードの項目「順位」に対して、項目「基準時刻」に格納される時刻順に増加する値を格納する。
基準時刻明細データ310は、入力領域2101に入力される開示時刻「09:00」と、終了時刻「17:30」と、事由明細データ300の項目「開始時刻」および「終了時刻」に格納される各時刻「09:00」、「18:00」、「12:00」、「13:00」、「11:00」および「14:00」と、システムにより設定される深夜時間帯の開始時刻「22:00」および終了時刻「05:00」と、が各レコードの項目「基準時刻」に、時刻順に格納される。項目「順位」は、各レコードの項目「基準時刻」の時刻の若い方から順に、「1」〜「9」の値が各レコードに格納される。
図13の例では、項目「順位」が値「1」のレコードは、項目「基準時刻」に、システム固定の値である深夜時間帯の終了時刻「05:00」が格納される。項目「順位」が値「2」のレコードは、所定時間の開始時刻および出勤時刻である時刻「09:00」が格納される。このように、異なる事由種別で同一の時刻については、1のレコードに纏めて格納する。項目「順位」が値「3」のレコードは、休憩の開始時刻である時刻「11:00」が格納される。以降、項目「順位」が値「4」〜「9」についても同様に、有給休暇の開始時刻「11:00と」、休憩の開始時刻「12:00」と、休憩の終了時刻「13:00」と、有給休暇の終了時刻「14:00」と、所定時間の終了時刻「17:30」と、勤務終了時刻(退勤時刻)「18:00」と、システム固定値である深夜時間帯の開始時刻「22:00」と、が項目「基準時刻」にそれぞれ格納される。
1日の時間帯は、基準時刻明細データ310により、項目「基準時刻」に格納される、時間的に隣接する時刻に挟まれた時間帯による区間に分割される。図13の例では、1日の時間帯が、時刻「05:00」〜時刻「09:00」の時間帯による区間と、時刻「09:00」〜時刻「11:00」の時間帯による区間と、時刻「11:00」〜時刻「12:00」の時間帯による区間と、時刻「12:00」〜時刻「13:00」の時間帯による区間と、時刻「13:00」〜時刻「14:00」の時間帯による区間と、時刻「14:00」〜時刻「17:30」の時間帯による区間と、時刻「17:30」〜時刻「18:00」の時間帯による区間と、時刻「18:00」〜時刻「22:00」の時間帯による区間と、にそれぞれ分割される。
また、図13では省略されているが、1日の開始および終了の時刻を時刻「00:00」とした場合、時刻「22:00」〜翌日の時刻「00:00」、および、時刻「00:00」〜時刻「05:00」の各時間帯による各区間での分割もなされる。
なお、項目「基準時刻」に格納される値の最小単位は、特に限定されない。例えば、項目「基準時刻」に格納される値の最小単位を5分や10分としてもよいし、1分単位、秒単位などさらに細かい単位で値を格納してもよい。
[4−4.ステップS103]
ステップS103において、分割部114は、ステップS101で生成した事由明細データ300と、ステップS102で生成した基準時刻明細データ310と、を所定の条件に従い結合して、勤務時間帯、休憩時間帯および不在時間帯を各区間に分割した事由明細分割データ320を生成する。
より具体的には、分割部114は、事由明細データ300の各レコードに対して、項目「開始時刻」および「終了時刻」に格納される各値(開始時刻および終了時刻)に対して、項目「基準時刻」の値(基準時刻)が下記の式(1)の条件を満たす、基準時刻明細データ310のレコードを結合する。
開始時刻≦基準時刻<終了時刻 …(1)
図14は、式(1)に従い事由明細データ300と基準時刻明細データ310とを結合して生成した、実施形態に係る事由明細分割データ320の例を概略的に示す。図14において、事由明細分割データ320は、「社員」、「勤務日」、「事由種別」、「優先度」、「開始時刻」、「終了時刻」、「分割開始時刻」、「分割開始順位」、「分割終了時刻」、および、「分割終了順位」の各項目を含むレコードによるテーブルとして示されている。これらのうち、項目「社員」および「勤務日」は、事由明細分割データ320のキーとなる項目であって、入力画面200の入力領域2000に入力される社員IDおよび勤務日の値が、各レコードに共通の値として格納される。
事由明細分割データ320において、項目「事由種別」、「優先度」、「開始時刻」および「終了時刻」は、結合された事由明細データ300におけるレコードの項目である。項目「分割開始時刻」および「分割開始順位」は、それぞれ、結合された事由明細データ300における、項目「事由種別」に示される事由種別の時間帯を、基準時刻明細データ310の各レコードにおける項目「基準時刻」に格納される各時刻に基づき分割した区間の開始時刻と、当該開始時刻の順位とが格納される。項目「分割終了時刻」および「分割終了順位」は、当該区間の終了時刻と、当該終了時刻の順位とが格納される。
図15は、実施形態に係る分割部114が、図11に示した事由明細データ300と、図13に示した基準時刻明細データ310とを結合して事由明細分割データ320を作成する例を、模式的に示す。図15の上段左側が事由明細データ300を、上段右側が基準時刻明細データ310を、下段が事由明細分割データ320を、それぞれ示している。
図15において、事由明細データ300は、事由種別「勤務」、「休憩」および「有給休暇」の3つのレコードを含んでいる。これらのうち、事由種別「勤務」のレコードを例にとって、事由明細分割データ320の生成方法について説明する。事由種別「勤務」のレコードは、項目「開始時刻」および「終了時刻」に対し、それぞれ開始時刻および終了時刻を示す時刻「09:00」および「18:00」が格納されている。これら時刻「09:00」および「18:00」に上述した式(1)を適用すると、基準時刻明細データ310において、順位「2」〜「7」の各レコードが式(1)を満足していることが分かる。
すなわち、基準時刻明細データ310において、順位「1」のレコードの項目「基準時刻」に格納される時刻「5:00」は、開始時刻を示す時刻「09:00」より前の時刻であり、式(1)を満たさない。基準時刻明細データ310における順位「2」のレコードの項目「基準時刻」に格納される時刻「09:00」は、開始時刻を示す時刻「09:00」と同一であり、式(1)を満たす。基準時刻明細データ310において、順位「3」〜「7」の各レコードの項目「基準時刻」は、時刻「11:00」から時刻「17:30」までの時刻が格納され、これら各時刻は、開始時刻を示す時刻「09:00」より後の時刻であり、且つ、終了時刻を示す時刻「18:00」より前の時刻であるため、何れも式(1)を満たす。一方、基準時刻明細データ310において、順位「8」のレコードの項目「基準時刻」に格納される時刻「18:00」は、終了時刻を示す時刻「18:00」と同一であり、式(1)を満たさない。
分割部114は、上述した式(1)による判定結果に従い、基準時刻明細データ310における、項目「順位」の値が「2」〜「7」の各レコードを、事由明細データ300における、事由種別「勤務」のレコードに対して結合する(図15中の矢印A参照)。このとき、基準時刻明細データ310における項目「基準時刻」および「順位」に格納される各値を、事由明細分割データ320における項目「分割開始時刻」および「分割開始順位」にそれぞれ格納する(図15中の矢印B参照)。
さらに、分割部114は、基準時刻明細データ310において、事由明細データ300に結合した各レコードの項目「順位」の値を1だけ大きい値にずらした値を項目「順位」の値とする各レコードを取得する。分割部114は、こうして取得した各レコードに含まれる項目「基準時刻」および「順位」に格納される各値を、事由明細分割データ320における項目「分割終了時刻」および「分割終了順位」にそれぞれ格納する(図15中の矢印C参照)。
事由明細データ300における事由種別「休憩」および「有給休暇」の各レコードについても同様である。分割部114は、項目「開始時刻」および「終了時刻」に格納される各時刻と、基準時刻明細データ310の各レコードの項目「基準時刻」に格納される時刻とにより、式(1)に基づく条件判定を行い、条件を満たす基準時刻明細データ310のレコードを、事由明細データ300における対象のレコードと結合する。また、分割部114は、基準時刻明細データ310における項目「基準時刻」および「順位」に格納される各値に基づき、事由明細分割データ320の項目「分割開始時刻」および「分割開始順位」、ならびに、「分割終了時刻」および「分割終了順位」に対して値を格納する。
図15の例では、事由明細データ300における事由種別「勤務」のレコードにおける項目「開始時刻」および「終了時刻」の時刻「09:00」および「18:00」と、基準時刻明細データ310の項目「基準時刻」の各時刻に基づき、事由明細分割データ320において、項目「分割開始時刻」の値が時刻「09:00」、「11:00」、「12:00」、「13:00」、「14:00」および「17:30」であり、項目「分割開始順位」のそれぞれ対応する値が順位「2」〜「7」である6のレコードが生成される。
また、この6のレコードにおいて、それぞれの項目「分割終了時刻」の値が、基準時刻明細データ310における項目「基準時刻」の、項目「分割開始順位」の順位「2」〜「7」を1だけ大きい値にずらした順位「3」〜「8」に対応する各時刻「11:00」、「12:00」、「13:00」、「14:00」、「17:30」および「18:00」とされる。また、当該6のレコードそれぞれの項目「分割終了順位」の値が、順位「3」〜「8」とされる。すなわち、例えば図15に示す事由明細分割データ320の1番目のレコードにおいて、項目「分割開始時刻」、「分割開始順位」、「分割終了時刻」および「分割終了順位」の値が、それぞれ時刻「09:00」、「2」、「11:00」および「3」となる。
同様に、事由明細データ300における事由種別「休憩」のレコードにおける項目「開始時刻」および「終了時刻」の時刻「12:00」および「13:00」と、基準時刻明細データ310の項目「基準時刻」の各時刻に基づき、事由明細分割データ320において、項目「分割開始時刻」の値が時刻「12:00」であり、項目「分割開始順位」の対応する値が順位「4」である1のレコードが生成される。この1のレコードにおいて、項目「分割終了時刻」の値が、基準時刻明細データ310における項目「基準時刻」の、項目「分割開始順位」の順位「4」を1だけ大きい値にずらした順位「5」に対応する時刻「13:00」とされる。また、当該1のレコードの項目「分割終了順位」の値が、順位「5」とされる。
さらに同様に、事由明細データ300における事由種別「有給休暇」のレコードにおける項目「開始時刻」および「終了時刻」の時刻「11:00」および「14:00」と、基準時刻明細データ310の項目「基準時刻」の各時刻に基づき、事由明細分割データ320において、項目「分割開始時刻」の値が時刻「11:00」、「12:00」および「13:00」であり、項目「分割開始順位」のそれぞれ対応する値が順位「3」〜「5」である3のレコードが生成される。この3のレコードにおいて、それぞれの項目「分割終了時刻」の値が、基準時刻明細データ310における項目「基準時刻」の、項目「分割開始順位」の順位「3」〜「5」を1だけ大きい値にずらした順位「4」〜「6」に対応する各時刻「12:00」、「13:00」および「14:00」とされる。また、当該3のレコードそれぞれの項目「分割終了順位」の値が、順位「4」〜「6」とされる。
なお、事由明細分割データ320の各レコードにおいて、項目「分割開始時刻」に格納される時刻と、項目「分割終了時刻」に格納される時刻とに挟まれた区間を、区間a〜jとして、図15の事由明細分割データ320の右端に示している。
具体的には、項目「事由種別」の値が「勤務」である各レコードにおいて、時刻「09:00」および時刻「11:00」に挟まれる区間aと、時刻「11:00」および時刻「12:00」に挟まれる区間bと、時刻「12:00」および時刻「13:00」に挟まれる区間cと、時刻「13:00」および時刻「14:00」に挟まれる区間dと、時刻「14:00」および時刻「17:30」に挟まれる区間eと、時刻「17:30」および時刻「18:00」に挟まれる区間fと、が形成される。また、項目「事由種別」の値が「休憩」であるレコードにおいて、時刻「12:00」および時刻「13:00」に挟まれる区間gが形成される。さらに、項目「事由種別」の値が「有給休暇」である各レコードにおいて、時刻「11:00」および時刻「12:00」に挟まれる区間hと、時刻「12:00」および時刻「13:00」に挟まれる区間iと、時刻「13:00」および時刻「14:00」に挟まれる区間jと、が形成される。
図15を用いて説明した、分割部114による事由明細分割データ320の生成処理は、事由明細データ300を、1日の勤怠計算上の区切れ目となる開始時刻および終了時刻で短冊状のブロックに分割する処理である。
図16は、図15に示した実施形態に係る事由明細分割データ320を、1日の時間帯を分割するブロックを用いて表した図である。図16において、各行は、各事由種別について、事由明細データ300の項目「開始時刻」および「終了時刻」に従った時間帯が示されている。また、図16では、1日の時間帯が、基準時刻明細データ310の項目「基準時刻」に格納される各時刻「05:00」、「09:00」、「11:00」、「12:00」、「13:00」、「14:00」、「17:30」、「18:00」および「22:00」に従い、隣接する時刻に挟まれる区間に基づくブロック(分割時間帯)に分割されている様子が示されている。
このように、実施形態に係る分割部114は、1日の時間帯を、基準時刻明細データ310に格納される基準時刻を区切りとして分割する。これにより、分割された区間による各ブロックは、必ず、事由がある、および、事由が無い、の何れかの状態となる。したがって、同一時間帯の区間は、「該当する事由無し」、および、「該当する1件以上の事由がある」の何れかの状態となることが確定する。
図16の例では、時刻「00:00」〜時刻「09:00」の時間帯、および、時刻「18:00」〜翌日の時刻「00:00」の時間帯は、「該当する事由無し」の区間となっている。一方、時刻「09:00」〜時刻「11:00」の時間帯、および、時刻「14:00」〜時刻「18:00」の時間帯は、それぞれ「該当する1件の事由がある」区間となっている。また、時刻「11:00」〜時刻「12:00」、および、時刻「13:00」〜時刻「14:00」の時間帯は、それぞれ「該当する2件の事由がある」区間となっている。さらに、時刻「12:00」〜時刻「13:00」の時間帯は、「該当する3件の事由がある」区間となっている。
なお、図16の例では、各事由種別は、上の行から下の行に向けて、優先度が高くなるように並べられている。
[4−5.ステップS104]
ステップS104で、選択部115は、ステップS103で生成した事由明細分割データ320を、1日の時間帯を分割した各区間の開始時刻の順位に従いグルーピングする。換言すれば、選択部115は、ステップS103で生成した事由明細分割データ320を、項目「社員」、「勤務日」および「分割開始時刻」の単位でグルーピングする。
このとき、例えば図15に示した事由明細分割データ320は、特定の社員ID「A」の社員、および、特定の勤務日「2017年9月3日」に関するデータである。そのため、この事由明細分割データ320は、項目「社員」および「勤務日」に関するグルーピングが既に行われていると考えることができる。
例えば、選択部115は、図15に示した事由明細分割データ320において、項目「分割開始時刻」に格納される値が同一のレコードによりグループを形成し、各グループを、項目「分割開始順位」に格納される値の順に並べ替える。
図17を用いて、実施形態に係る、ステップS104によるグルーピング処理について説明する。図17(a)は、このようにして事由明細分割データ320を並べ替えた事由明細分割データ320’の例を示す。図17(a)の例では、項目「分割開始時刻」の値が時刻「09:00」である1のレコードを含むグループG#1と、当該値が時刻「11:00」である2のレコードを含むグループG#2と、当該値が時刻「12:00」である3のレコードを含むグループG#3と、当該値が時刻「13:00」である2のレコードを含むグループG#4と、当該値が時刻「14:00」である1のレコードを含むグループG#5と、当該値が時刻「17:30」である1のレコードを含むグループG#6と、にグルーピングされている。
図17(b)は、上述した図16と対応する図であって、グルーピング処理をブロックを用いて模式的に示す。図17(b)に示されるように、時刻「09:00」〜時刻「11:00」の区間がグループG#1に、時刻「11:00」〜時刻「12:00」の区間がグループG#2に、時刻「12:00」〜時刻「13:00」の区間がグループG#3に、時刻「13:00」〜時刻「14:00」の区間がグループG#4に、時刻「14:00」〜時刻「17:30」の区間がグループG#5に、時刻「17:30」〜時刻「18:00」の区間がグループG#6に、それぞれグルーピングされていることが分かる。このように、ステップS104のグルーピング処理は、「該当する1件以上の事由がある」区間を、同一時間帯毎に纏める処理である。
[4−6.ステップS105]
ステップS105で、選択部115は、ステップS104でグルーピングした各グループ内で最も優先度の高い事由を抽出し、抽出された事由に対応する区間により事由明細分割抽出データ330を生成する。図18および上述した図17(a)を用いて、ステップS105による、実施形態に係る事由明細分割抽出データ330の生成処理について説明する。
ステップS105で、選択部115は、図17(a)の事由明細分割データ320’の各グループG#1〜G#6において、項目「優先度」に最も高い優先度が格納されるレコードを抽出する。図17(a)の例では、グループG#1、G#5およびG#6は、それぞれ1のレコードしか含まないため、それぞれのレコード(区間a、eおよびfに対応)が抽出される。それぞれ優先度「2」および「4」の2のレコードを含むグループG#2は、優先度がより高い「2」とされているレコード(区間hに対応)が抽出される。それぞれ優先度「1」、「2」および「4」の3のレコードを含むグループG#3は、優先度が最も高い「1」とされているレコード(区間gに対応)が抽出される。また、それぞれ優先度「2」および「4」の2のレコードを含むグループG#4は、優先度がより高い「2」とされているレコード(区間jに対応)が抽出される。
図18(a)は、上述のようにして、選択部115により各グループG#1〜G#6において抽出された、最も優先度が高いレコードを纏めて生成した事由明細分割抽出データ330を示す。このように、事由明細分割抽出データ330は、各グループG#1〜G#6から1つずつ抽出された、それぞれ区間a、h、g、j、eおよびfに対応する6のレコードを含む。
図18(b)は、上述した図17(b)に対してステップS105による処理を適用した例を示す。図18(b)において、各行が、上の行から下の行に向けて事由種別の優先度が高くなるように並べられているため、各グループG#1〜G#6において、「該当する1件以上の事由がある」区間に対応するブロックのうち最も下のブロックが抽出されることになる。図18(b)の例では、区間a、h、g、j、eおよびfに対応する各ブロックが抽出されている。この抽出された各ブロックに対応する事由および時間帯が、次のステップS106において、集計部116により集計に用いる事由および時間帯として採用される。
図18(b)の例では、区間a、eおよびfに対応する各ブロックが、採用される事由が「勤務」として抽出される。区間hおよびjに対応するブロックが、採用される事由が「有給休暇」として抽出される。また、区間gに対応するブロックが、採用される事由が「休憩」として抽出される。なお、図18(b)において「×(バツ印)」を付して示される各ブロックは、各グループG#1〜G#6に属するブロックのうち、集計部116により集計に用いる事由および時間帯として採用されない事由および時間帯を示している。
この結果、実施形態に係る就業時間計算装置10では、異なる事由種別で重複する時間帯を含む登録を許可した場合であっても、図2(b)を用いて説明した、時間帯毎の事由を正しく登録する、既存技術による登録方法の第1の例と同様のデータを、自動処理により生成することが可能である。
[4−7.ステップS106]
ステップS106で、集計部116は、ステップS105で生成された事由明細分割抽出データ330から、所定の集計条件に従い区間を抽出して、当該区間を実績として集計する。なお、ここでいう区間は、例えば図18(b)などに示した各ブロックを指す。
図19は、実施形態に係る、ステップS106において集計部116が事由明細分割抽出データ330から区間を抽出するための所定の集計条件の例を示す。図19の例では、集計先項目として、「所定内実労働時間」、「所定外実労働時間」、「実労働時間」、「深夜労働時間」、「休憩時間」、「有給休暇時間」および「不就労時間」の各項目が定義されている。これら各集計先項目は、例えば賃金の計算方法に基づき定義される。集計部116は、事由明細分割抽出データ330から、所定の集計条件を満たす区間(ブロック)を抽出し、抽出した区間の時間を集計する。
これら各集計先項目の集計条件は、それぞれ下記となる。なお、下記の式(2)、式(3)および式(4)において、記号「∧」は論理積を表し、記号「∨」は論理和を表す。
集計先項目「所定内実労働時間」は、下記の式(2)を満たす区間を抽出し、抽出した区間の時間を集計する。
(事由種別=勤務)∧(所定時間の開始時刻≦分割開始時刻)∧(分割終了時刻≦所定時間の終了時刻) …(2)
集計先項目「所定外実労働時間」は、下記の式(3)を満たす区間を抽出し、抽出した区間の時間を集計する。
(事由種別=勤務)∧{(所定時間の開始時刻>分割開始時刻)∨(所定時間の終了時刻<分割終了時刻)} …(3)
上述の式(2)および式(3)から分かるように、実施形態では、事由種別が「勤務」である区間について、その区間が所定時間内に含まれる場合と、所定時間外に含まれる場合とで区別して集計する。
集計先項目「実労働時間」は、事由種別が「勤務」である区間を抽出し、抽出した区間の時間を集計する。
集計先項目「深夜労働時間」は、下記の式(4)を満たす区間を抽出し、抽出した区間の時間を集計する。なお、式(4)において、時刻「05:00」および時刻「22:00」は、労働基準法により深夜割増賃金の支払いが義務付けられている時間帯の終了時刻および開始時刻である。
(事由種別=勤務)∧{(05:00>分割開始時刻)∨(22:00<分割終了時刻)} …(4)
上述の式(4)から分かるように、実施形態では、事由種別が「勤務」である区間について、その区間が深夜労働時間帯に含まれる場合と、含まれない場合とで区別して集計する。
集計先項目「休憩時間」は、事由種別が「休憩」である区間を抽出し、抽出した区間の時間を集計する。集計先項目「有給休暇時間」は、事由種別が「有給休暇」である区間を抽出し、抽出した区間の時間を集計する。また、集計先項目「不就労時間」は、事由種別が「不就労」である区間を抽出し、抽出した区間の時間を集計する。
図20を用いて、実施形態に係る集計部116による各区間の集計方法について説明する。図20(a)は、上述した図18(b)と対応し、集計部116は、採用されるとして抽出された各ブロックについて、上述した集計条件に従い集計を行う。図20(b)は、各ブロックを図19の集計先項目毎に抽出した例を示している。なお、所定時間の開始時刻および終了時刻は、それぞれ時刻「09:00」および「17:30」であるものとする。また、図20(b)では、単位としての「時間」を「h」により表している。
図20(a)における区間aのブロックは、事由種別が「勤務」であり、分割開始時刻および分割終了時刻がそれぞれ時刻「09:00」および時刻「11:00」であって、上述の式(2)を満たしている。同様に、区間eのブロックは、事由種別が「勤務」であり、分割開始時刻および分割終了時刻がそれぞれ時刻「14:00」および時刻「17:30」であって、上述の式(2)を満たしている。したがって、図20(b)の「所定内実労働時間」の行に示されるように、区間aのブロックの時間「2時間」と、区間eのブロックの時間「3.5時間」とがそれぞれ所定内実労働時間として計算される。
図20(a)における区間fのブロックは、事由種別が「勤務」であり、分割開始時刻および分割終了時刻がそれぞれ時刻「17:30」および時刻「18:00」である。これらのうち、分割終了時刻の時刻「18:00」は、所定時間の終了時刻「17:30」より後の時刻であり、上述の式(3)を満たしている。したがって、図20(b)の「所定外実労働時間」の行に示されるように、区間fのブロックの時間「0.5時間」が所定外実労働時間として計算される。
図20(a)における区間hおよび区間jの各ブロックは、それぞれ事由種別が「有給休暇」であり、上述の集計先項目「有給休暇時間」の条件を満たしている。また、図19の例では、集計先項目「有給休暇時間」については、時刻(時間)に関する条件は定義されていない。したがって、図20(b)に示されるように、区間hのブロックの時間「1時間」と、区間jのブロックの時間「1時間」とがそれぞれ有給休暇時間として計算される。
図20(a)における区間gのブロックは、事由種別が「休憩」であり、上述の集計先項目「休憩時間」の条件を満たしている。また、図19の例では、集計先項目「休憩時間」については、時刻(時間)に関する条件は定義されていない。したがって、図20(b)の「休憩時間」の行に示されるように、区間gのブロックの時間「1時間」が休憩時間として計算される。
集計部116は、このようにして計算された各時間を、集計先項目毎に集計する。集計結果を、図20(b)の右端に示す。具体的には、集計先項目「所定内実労働時間」は、「2時間+3.5時間」として5.5時間が集計結果とされる。集計先項目「所定外実労働時間」は、0.5時間が集計結果とされる。集計先項目「休憩時間」は、1時間が集計結果とされる。また、集計先項目「有給休暇」は、「1時間+1時間」として2時間が集計結果とされる。
一方、図20(a)の例では、不在事由が「遅刻」あるいは「終日欠勤」といった、事由種別が「不就労」である区間(ブロック)が存在しない。また、図20(a)の例では、勤務時間帯が時刻「09:00」〜時刻「18:00」であって、勤務時間帯の先頭の区間aのブロックの分割開始時刻、および、勤務時間帯の後端の区間fのブロックの分割終了時刻が、共に、上述の式(4)の条件を満たさず、集計先項目「深夜労働時間」に該当する区間(ブロック)が存在しない。したがって、図19に示した、集計先項目「不就労時間」および「深夜労働時間」は、それぞれ0時間が計算される。
なお、図19に示した集計先項目および集計条件は、一例であって、この例に限定されない。すなわち、実際には、従業員の雇用形態、管理監督者と一般社員との違い、就業規則、採用制度(変形労働時間制、フレックスタイム制など)などに応じて、集計先項目および集計条件が設定される。
集計部116は、上述のようにして集計先項目毎に集計された集計結果を、例えばUI部111に渡す。UI部111は、集計部116から渡された集計結果を、例えば、図6を用いて説明した入力画面200の集計結果情報表示部2200に表示させる。
図21は、実施形態に係る、集計結果情報表示部2200に集計結果が表示された入力画面200の例を示す。図21の例では、図中に太枠にて示されるように、集計結果情報表示部2200の各表示領域2201〜2207に、図20(b)の右端に示した、所定内実労働時間、所定外実労働時間、実労働時間、深夜労働時間、休憩時間、有給休暇時間および不就労時間それぞれの集計結果「5時間30分」、「0時間30分」、「6時間00分」、「0時間00分」、「1時間00分」、「2時間00分」および「0時間00分」が、それぞれ表示されている。この集計結果は、図1(a)および図1(b)を用いて説明した勤務スケジュールと一致する。
これに限らず、UI部111は、集計部116による集計結果を入力画面200とは異なる画面に表示させてもよい。また、集計部116は、集計結果をUI部111に渡さずに、記憶部120に記憶させてもよい。また、集計部116は、集計結果を、入出力I/F部130から外部に出力してもよいし、通信I/F部140から、ネットワーク30を介してサーバ20に送信してもよい。
以上説明したように、実施形態に係る就業時間計算装置10は、各事由の開始時刻および終了時刻により1日の時間帯を区切り、各事由による時間帯を、時間的に隣接する区切りに挟まれた区間で分割している。また、各事由には、優先度を関連付けている。そのため、勤怠の不在事由の種類や、時間的に重複部分を持つ事由の数が増えても、事由に対して関連付ける優先度の判定を明確化することで、共通する手続きで対応が可能である。
また、実施形態に係る就業時間計算装置10は、各事由の開始時刻および終了時刻により1日の時間帯を区切った区間に基づき、各事由の集計を行っている。そのため、勤怠の最小管理単位を問わず、厳密な集計が可能となる。例えば、勤怠の最小管理単位は、1時間、30分、15分、5分、1分、…など、原理的には秒単位まで、任意に設定可能である。また、集計の計算量に対する最小管理単位の細かさの影響が抑制される。
[5.他の実施形態]
本発明は、上述した実施形態以外にも、特許請求の範囲に記載した技術的思想の範囲内において種々の異なる実施形態にて実施されてよいものである。
例えば、実施形態において説明した各処理のうち、自動にて行われるものとして説明した処理の全部または一部を手動にて行うこともでき、あるいは、手動にて行われるものとして説明した処理の全部または一部を公知の方法で自動にて行うこともできる。
また、本明細書中や図面中で示した処理手順、制御手順、具体的名称、各処理の登録データや検索条件などのパラメータを含む情報、画面例、マスタ構成、データ構成については、特記する場合を除いて任意に変更することができる。
さらに、上述では、実施形態に係る就業時間計算装置10が1のコンピュータにより構成されるように説明したが、これはこの例に限定されない。すなわち、実施形態に係る就業時間計算装置10は、複数のコンピュータを統合的に運用するシステムにて構成することもできる。
さらにまた、装置の分散・統合の具体的形態は図示するものに限られず、その全部または一部を、各種の付加等に応じてまたは機能負荷に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。すなわち、上述した実施形態を任意に組み合わせて実施してもよく、実施形態を選択的に実施してもよい。