以下、勤怠管理装置等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
(実施の形態)
図1は、本実施の形態における勤怠管理装置1のブロック図である。
勤怠管理装置1は、勤怠情報格納部101、申請情報格納部102、受付部103、ルール情報格納部104、判断部105、および出力部106を備える。
なお、本実施の形態では、勤怠管理装置1がサーバ・クライアントシステムにおけるサーバ装置である場合を例に挙げて説明する。例えば、勤怠管理装置1は、通信回線を介してクライアント装置(図示せず)から入力を受け付けたり、画面を出力したりすることが可能なものであってもよい。ただし、勤怠管理装置1は、スタンドアロンの装置であってもよい。
勤怠情報格納部101には、ユーザ識別子と、このユーザ識別子が示すユーザの勤怠に関する時間の情報である一または二以上の勤怠情報とが格納される。例えば、ユーザ識別子は、ユーザを識別する情報である。ユーザ識別子は、このユーザ識別子が示すユーザの勤怠に関する一または二以上の勤怠情報と対応付けて格納される。ここでの時間は、一の期間であってもよく、一の時点を示す時刻等であってもよい。また、ここでの時間は、日付の情報を有していても良く、有していなくても良い。ユーザ識別子は、例えば、ユーザの社員番号等のユーザに割り当てられた文字列や、ユーザのメールアドレスや、ユーザ名等である。ユーザは、例えば、社員等の雇用者である。ここでの文字列は、数字も含むと考えてもよい。勤怠情報格納部101にユーザ識別子と対応付けて格納される二以上の勤怠情報は、例えば、属性の異なる勤怠情報であってもよく、少なくとも一部が同じ属性のものであってもよい。属性の異なる勤怠情報は、例えば、ユーザの出勤時刻、退出時刻、勤務時間、残業時間、遅刻時間、早退時間、普通残業時間、深夜残業時間および休日残業時間等である。勤怠情報には、それぞれの属性を示す情報(例えば、属性名等)が対応付けられていてもよい。勤怠情報の属性を示す情報は、どのように勤怠情報と対応付けられていてもよく、例えば、各勤怠情報がその属性を示す情報を有していてもよく、各勤怠情報とその属性を示す情報との組が、勤怠情報格納部101に格納されていてもよい。また、勤怠情報格納部101に一の属性の勤怠情報だけが格納されている場合等のように、勤怠情報の属性を特定可能な場合、属性名は省略してもよい。なお、残業は時間外労働と考えてもよい。また、普通残業時間、および深夜残業時間は、それぞれ、普通時間外労働時間、および深夜時間外労働時間と考えてもよい。なお、本実施の形態においては、属性の異なる二以上の勤怠情報の総称も、適宜、勤怠情報と呼ぶ場合がある。
出勤時刻は、例えば、ユーザが勤務先等に出勤した時刻である。出勤時刻は、例えば、出社時刻である。出勤時刻は、例えば、ユーザが出張先等の勤務先以外の場所等で、一日の業務開始の打刻等を行なった時刻であってもよい。退出時刻は、例えば、ユーザが勤務先等から退出した時刻である。退出時刻は、退出時刻と考えてもよい。退出時刻は、ユーザが出張先等の勤務先以外の場所等で、一日の業務終了の打刻等を行なった時刻であってもよい。出勤時間は、例えば、ユーザの一日の出勤していた時間であってもよい。出勤時間は、休憩等の時間を含んでもよく含まなくてもよい。遅刻時間は、例えば、遅刻した時間であり、例えば、ユーザの出勤時刻と業務の始業時刻との差を示す時間である。早退時間は、例えば、早退した時間であり、例えば、業務の終業時刻とのユーザの退出時刻との差を示す時間である。深夜残業時間は、例えば、ユーザの一日の、深夜残業を行なった時間である。普通残業時間は、例えば、ユーザの一日の、深夜残業時間以外の残業の時間である。なお、深夜残業時間と、普通残業時間とを合わせた時間を残業時間と考えてもよい。また、勤怠情報は、外出時間や、外出開始時刻、外出終了時刻(外出からの帰社時刻)等を有していても良い。
勤怠に関する時間の情報である一または二以上の勤怠情報は、例えば、日付と対応付けて勤怠情報格納部101に格納される。一の日付と対応付けられた勤怠情報は、この日付が示す日の勤怠に関する勤怠情報である。一の日付に対応する一または二以上の勤怠情報は、例えば、異なる属性の勤怠情報を有していても良く、有していなくても良い。ただし、例えば、勤怠情報格納部101に格納されている勤怠情報に特定の一の日(例えば、本日等)の勤怠情報だけが格納されている場合、勤怠情報は、日付と対応付けて格納されていなくてもよい。また、例えば、勤怠情報が示す時間が、日付の情報も有している場合も、勤怠情報が日付と対応付けられていると考えてもよく、このような場合、日付を対応付けて格納しなくてもよい。
勤怠情報格納部101には、例えば、一または二以上の勤怠情報が、ユーザと日付との組に対応付けられて格納されていてもよい。一のユーザと一の日付との組に対応付けられた二以上の勤怠情報は、例えば、属性が異なる勤怠情報である。勤怠情報格納部101には、一または二以上の勤怠情報と、ユーザと、日付と、がどのように対応付けられて格納されていてもよい。例えば、勤怠情報格納部101に、一以上の勤怠管理情報が格納されているようにしてもよい。勤怠管理情報は、一または二以上の勤怠情報と、ユーザ識別子と、日付とを有する情報である。一の勤怠管理情報が有する二以上の勤怠情報は、例えば、属性が異なる勤怠情報である。一の勤怠管理情報が有する勤怠情報は、例えば、この一の勤怠管理情報が有するユーザの勤怠に関する勤怠情報である。また、一の勤怠管理情報が有する勤怠情報は、例えば、この一の勤怠管理情報が有する日付における勤怠に関する勤怠情報である。勤怠管理情報は、更に、勤怠管理情報が有する1以上の各勤怠情報に対応する属性を示す情報(例えば、属性名)を、各勤怠情報と対応付けて有していても良い。
勤怠情報格納部101に勤怠情報等がどのように格納されるかは問わない。勤怠情報格納部101には、例えば、後述する受付部103がユーザ等から受信したユーザ識別子と日付と一または二以上の勤怠情報とが蓄積されてもよく、ユーザ等から受信した勤怠管理情報が格納されてもよい。なお、勤怠情報格納部101には、図示しない記録媒体等から読み出したユーザ識別子と日付と一または二以上の勤怠情報とを有する情報が格納されてもよく、図示しない記録媒体等から読み出した勤怠管理情報が格納されてもよい。
なお、勤怠情報格納部101に格納される一以上の勤怠情報は、勤怠情報格納部101に格納される他の勤怠情報を用いて作成された(例えば、算出された)勤怠情報であってもよい。例えば、出勤時刻と、図示しない格納部に格納された勤務先の定時の終了時刻とを用いて算出された勤務時間が蓄積されてもよく、退出時刻と、勤務先の定時の終了時刻とを用いて算出された残業時間が蓄積されてもよい。この算出は、例えば、受付部103が行なっても良く、図示しない処理部等が行なっても良い。
なお、勤怠情報格納部101に、ユーザ識別子と対応付けて格納される一以上の勤怠情報の少なくとも一部は、値が「Null」である勤怠情報であってもよい。例えば、勤怠情報格納部101には、予め決められた属性を有する一以上の勤怠情報であって、値が「Null」である一以上の勤怠情報を含む一以上の勤怠情報が、一以上のユーザと、一以上の日付と対応付けられて蓄積されるようにしてもよい。例えば、勤怠情報格納部101には、予め値が「Null」である予め決められた属性を有する一以上の勤怠情報と、この一以上の勤怠情報にそれぞれ対応付けられた勤怠情報の属性を示す情報と、ユーザ識別子と、一以上の日付とを有する一以上の勤怠管理情報が予め格納されているようにしてもよい。ここでの一以上の日付は、例えば、1年や一ヶ月等の予め決められた期間内の日付であってもよい。この日付は、例えば、図示しないカレンダー等から取得しても良い。
また、勤怠情報格納部101には、予め決められたタイミングまたはトリガーに応じて、値が「Null」である一以上の勤怠情報が、一以上のユーザと、最新の日付と対応付けられて蓄積されるようにしてもよい。蓄積される一以上の勤怠情報は、例えば、予め決められた属性を有する一以上の勤怠情報である。例えば、勤怠情報格納部101には、予め決められたタイミングまたはトリガーに応じて、値が「Null」である予め決められた属性を有する一以上の勤怠情報と、ユーザ識別子と、最新の日付とを有する勤怠管理情報が蓄積されるようにしてもよい。予め決められたタイミングは、例えば、予め決められた時刻(例えば、24時等)である。また、予め決められたトリガーとなる操作は、予め決められた時刻以降に最初に勤怠管理装置1を起動する操作や、勤怠情報格納部101に格納されている勤怠情報や勤怠管理情報や、これらを管理するデータベース(図示せず)等に最初にアクセスする操作等である。
ここでの格納は、例えば、一時記憶を含む概念である。勤怠情報格納部101は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。かかることは、以下においても同様である。
申請情報格納部102には、一または二以上の申請情報が格納される。申請情報は、ユーザが勤怠に関して申請した情報である。申請情報は、例えば、申請した内容を示す情報を有する情報である。また、申請情報は、例えば、申請を行なうユーザのユーザ識別子を有する情報である。申請情報格納部102には、異なる属性の申請情報が格納されていてもよい。申請情報は、例えば、ユーザ識別子と、申請する項目(以下、申請項目と称す)を示す情報(例えば、項目の識別子等)と、その項目が行なわれる日付を示す情報を含む。申請項目は、申請情報の属性と考えてもよい。日付を示す情報は、二以上の日を含む期間を指定する情報も含むと考えてよい。申請情報は、例えば、休みを申請する情報である。休みを申請する情報は、例えば、ユーザ識別子と、申請項目が休みであることを示す情報と、休みをとる日付とを有する情報である。また、申請情報は、例えば、午前の半休または午後の半休を申請する情報である。午前の半休または午後の半休を申請する情報は、例えば、ユーザ識別子と、申請項目が午前の半休または午後の半休であることを示す情報と、半休をとる日付とを有する情報である。また、申請情報は、早退を申請する情報である。早退を申請する情報は、例えば、ユーザ識別子と、申請項目が早退であることを示す情報と、早退する日付とを有する情報である。また、申請情報は、遅刻を申請する情報である。遅刻を申請する情報は、例えば、ユーザ識別子と、申請項目が遅刻であることを示す情報と、遅刻する日付とを有する情報である。申請情報は、例えば、残業を申請する情報である。残業を申請する情報は、例えば、ユーザ識別子と、申請項目が残業であることを示す情報と、残業をとる日付と、残業時間とを有する情報である。なお、残業時間の代わりに、退出予定時刻等を用いてもよい。また、申請情報は、例えば、休日出勤を申請する情報である。休日出勤を申請する情報は、例えば、ユーザ識別子と、申請項目が休日出勤であることを示す情報と、休日出勤を行なう日付とを有する情報である。また、申請情報は、例えば、出張を申請する情報である。出張を申請する情報は、例えば、ユーザ識別子と、申請項目が出張であることを示す情報と、出張により不在となる期間を示す情報とを有する情報である。なお、申請情報は、上記以外の構造の情報であってもよい。
なお、申請情報格納部102には、図示しない記録媒体等から読み出した申請管理情報が格納されてもよく、他の装置等からネットワーク等を介して送信された申請管理情報が格納されてもよい。
受付部103は、例えば、ユーザが利用する情報処理端末等のクライアント装置等からネットワーク等を介して送信された一以上の勤怠情報とユーザ識別子と日付との一以上の組を受信する。例えば、受付部103は、上記の一以上の組として、一以上の勤怠情報とユーザ識別子と日付とを有する一以上の勤怠管理情報を受信してもよい。なお、ユーザが利用する情報処理端末は、例えば、コンピュータや、携帯情報端末や、いわゆるスマートフォンや、携帯電話等である。ここでの受信は、受付の一態様と考えてもよい。また、受付部103は、例えば、図示しない読み出しデバイス等を用いて図示しない記録媒体等から読み出された一以上の勤怠情報とユーザ識別子と日付との一以上の組を受け付けてもよい。なお、ユーザ識別子または日付がなくても、勤怠情報に対応するユーザまたは日付の特定が可能な場合(例えば、勤怠情報が日付を有している場合等)においては、受付部103は、上記の組の情報からユーザ識別子または日付を除外した情報を受け付けるようにしても良い。
受付部103は、例えば、受付けた一以上の勤怠情報とユーザ識別子と日付との一以上とを対応付けて、勤怠情報格納部101に蓄積する。例えば、受付部103は、受付けた一以上の勤怠情報とユーザ識別子と日付との一以上の組を勤怠情報格納部101に蓄積する。
例えば、例えば、勤怠情報格納部101に格納される勤怠管理情報が、予め決められた異なる属性を有する複数の勤怠情報を有する勤怠管理情報である場合において、受付部103が受け付けた一以上の勤怠情報とユーザ識別子と日付との組のうちの、ユーザ識別子と日付との組合わせを有する勤怠管理情報が勤怠情報格納部101に格納されていない場合、受付部103は、受け付けた一以上の勤怠情報とユーザ識別子と日付との組を有する勤怠管理情報を勤怠情報格納部101に蓄積するようにしてもよい。なお、受付部103が受け付けた一以上の勤怠情報が、上述したような勤怠情報格納部101に格納される勤怠管理情報が有する予め決められた異なる属性を有する複数の勤怠情報の一部である場合、受付部103は、この一部の勤怠情報と、値を「Null」に設定したこの一部以外の属性の勤怠情報と、受付部103が受け付けたユーザ識別子と日付とを有する勤怠管理情報を勤怠情報格納部101に蓄積するようにしてもよい。なお、値を「Null」に設定することは、値を空欄にすることと考えてもよく、値が未入力であることと考えてもよい。また、既に、勤怠情報格納部101に受付部103が受け付けたユーザ識別子および日付と、同じユーザ識別子および日付とを有する勤怠管理情報が格納されている場合、受付部103は、この同じユーザ識別子および日付とを有する勤怠管理情報が有する勤怠情報のうちの、受付部103が受け付けた勤怠情報と同じ属性の勤怠情報を、受付部103が受け付けた勤怠情報を用いて更新するようにしてもよい。例えば、既に同じ属性の勤怠情報が格納されている場合や、同じ属性の勤怠情報の値が「Null」である場合、これらの値を受付部が受け付けた同じ属性の勤怠情報で上書きしてもよく、これらの値を受付部103が受け付けた同じ属性の勤怠情報で置換してもよい。既に格納されている勤怠管理情報は、例えば、日付が未入力である勤怠管理情報であってもよく、予め決められた属性を有する複数の勤怠情報のうちの全てまたは一部が未入力である勤怠管理情報であってもよい。
受付部103は、例えば、ユーザが利用する情報処理端末等の他の装置等からネットワーク等を介して送信された申請管理情報を受信してもよい。また、受付部103は、例えば、図示しない読み出しデバイス等を用いて図示しない記録媒体等から読み出された申請管理情報を受け付けてもよい。受付部103は、例えば、受け付けた申請管理情報を申請情報格納部102に蓄積する。
受付部103は、例えば、図示しない情報を受信するための受信手段を有していても良く、図示しない情報を受信するための受信手段を介して情報を受信してもよい。また、受付部103は、例えば、情報を読み出すための読出手段等を有していても良く、図示しない情報を読み出すための読出手段等を介して情報を受け付けても良い。また、受付部103は、図示しない入力手段等を介して情報の入力を受け付けても良い。例えば、この入力手段は、タッチパネルやキーボードやマウスやメニュー画面によるもの等、何でも良い。受付部103は、例えば、受信手段や読出手段等を制御するドライバーや、タッチパネルやキーボード等の入力手段のデバイスドライバーや、メニュー画面の制御ソフトウェア等で実現され得る。
ルール情報格納部104には、一または二以上のルール情報が格納される。ルール情報は、一以上の勤怠情報に関するルールを示す情報である。ルール情報は、例えば、適切な勤怠情報が勤怠情報格納部101に格納されているか否かを判断するためのルールの情報である。ここでの適切な勤怠情報は、例えば、法令等を遵守した勤怠情報や、雇用主等の定めた規則を遵守した勤怠情報である。また、勤怠情報として適切な情報が格納されているか否かを判断するということは、例えば、勤怠情報の入力漏れがないかを検出すること、つまり、勤怠情報として何らかの情報が配置されていることを検出することであってもよく、勤怠情報として「Null」以外の情報が格納されていることを判断することであってもよい。なお、ルール情報は、例えば、全ての属性の勤怠情報として、適切な勤怠情報が格納されているか否かを判断するための情報であってもよく、一部の属性の勤怠情報として、適切な勤怠情報が格納されているか否かを判断するための情報であってもよい。
ルール情報は、例えば、ルールを満たすか否か等を判断するための処理を示す情報や、処理を行なうタイミングやトリガー等を指定する情報を有していてもよい。また、ルール情報は、判断対象となる勤怠情報の属性等を指定する情報を有していても良い。また、ルール情報は、ルールを満たす場合に行なわれる出力を指定する情報や、ルールを満たさない場合に行なわれる出力を指定する情報等を有していてもよい。また、ルール情報は、判断に用いられる閾値等の値の情報を有していても良い。また、ルール情報は、判断の対象となるユーザのユーザ識別子と対応付けられていてもよい。また、ルール情報は、判断の結果、ルールを満たす場合にどのような処理を行なうか、また、ルールを満たさない場合にどのような処理を行なうかを指定する情報等を有していても良い。また、ルール情報は、判断の対象となるユーザの階級等の情報と対応付けられていてもよい。かかる場合、予め、ユーザ識別子と、このユーザ識別子が示すユーザの階級を示す階級識別子等とを有する情報を、図示しない格納部等に予め格納されているようにして、ユーザの階級識別子等を取得するようにしてもよい。また、ルール情報は、判断対象となる勤怠情報に対応付けられた日付を特定可能な情報を有していても良い。日付を特定可能な情報とは、日付であってもよく、現在を基準とした日付を示す文字列、例えば「今日」、「明日」等であってもよい。日付を特定可能な情報は、一の日付を特定可能な情報であってもよく、複数の日付を特定可能な情報であってもよく、期間を特定可能な情報であってもよい。以下、ルール情報格納部104に格納されるルール情報について、ルール情報が出退ルール情報、残業ルール情報、およびその他のルール情報である場合を例に挙げて説明する。なお、ルール情報格納部104には、これらのうちのいずれか一つまたは一以上を含む二以上のルール情報が格納されていてもよい。また、ルール情報格納部104には、これら以外のルール情報が格納されていてもよい。
(A)出退ルール情報
ルール情報格納部104には、例えば、一または二以上の出退ルール情報が格納されていてもよい。出退ルール情報は、勤怠情報である出勤時刻または退出時刻の有無に関するルールを示すルール情報である。勤怠情報である出勤時刻の有無に関するルールとは、例えば、出勤時刻があるというルールであってもよく、出勤時刻がない、というルールであってもよい。かかることは、勤怠情報である退出時刻の有無に関するルールについても同様である。なお、出勤時刻があるということは、出勤時刻が格納されているということであってもよい。また、出勤時刻がないということは、出勤時刻が格納されていないということであってもよい。かかることは他の属性の勤怠情報の有無についても同様である。この出退ルール情報についての判断処理が行なわれるタイミングや、トリガー等は問わない。このタイミングやトリガー等を指定する情報は、出退ルール情報に格納されていてもよい。なお、出力部106がルール情報を用いた判断結果に応じてどのような出力を行なうかは、例えば、ルール情報に格納されていてもよく、ルール情報と対応付けて図示しない格納部等に予め格納されているようにしてもよい。かかることは、他のルール情報についても同様である。
なお、例えば、上記の出退ルール情報を用いて出勤時刻または退出時刻が無いと判断された場合に、出力部106により行なわれる出力は、例えば、無いと判断された出勤時刻または退出時刻を示す情報(例えば、出勤時刻または退出時刻に対応する勤怠情報の属性名)と、出勤時刻または退出時刻が無いと判断された勤怠管理情報が有するユーザ識別子と、日付との組である。なお、出勤時刻の有無および退出時刻の有無のいずれか一方のみを判断する場合や、ないと判断された出勤時刻または退出時刻を示す情報の出力が不要である場合、ないと判断された出勤時刻または退出時刻を示す情報の取得は省略してもよい。出退ルール情報は、例えば、予め決められた日付または予め決められた期間内の日付に対応付けられた出勤時刻または退出時刻がないことを示すルールを示すルール情報である。
出退ルール情報は、例えば、予め決められた時刻における出勤時刻または退出時刻の有無に関するルールを示すルール情報であってもよい。例えば、予め決められた時刻における出勤時刻の有無とは、例えば、現在時刻が予め決められた時刻となった場合に、出勤時刻があるか否か(具体的には、同日付けの出勤時刻情報があるか否か)を判断するルールである。現在時刻が予め決められた時刻になった場合に判断するということは、例えば、現在時刻が予め決められた時刻となってから、予め決められた時間が経過するまでの間に、判断を行なうことであってもよく、現在時刻が予め決められた時刻となったことをトリガーとして判断を行なうことであってもよい。かかることは、以下においても同様である。この場合の予め決められた時刻は、例えば、企業の始業時刻であってもよく、早出の残業が認められている最も早い時刻であってもよく、これらの時刻から、予め決められた時間(例えば、15分以内の時間)が経過した時刻であってもよい。また、例えば、予め決められた時刻における退出時刻の有無とは、例えば、現在時刻が予め決められた時刻となった場合に、退出時刻があるか否か(具体的には、同日付けの退出時刻情報があるか否か)を判断するルールである。この場合の予め決められた時刻は、例えば、企業の就業時刻であってもよく、通常の残業が認められている最も遅い時刻であってもよく、深夜残業が認められている時間の最も遅い時刻であってもよく、これらの時刻から、予め決められた時間(例えば、15分以内の時間)が経過した時刻であってもよい。このような出退ルール情報は、現在時刻に関するルール情報と考えてもよい。ただし、予め決められた時刻は、上記以外の時刻であってもよい。なお、出勤時刻に対応する予め決められた時刻と、退出時刻に対応する予め決められたルールとは異なるルールであってもよい。
なお、例えば、この出退ルール情報を用いて出勤時刻または退出時刻が無いと判断された場合に、出力部106により行なわれる出力は、例えば、無いと判断された出勤時刻または退出時刻を示す情報と、無いと判断された出勤時刻または退出時刻と対応付けられた(または、ないと判断された出勤時刻または退出時刻を有する勤怠管理情報が有する)ユーザ識別子と日付との組である。ただし、日付は省略してもよい。また、出勤時刻の有無および退出時刻の有無のいずれか一方のみを判断した場合、ないと判断された出勤時刻または退出時刻を示す情報を出力は省略してもよい。
また、出退ルール情報は、出勤時刻と退出時刻との関係を利用した出勤時刻または退出時刻の有無に関するルールを示すルール情報であってもよい。例えば、この出退ルール情報は、出勤時刻が未入力である場合に、退出時刻が入力されたことを判断するルールを示すルール情報であってもよい。また、出退ルール情報は、退社時刻が、同じ日付と対応付けられた出勤時刻よりも後であることを判断するルールを示すルール情報であってもよい。また、この出退ルール情報を用いた判断が行なわれるタイミングを、例えば、一の退出時刻を、受付部103が受け付けたタイミングに指定する情報を出退ルール情報が有していても良い。
なお、例えば、この出退ルール情報を用いて出勤時刻または退出時刻が無いと判断された場合に、出力部106により行なわれる出力は、例えば、無いと判断された出勤時刻または退出時刻を示す情報と、無いと判断された出勤時刻または退出時刻と対応付けられた(または、ないと判断された勤怠管理情報が有する)ユーザ識別子と、日付との組である。ただし、日付は省略してもよい。
また、出退ルール情報は、ユーザの勤務先の勤務のルールに応じた出勤時刻または退出時刻の有無に関するルールを示すルール情報であってもよい。例えば、この出退ルール情報は、ユーザの勤務先の休日を示す日付に対応付けられた出勤時刻または退出時刻の有無に関するルールであってもよい。
なお、例えば、この出退ルール情報を用いた判断が行なわれた結果、休日に対応する日付を有する勤怠管理情報に出勤時刻または退出時刻があると判断された場合に、出力部106により行なわれる出力は、例えば、あると判断された出勤時刻または退出時刻を示す情報と、あると判断された出勤時刻または退出時刻と対応付けられた(または、あると判断された出勤時刻または退出時刻を有する勤怠管理情報が有する)ユーザ識別子と、日付との組である。なお、出勤時刻の有無および退出時刻の有無のいずれか一方のみを判断した場合、あると判断された出勤時刻または退出時刻を示す情報を出力は省略してもよい。
(B)残業時間ルール情報
ルール情報格納部104には、累積された勤怠情報である残業時間に関するルールを示すルール情報である残業ルール情報が格納されていてもよい。残業ルール情報は、例えば、累積した残業時間が、予め決められた閾値以内であるか否かに関するルールを示すルール情報である。閾値以内であるか否かに関するルールとは、例えば、閾値以内であるものを検出するルールであってもよく、閾値以内でないものを検出するルールであってもよい。残業ルール情報は、例えば、勤怠情報格納部101に格納されている一以上のユーザと対応付けられた勤怠情報である残業時間のうちの、予め決められた期間内の日付と対応付けられた残業時間の合計時間、つまり累積された残業時間が、予め決められた閾値以内であるか否かを判断するルールを示すルール情報である。予め決められた期間は、例えば、三ヶ月の期間である。ただし、予め決められた期間の長さ等は問わない。この期間は、判断を行なう日付も含めた期間であることが好ましい。予め決められれた閾値は、例えば、予め決められた期間に応じて決められた閾値である。例えば、この閾値は、労働基準法等の法令や、就業規則や労使間の協定等により定められている予め決められた期間における残業が許可されている合計時間の上限値に対応する値である。ここでの予め決められた期間以下の期間が、例えば、上述した残業時間を累積する期間として用いられる。ここでの上限値に対応する値は、上限値そのものであってもよく、この上限値に対して、予め決められた時間(例えば、1時間以内の時間)だけ短い時間であってもよい。ここでの残業時間は、例えば、通常残業時間と、深夜残業時間との和である。残業時間を累積する期間は、どのように指定されてもよい。例えば、ユーザにより指定されてもよく、残業ルール情報に予め格納されていてもよい。この累積する期間を指定する情報は、どのような情報であってもよい。期間を指定する情報は、例えば、期間の開始日と期間の長さを指定する情報との組合わであってもよく、期間の開始日と終了日との組合わせであってもよい。また、期間を指定する情報は、現在の月や週や日付や時刻を指定する情報であってもよく、現在の日時や現在の日時を含む月等に対して相対的な期間を指定する情報であってもよい。例えば、期間を指定する情報は、現在の日時を含む月と、その前の2ヶ月を指定する情報であってもよい。
なお、残業ルール情報は、累積した残業時間が、予め決められた第一の閾値を超えるか、第一の閾値よりも値が小さい第二の閾値以上の値であって、第一の閾値以下の値であるか、または、第二の閾値未満の値であるかのいずれであるかを判断することを示すルール情報であってもよい。この第一の閾値は、上記の閾値と同様の値であり、例えば、予め決められた期間における残業が許可されている合計時間の上限値に対応する値である。第一の閾値と第二の閾値との差は問わないが、例えば、1時間から20時間までの時間であることが好ましい。この場合、残業ルール情報は、累積した残業時間が、上記の3つのどの範囲に入るかを示す情報を判断結果として取得することを出力部106に指示する情報を有していても良い。予め決められた大きさは、どのような値でもよく、好ましくは、一日に許可されている残業時間以下の大きさであることが好ましい。
なお、例えば、一のユーザの予め決められた期間内の日付と対応付けられた通常残業時間が、予め決められた閾値以上であるか否かを判断するこのルール情報を用いた判断が行なわれた結果、予め指定された閾値地上であると判断された場合に、出力部106により行なわれる出力は、例えば、この一のユーザのユーザ識別子を有する情報、または、この一のユーザのユーザ識別子と、残業時間を累積した期間を示す情報との組である。
(C)その他のルール情報
上記以外のルール情報が、ルール情報格納部104に予め格納されていてもよい。例えば、ルール情報格納部104には、一の日付と対応付けられた勤怠情報である残業時間に関するルールを示すルール情報が格納されていてもよい。このルール情報は、例えば、ユーザの一の日付と対応付けられた通常残業時間が、予め決められた閾値以上であるか否かを判断するルールである。また、このルール情報は、一の日付と対応付けられた通常残業時間が、予め決められた閾値以上である場合において、この通常残業時間に対応するユーザ識別子および日付とに対応付けられた残業を申請する申請情報が申請情報格納部102に格納されているか否かを判断するルールであってもよい。通常残業時間に対応するユーザ識別子および日付とに対応付けられた申請情報とは、通常残業時間に対応するユーザ識別子と対応付けられた申請情報であって、通常残業時間に対応する日付を有する申請情報である。
なお、例えば、一のユーザの一の日付と対応付けられた通常残業時間が、予め決められた閾値以上であるか否かを判断するこのルール情報を用いた判断が行なわれた結果、予め指定された閾値地上であると判断された場合に、出力部106により行なわれる出力は、例えば、この一のユーザのユーザ識別子と、一の日付とを有する情報である。
また、ルール情報格納部104には、一の日付と対応付けられた勤怠情報である深夜残業時間に関するルールを示すルール情報が格納されていてもよい。かかる深夜残業時間に関するルールを示すルール情報は、上記の通常残業時間を、深夜残業時間に置き換えたものであり、ここでは詳細な説明は省略する。
また、ルール情報は、現在の時刻が深夜残業となる時刻となった時点で、同日の日付に対応付けられた退出時刻がないというルールであってもよい。
また、ユーザがフレックスタイム制で勤務している場合、ルール情報は、出勤時刻または退出時刻がフレキシブルタイムを超えた時刻であるというルールを示すものであってもよい。この場合、例えば、後述する判断部105は、予め指定されているフレキシブルタイム内の時刻を示す出勤時刻または退出時刻があるか否かを、勤怠情報格納部101に格納されている勤怠情報について判断していくようにすればよい。
また、ユーザがフレックスタイム制で勤務している場合、ルール情報は、一定期間内(例えば、一か月または一週間等)のユーザの総労働時間の合計が、法定労働時間を超える、というルールであってもよく、法定労働時間を超えそうになっているというルールであってもよく、この両方のルールを組み合わせたルールであってもよい。この場合、判断部105は、一のユーザの一定期間内の各営業日の出勤時刻と退出時刻とを用いて、各営業日の勤務時間を算出し、これらを合計して一定期間内の労働時間を取得する。そして、取得した労働時間が、法定労働時間を示す値を超えたか否かを判断し、越えた場合、労働時間を超えたと判断する。また、取得した総労働時間が、法定労働時間を示す値と、この値よりも予め決められた値(例えば、一または数日分のコアタイムの時間よりも多い値)だけ小さい値との間に含まれるか否かを判断し、この範囲に含まれる場合に、法定労働時間を超えそうになっていると判断してもよい。そして、判断結果に応じて異なる出力を、出力部106が行なうようにしてもよい。
なお、一以上のルール情報は、申請情報についてのルールの情報を更に有していても良い。申請情報についてのルールは、例えば、申請情報を用いるルールである。一のルール情報に対応付けられた申請情報についてのルールの情報は、例えば、このルールを用いた判断を行なわないというルールを示す情報であってもよい。また、一のルール情報に対応付けられた申請情報についてのルールの情報は、例えば、この一のルール情報が示すルールを満たす(または満たさない)と判断された場合において、この一のルール情報に対応する申請情報があると判断された場合に、このルールを満たさない(または満たす)と判断するというルールであってもよい。申請情報についてのルールの情報は、例えば、申請情報の申請項目を指定する情報と、この申請項目の申請情報がある場合に、対応するルール情報の判断を行なうか否か、あるいは、対応するルール情報の判断結果をどのように変更するか等を示す情報との組合わせ等である。
なお、上記においては、説明のため、ルール情報を自然言語で表しているが、ルール情報は、例えば、これらの自然言語に相当する一以上の関数や、メソッド名や、「if」、「then」等で示される制御構文等で構成されていてもよい。また、ルール情報は、これらの自然言語に対応する判断処理等を行うためのアルゴリズム等であっても良い。
判断部105は、一以上のルール情報が示すルールを、勤怠情報格納部101に格納されている一以上の勤怠情報が満たすか否かを判断する。勤怠情報がルールを満たすか否かを判断するということは、例えば、ルールを満たす勤怠情報が存在するか否かを判断することであってもよい。また、勤怠情報がルールを満たすか否かを判断するということは、例えば、ルールが示す勤怠情報が存在するか否かを判断することであってもよい。例えば、勤怠情報がルールを満たすということは、勤怠情報格納部101にユーザ識別子と日付とに対応付けられて格納されている一以上の勤怠情報の中に、ルールが示す勤怠情報が存在すること(例えば、検出できること)であっても良く、存在しないこと(例えば、検出できないこと)であってもよい。
例えば、判断部105は、上記の(A)において説明した出退ルール情報が示すルールを満たす勤怠情報が、勤怠情報格納部101にあるか否かを判断する。具体的には、判断部105は、上述した出退ルール情報に応じて、この出退ルール情報が示すルールが示す勤怠情報である出勤時刻または退出時刻が、勤怠情報格納部101にあるか否かを判断する。出退ルール情報が示すルールが示す勤怠情報である出勤時刻または退出時刻があるか否かを判断するということは、例えば、ユーザ識別子、またはユーザ識別子と日付との組合わせに対応付けて勤怠情報格納部101に格納されている勤怠情報の中に、ルールが示す勤怠情報があるか否かを判断することであってもよく、勤怠情報格納部101に格納されている勤怠管理情報の中に、ルールが示す勤怠情報を有する勤怠管理情報があるか否かを判断することであってもよい。
例えば、出退ルール情報が、勤怠情報である出勤時刻または退出時刻がないというルールを示すルール情報である場合、判断部105は、勤怠情報格納部101に、ユーザ識別子、またはユーザ識別子と日付との組合わせに対応付けて格納されている勤怠情報に、出勤時刻または退出時刻があるか否かを判断し、出勤時刻または退出時刻がない勤怠情報を検出する。そして、判断部105は、例えば、出勤時刻または退出時刻がない勤怠情報と対応付けられたユーザ識別子、またはユーザ識別子と日付情報とを、判断結果として取得する。また、判断部105は、出勤時刻と退出時刻とのいずれの勤怠情報がないかを示す情報(例えば、ない方の属性名等)を更に含む判断結果を取得しても良い。なお、出勤時刻または退出時刻がない勤怠情報が検出できなかった場合、ルールを満たすものが検出できなかった旨等の判断結果を取得しても良い。判断部105は、例えば、出勤時刻がない勤怠情報として、値が「Null」である出勤時刻を検出してもよい。例えば、判断部105は、値が「Null」である出勤時刻を有する勤怠管理情報を検出して、この勤怠管理情報が有するユーザ識別子と日付情報とを取得してもよい。かかることは、退出時刻がない勤怠情報についても同様である。また、かかることは、以下に述べる判断処理についても同様である。
判断部105は、例えば、予め決められた期間内の日付と対応付けられた出勤時刻または退出時刻等とについて、この判断を行なう。予め決められた期間は、ユーザ等から指定された期間も含む概念である。予め指定された期間は、どのような期間であってもよい。また、予め指定された期間の長さは、一日であってもよく、一ヶ月であってもよく、その長さは問わない。予め指定された期間は、例えば、判断を行なう日であってもよく、その前日等であってもよく、判断を行なう日を含む月であってもよく、判断を行なう日を含む月の前月であってもよく、判断を行なう日を含む年であってもよく、判断を行なう日を含む年の前年であってもよい。予め指定された期間は、通常、現在よりも後の日付を含まない期間である。判断部105は、例えば、判断に用いられる出退ルール情報が、予め決められた期間内の勤怠情報である出勤時刻または退出時刻がないというルールを示す場合、予め決められた期間内の日付と対応付けられた出勤時刻または退出時刻があるか否かを判断する。
また、例えば、判断に用いられる出退ルール情報が、予め決められた時刻における出勤時刻または退出時刻の有無に関するルールを示すルール情報である場合、判断部105は、現在時刻が前記出退ルール情報が示す予め決められた時刻となった場合に、この出退ルール情報が示すルールを満たす勤怠情報が、勤怠情報格納部101にあるか否かを判断してもよい。例えば、判断部105は、現在の時刻が予め決められた時刻となった場合、予め決められた一または二以上のユーザ識別子毎に、現在の日付と対応付けられた出勤時刻があるか否かを判断し、出勤時刻のないユーザ識別子を検出する。かかることは、退出時刻がないものを検出する場合も同様である。なお、出勤時刻のないユーザ識別子とは、出勤時刻と対応付けられて格納されていないユーザ識別子である。上記の予め決められた一または二以上のユーザ識別子は、例えば、勤怠の管理対象となる一または二以上のユーザのユーザ識別子である。このユーザ識別子を指定する情報は、勤怠情報格納部101等に予め蓄積しておくようにしてもよい。この一または二以上のユーザ識別子は、例えば、勤怠情報格納部101に既に勤怠情報と対応付けて格納されている一または二以上のユーザ識別子であってもよい。なお、出退ルール情報にユーザの指定がある場合や、判断の際に、判断対象となるユーザの指定があるが合い、予め決められた一または二以上のユーザ識別子は、これらにより指定されたユーザのユーザ識別子である。なお、これらのユーザの指定は、ユーザ識別子の指定であってもよい。また、現在の日付となった時点等に、出勤情報の値がない(または「Null」である)現在の日付と対応付けられた勤怠管理情報が存在する場合、現在の日付と対応付けられた勤怠管理情報であって、出勤時刻がない勤怠情報(または、出勤時刻が「Null」である勤怠情報)を検出するようにしてもよい。かかることは、退出情報についても同様である。そして、判断部105は、例えば、上記と同様の判断結果を取得する。そして、判断部105は、例えば、上記と同様の判断結果を取得する。現在時刻は、図示しない時計等から取得しても良く、Network Time Protocol等を用いて、外部から時刻を取得しても良い。
また、例えば、判断に用いられる出退ルール情報が、勤怠情報である出勤時刻と勤怠情報である退出時刻との関係を利用した出勤時刻または退出時刻の有無に関するルールを示すルール情報である場合、判断部105は、出勤時刻と退出時刻との関係を利用して出勤時刻または退出時刻の有無を判断してもよい。例えば、出退ルール情報が、退出時刻が存在しており、出勤時刻が存在していない勤怠情報を検出するルールである場合、予め決められた一または二以上のユーザ識別子と日付との組合わせについて、対応付けられた退出時間があって、対応付けられた出勤時刻のないユーザ識別子と日付とを検出する。または、判断部105は、ユーザ識別子と日付とを有する勤怠管理情報において、退出時刻があり、出勤時刻がない勤怠管理情報を検出して、この勤怠管理情報が有するユーザ識別子またはユーザ識別子と日付との組合わせを判断結果等として取得してもよい。この場合の出勤時刻がない勤怠情報は、例えば、出勤時刻が「Null」である勤怠情報と考えてもよい。判断部105は、例えば、上述したように予め指定された期間内の日付と対応付けられた出勤時刻または退出時刻等とについて、この判断を行なう。
また、例えば、判断に用いられる出退ルール情報が、ユーザの勤務先の勤務のルールに応じた出勤時刻または退出時刻の有無に関するルールを示すルール情報である場合、判断部105は、予め決められているユーザの勤務先の勤務のルールを利用して勤怠情報である出勤時刻または退出時刻の有無を判断してもよい。例えば、出退ルール情報が、ユーザの勤務先の休日の日付に対応付けられた出勤時刻または退出時刻がある、というルールを示す場合、判断部105は、ユーザ識別子と日付とに対応付けて勤怠情報格納部101に格納されている勤怠情報のうちの、ユーザの勤務先の休日の日付と対応付けられた出勤時刻または退出時刻があるか否かを判断する。そして、あると判断された出勤時刻または退出時刻に対応付けられたユーザ識別子と日付とを判断結果として取得する。なお、ユーザの勤務先の休日の日付を有する一以上の勤怠管理情報において、出勤時刻または退出時刻を有するものを検出してもよい。そして、検出された勤怠管理情報が有するユーザ識別子と日付とを判断結果として取得しても良い。なお、例えば、出勤時刻または退出時刻を有する勤怠情報または勤怠管理情報が検出されなかった場合、ルールを満たすものがない旨の判断結果を取得しても良い。判断部105は、例えば、上述したように予め指定された期間内の日付と対応付けられた出勤時刻または退出時刻等とについて、この判断を行なうようにしてもよい。
判断部105は、例えば、勤怠情報である残業時間を累積して、累積した残業時間が上記の(B)において説明した残業ルール情報が示すルールを満たすか否かを判断してもよい。例えば、判断部105は、一以上のユーザ識別子とそれぞれ対応付けられた残業時間を、ユーザ識別子毎に累積して、累積した残業時間が残業ルール情報を満たすか否かを判断する。累積する残業時間は、例えば、上述したような残業ルール情報が示す期間内の日付と対応付けられた残業時間であってもよく、予め決められた期間内の日付と対応付けられた残業時間であってもよい。例えば、一のユーザ識別子を有する勤怠管理情報であって、残量ルール情報が示す期間内の日付を有する勤怠管理情報が有する残業時間を累積し、累積した残業時間が残業ルール情報を満たすか否かを判断する。この処理を、一以上のユーザ識別子について行なう。ここでの残業時間は、通常残業時間と深夜残業時間とを合計したものとしてもよく、通常残業時間と深夜残業時間とのいずれか一方としてもよい。
判断部105は、例えば、上記のように累積した残業時間が残業ルール情報が示す閾値以内であるか否かを判断して、残業ルール情報が示すルールを満たすか否かを判断する。そして、例えば、判断結果に応じた情報を取得する。例えば、残業ルール情報が、累積した残業時間が、予め決められた閾値以内でないものを検出するというルールを示す場合、判断部105は、上記で累積した残業時間が閾値以内であるか否かを判断し、閾値以内であれば、条件を満たすと判断し、閾値以内でなければ、条件を満たさないと判断する。そして、判断部105は、例えば、条件を満たさない場合、残業時間と対応付けられたユーザ識別子を取得し、条件を満たす場合は、ユーザ識別子を取得しない。なお、条件を満たす場合に、条件を満たすことを示す情報と、ユーザ識別子とを取得するようにし、条件を満たさない場合に、条件を満たさないことを示す情報とユーザ識別子とを取得するようにしても良い。なお、ここで用いる閾値は、例えば、上述したように、残業ルール情報が有する閾値であってもよく、予め決められた閾値であってもよい。
なお、判断部105は、ルール情報が示すルールを満たすか否かの判断の際に、申請情報格納部102に格納されている一以上の申請情報を更に用いて、ルール情報が示すルールを満たすか否かの判断や、追加の判断等を行なうようにしても良い。例えば、上述した出勤時刻または退出時刻がないというルールを示す出退ルール情報を用いて判断を行なった結果、一のユーザ識別子と日付とに対応付けられた勤怠情報に、出勤情報がないと判断した場合、判断部105は、この勤怠情報に対応するユーザ識別子と日付とを有する申請情報であって、申請項目が遅刻、午前半休、休み、および出張のいずれか一つである申請情報が申請情報格納部102に格納されているか否かを判断し、いずれか一つの申請情報が格納されている場合には、出勤情報または退出情報がないというルールを満たさないと判断し、いずれか一つの申請情報が格納されていない場合、出勤情報または退出情報がないというルールを満たすと判断してもよい。かかることは、勤怠情報に退出時間がないと判断された場合においても同様である。この場合、判断部105は、例えば、申請項目が早退、午後半休、休み、および出張のいずれか一つである申請情報が申請情報格納部102に格納されているか否かを判断するようにすればよい。ここでの一のユーザ識別子と日付とに対応付けられた勤怠情報は、一のユーザ識別子と日付とを有する勤怠管理情報が有する勤怠情報と考えてもよい。かかることは以下においても同様である。
また、例えば、上述した勤務先の休日に出勤時刻または退出時刻があるというルールを示す出退ルール情報を用いて判断を行なった結果、一のユーザ識別子と勤務先の一の休日の日付とに対応付けられた勤怠情報に、出勤時刻または退出時刻が存在していると判断した場合、判断部105は、この勤怠情報に対応するユーザ識別子と日付とを有する申請情報であって、申請項目が休日出勤である申請情報が申請情報格納部102に格納されているか否かを判断し、申請情報が格納されている場合には、休日に出勤情報または退出情報がある、というルールを満たさないと判断し、申請情報が格納されていない場合、休日に出勤情報または退出情報があるというルールを満たすと判断してもよい。
また、判断部105は、勤怠情報に通常残業時間があるというルールを示すルール情報を用いて判断を行なった結果、一のユーザ識別子と日付とに対応付けられた勤怠情報に、通常残業時間が存在していると判断した場合に、この勤怠情報に対応するユーザ識別子と日付とを有する申請情報であって、申請項目が残業である申請情報が格納されているか否かを判断し、格納されている場合、ルールを満たすと判断し、格納されていない場合、ルールを満たさないと判断するとともに、申請のない残業を行なっていることを示す情報を追加の判断結果の情報として取得するようにしてもよい。かかることは深夜残業時間についても同様である。
なお、判断部105が判断の際に、どのような申請情報を用いてどのように判断等を行なうか等については問わない。どのような申請情報を用いて、どのような判断等を行なうかについては、例えば、判断の際に用いられるルール情報等に予め格納しておくようにしてもよく、ルール情報に対応付けて、ルール情報格納部104に予め格納されていてもよい。例えば、上述したような、ルール情報が有する申請情報についてのルールの情報により、どのような申請情報を用いてどのような判断を行なうから、どのような判断を行なわないか、またはどのように判断結果を変更するか等を決定して、決定に応じて判断を行なうようにしてもよい。
判断部105が、各ルール情報が示すルールを満たすか否かの判断を行なうタイミングやトリガー等は、例えば、どのようなタイミングまたはトリガー等であってもよい。例えば、判断部105は勤怠情報の出力指示を受け付けた場合に判断を行なうようにしても良い。また、例えば、ルール情報に、判断を行なうタイミングまたはトリガーを指定する情報が対応付けられている場合、判断部105は、この情報が示すタイミングまたはトリガーにルール情報が示すルールを満たすか否かの判断を行なってもよい。例えば、一のルール情報が、判断を行なうタイミングまたはトリガーを指定する情報を有する場合、判断部105は、この情報が示すタイミングまたはトリガーにルール情報が示すルールを満たすか否かの判断を行なってもよい。また、ユーザ等の指示に応じて、一のルール情報が示すルールを満たすか否かの判断を行なうようにしても良い。また、ルール情報に判断を行なうタイミングまたはトリガーを指定する情報が対応付けられていない場合、例えば、予め決められた日時に判断を行なうようにしてもよく、毎日または毎営業日の決められた時刻に判断を行なうようにしても良い。また、ユーザからの指示を受け付けた場合に判断を行なっても良く、勤怠情報格納部101に新たな勤怠情報が格納された場合に判断を行なってもよい。
出力部106は、判断部105の判断結果に応じた情報を出力する。判断結果に応じた情報は、判断結果を示す情報であってもよく、判断結果により得られた情報であってもよく、判断結果により得られた情報を用いて取得された情報であってもよい。判断結果に応じた情報の出力は、例えば、判断結果を通知するための情報の出力であってもよく、判断結果に対応した警告等を通知するための情報の出力である。例えば、出力部106は、判断部105がルールを満たすと判断した勤怠情報に関する情報を出力する。ルールを満たすと判断した勤怠情報に関する情報とは、ルールを満たすと判断した勤怠情報に対応付けられたユーザ識別子であってもよく、日付の情報であってもよく、ルールを満たすと判断した勤怠情報の属性を示す属性名等の情報であってもよい。ルールを満たすと判断した勤怠情報に関する情報は、ルールを満たすと判断した勤怠情報を有する勤怠管理情報が有するユーザ識別子等の一以上の情報であってもよい。なお、出力部106は、判断部105がルールを満たさないと判断した勤怠情報に関する情報を出力してもよい。かかる場合の出力は、出力される情報が、ルールを満たさないと判断された勤怠情報に関する情報である点を除けば、ルールを満たすと判断した勤怠情報に関する情報を出力する場合と同様であるため、ここでは説明を省略する。
例えば、判断部105による出退ルール情報が示すルールを満たすか否かの判断結果に応じて、出力部106が行なう出力は、例えば、勤怠情報格納部101に格納されている一以上のユーザの勤怠情報を、それぞれが対応する日付と対応付けて配置した表であって、出勤時刻または退出時刻がないセルを他のセルに対して強調表示した表を、出力(例えば、表示)することである。セルを強調表示とは、例えば、他のセルとは異なる背景色で表示することであってもよく、セルの輪郭を、他のセルとは異なる色や太さの線で表示することである。一以上のユーザの勤怠情報を、それぞれが対応する日付と対応付けて配置した表は、例えば、勤怠管理情報を一覧で示した勤怠一覧表等の表であってもよい。
出力部106は、残業ルール情報が示すルールを満たすか否かの判断結果に応じて、異なる出力を行なうようにしてもよい。例えば、累積した残業時間が閾値を超えている、というルールを示す残業ルール情報を、一のユーザ識別子と対応付けられた残業時間が満たすと判断された場合と、残量ルール情報を満たす残業時間がなかった場合とで、出力部106は異なる出力を行なうようにしてもよい。異なる出力は、内容が異なる出力であってもよく、出力される媒体(例えば、モニタ出力と、メール送信等が異なる出力であってもよく、出力先(例えば、後述するメールの宛先)が異なる出力であってもよい。内容が異なる出力は、例えば、出力されるテキストが示す文章の内容が異なる出力であってもよく、異なる画像を出力することであっても良い。例えば、一のユーザ識別子と対応付けられた残業時間の累積された値が、残業ルール情報を示す閾値を越えた場合、「残業時間が上限を超えています。ユーザに確認して下さい。」というメッセージを出力し、超えていない場合、「残業時間が上限を超えていません。」というメッセージを出力しても良い。
また、出力部106は、判断結果に応じて異なる出力として、判断部105が、累積した残業時間が、上述したような残業ルール情報の第一の閾値を超えている第一の範囲の値であると判断した場合と、第二の閾値以上、第一の閾値以下の第二の範囲の値であると判断した場合と、第二の閾値未満の第三の範囲の値であると判断した場合とで異なる出力を行なっても良い。例えば、出力部106は、第一の範囲の値である場合、「残業時間が上限を超えています。ユーザに確認して下さい。」というメッセージを出力し、第二の範囲の値である場合、「残業時間の上限に近づいています。ユーザに注意して下さい。」というメッセージを出力し、第三の範囲の値である場合、「残業時間には問題ありません。」というメッセージを出力するようにしても良い。なお、第三の場合には、判断結果に応じた出力を行なわないようにしても良い。なお、例えば、第一の場合のメッセージは、残業時間に対応するユーザ識別子が示すユーザの上司に送信し、第二の場合のメッセージおよび第三の場合のメッセージは、残業時間に対応するユーザ識別子が示すユーザに送信してもよい。
判断結果に応じた情報の出力が、どのような出力であるかは問わない。例えば、この出力は、モニタ等への表示であってもよい。また、表示用のデータ等を図示しない格納部に蓄積することであってもよい。また、この出力は、メールの送信であってもよい。メールの送信先は、予め決められた一以上の送信先であってもよく、判断結果により取得されたユーザ識別子に対応付けられた送信先へのメールの送信であってもよい。取得されたユーザ識別子に対応付けられた送信先は、例えば、取得されたユーザ識別子が示すユーザの上司である。例えば、後者の場合、予めユーザ識別子と、送信先のメールアドレスとを対応付けて有する情報を図示しない格納部等に蓄積しておくようにして、この情報から、判断結果により取得されたユーザ識別子に対応付けられた送信先のメールアドレスを取得するようにしてもよい。また、メールの代わりに、いわゆるショートメッセージ等を送信するようにしてもよい。また、専用のグループウェア等を用いて、判断結果に応じたメッセージを送信するようにしてもよい。
なお、出力部106が、判断結果に応じて出力する情報は、例えば、ルール情報に予め判断結果と対応付けて格納されているようにしてもよく、予めルール情報と対応付けて図示しない格納部等に蓄積しておくようにしてもよい。同様に、出力部106が、判断結果に応じてどのような手段等によって出力を行なうかを指定する情報は、例えば、ルール情報に予め判断結果と対応付けて格納されているようにしてもよく、予めルール情報と対応付けて図示しない格納部等に蓄積しておくようにしてもよく、ルール情報と関係なく、予め指定されていてもよい。
出力とは、ディスプレイへの表示、プロジェクターを用いた投影、プリンタへの印字、音出力、外部の装置への送信、記録媒体への蓄積、他の処理装置や他のプログラムなどへの処理結果の引渡しなどを含む概念である。例えば、ここでのディスプレイへの表示は、ネットワーク等を介して他の情報処理端末等に表示用のデータ等を送信して、表示を行なわせることであってもよい。
出力部106は、例えば、ディスプレイやスピーカー等の出力デバイスを含むと考えても含まないと考えても良い。出力部106は、例えば、出力デバイスのドライバーソフトまたは、出力デバイスのドライバーソフトと出力デバイス等で実現され得る。
次に、勤怠管理装置1の動作の一例について図2のフローチャートを用いて説明する。
(ステップS101)受付部103は、一以上の勤怠情報と、日付と、ユーザ識別子とを、他の装置から受信したか否かを判断する。他の装置は、例えば、ユーザが利用する情報端末等である。一以上の勤怠情報は、例えば、予め決められた一以上の属性の勤怠情報のうちの一以上である。受信した場合、ステップS102に進み、受け付けていない場合、ステップS103に進む。
(ステップS102)受付部103は、ステップS101で受信した勤怠情報を、ステップS101で受信したユーザ識別子と日付と対応付けて勤怠情報格納部101に蓄積する。なお、例えば、勤怠情報格納部101には、毎日、一定または不定の時刻に、予め決められた一以上のユーザ識別子と、現在の日付とに、対応付けられた予め決められた一以上の属性を有する勤怠情報であって、値が「Null」である勤怠情報を有する勤怠管理情報が、受付部103や、図示しない蓄積部等により作成されて蓄積されるようにし、この勤怠管理情報の、値が「Null」である勤怠情報を、ステップS101で受信した同じユーザ識別子と日付とに対応付けられた同じ属性の勤怠情報で更新していくようにしてもよい。あるいは、現在以降の日付を含む一ヶ月分や一年分等の予め決められた期間分の日付と、一以上のユーザ識別子と、対応付けられた予め決められた一以上の属性を有する勤怠情報であって、値が「Null」である勤怠情報を有する勤怠管理情報が、予め決められたタイミング(例えば、月末、月頭、年度末、年度初め等)に、受付部103等により作成されて、勤怠情報格納部101に蓄積されるようにし、この勤怠管理情報が有する一以上の勤怠情報を、受信した勤怠情報で更新していくようにしてもよい。また、受付部103は、一以上の勤怠情報を蓄積する際に、蓄積する二以上の勤怠情報の二以上を用いて、または、蓄積する勤怠情報の一以上と、既に蓄積されている勤怠情報の一以上とを用いて、他の属性の勤怠情報を作成して蓄積してもよい。
(ステップS103)判断部105は、出退ルール情報を用いた判断を行なうタイミングであるか否かを判断する。例えば、判断部105は、時計等から現在の日時等を取得して、出退ルール情報が有する判断を行なうタイミング、または予め決められた判断を行なうタイミングを示す日時であるか否かを判断する。判断を行なうタイミングである場合、ステップS104に進み、タイミングでない場合、ステップS108に進む。
(ステップS104)判断部105は、ルール情報格納部104から出退ルール情報を読出して、出退ルール情報を満たす勤怠情報があるか否かを判断する。出退ルール情報を満たす勤怠情報がある場合、ステップS105に進み、ない場合、ステップS101に戻る。なお、ここでは、出退ルール情報を満たす勤怠情報があるか否かを判断する場合について説明するが、出退ルール情報に応じて、適宜、出退ルール情報を満たさない勤怠情報があるか否か等の判断を行なうようにしても良い。この場合は、例えば、出退ルールを満たさない勤怠情報がある場合に、ステップS105に進むようにしてもよい。
(ステップS105)判断部105は、ステップS104で検出された各勤怠情報について、各勤怠情報に対応付けられたユーザ識別子および日付と同じユーザ識別子と日付に対応付けられた申請情報であって、ステップS104で判断に用いた勤怠情報に対応する申請項目を有する申請情報が、申請情報格納部102に格納されているか否かを判断する。格納されている場合、ステップS106に進み、ない場合、ステップS107に進む。
(ステップS106)判断部105は、ステップS104で出退ルール情報を満たすと判断された勤怠情報の中から、ステップS105において、申請情報が格納されていると判断された勤怠情報を除外する。
(ステップS107)出力部106は、ステップS104で出退ルール情報を満たすと判断された勤怠情報であって、ステップS105において、申請情報が格納されていると判断された勤怠情報を除外して残った勤怠情報に対応した情報を出力する。なお、ステップS106の処理が行なわれなかった場合、ステップS104で出退ルール情報を満たすと判断された勤怠情報に対応した情報を出力する。例えば、ユーザ毎の勤怠情報の一覧表であって、出勤時刻または退出時刻がないと判断された部分(ただし、ステップS106で除外された部分を除く)を強調表示した表を、図示しないモニタ等に表示する。または、出力部106は、表を印刷してもよい。そして、ステップS101に戻る。
(ステップS108)判断部105は、残業ルール情報を用いた判断を行なうタイミングであるか否かを判断する。例えば、判断部105は、時計等から現在の日時等を取得して、残業ルール情報が有する判断を行なうタイミング、または予め決められた判断を行なうタイミングを示す日時であるか否かを判断する。判断を行なうタイミングである場合、ステップS108に進み、タイミングでない場合、ステップS101に進む。
(ステップS109)判断部105は、ルール情報格納部104から残業ルール情報を読出して、残業ルール情報を満たす勤怠情報があるか否かを判断する。ここでは、残業ルール情報が、一例として、上述したように、判断に利用される第一の範囲と、第二の範囲と、第三の範囲とを有しているものとする。第一の範囲と第二の範囲と第三の範囲は、例えば、閾値で区切られた範囲である。そして、判断部105は、勤怠情報格納部101に格納されている勤怠情報のうちの、一以上のユーザにそれぞれ対応付けられた勤怠情報である残業時間のうちの、予め決められた期間内(例えば、過去三ヶ月等)の日付と対応付けられた残業時間を取得して、残業時間を累積する。そして、各ユーザについて累積した残業時間が、第一の範囲に入るか否かを判断する。第一の範囲に入る場合、ステップS110に進み、入らない場合、ステップS111に進む。
(ステップS110)出力部106は、ステップS109で第一の範囲に入ると判断された残業情報に対応するユーザ識別子を取得し、このユーザ識別子が示すユーザの上司のメールアドレスを、一以上のユーザ識別子と、この一以上のユーザ識別子がそれぞれ示すユーザの上司のメールアドレスとを対応付けて有する情報から、検索等により取得し、取得したメールアドレスに、ユーザ識別子と、第一の範囲に対応する情報とを有するメールを送信する。送信する第一の範囲に対応する情報は、例えば、残業時間が多すぎることを警告する情報であってもよく、法定の残業時間の上限を超えていることを示す情報であってもよい。そして、ステップS101に戻る。
(ステップS111)判断部105は、ステップS109において各ユーザについて累積した残業時間が、第二の範囲に入るか否かを判断する。第二の範囲に入る場合、ステップS112に進み、入らない場合、ステップS101に戻る。
(ステップS112)出力部106は、ステップS111で第二の範囲に入ると判断された残業情報に対応するユーザ識別子を取得し、このユーザ識別子が示すユーザの上司のメールアドレスを、ステップS110と同様に取得し、取得したメールアドレスに、ユーザ識別子と、第二の範囲に対応する情報とを有するメールを送信する。送信する第二の範囲に対応する情報は、例えば、残業時間が多くなっていることを警告する情報等である。そして、ステップS101に戻る。
なお、図2のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
以下、本実施の形態における勤怠管理装置1の具体的な動作について説明する。ここでは、一の企業の複数の社員の勤怠を管理する場合を例に挙げて説明する。ここでは、社員が上述したユーザに相当する。
図3は、勤怠情報格納部101に格納される勤怠情報を管理する勤怠情報管理表である。勤怠情報管理表は、「日付」、「ユーザID」、「出勤時刻」、「退出時刻」、「出勤時間」、「普通残業時間」、「深夜残業時間」という属性を有している。「日付」は、日付であり、ここでは、年月日を示している。「ユーザID」はユーザ識別子であり、ここでは社員番号であるとする。「出勤時刻」は出勤時刻、「退出時刻」は退出時刻、「出勤時間」は、ユーザが勤務する企業の就業規則で定められた就業時間内におけるユーザが出勤している時間、「普通残業時間」は、深夜残業を除いた残業時間、「深夜残業時間」は、深夜残業時間である。ここでは、「出勤時刻」、「退出時刻」、「出勤時間」、「普通残業時間」、および「深夜残業時間」が、勤怠情報の属性名であり、これらの属性値が、それぞれ勤怠情報であるとする。勤怠情報管理表には、予め決められた複数のユーザの勤怠情報が格納されているものとする。勤怠情報管理表の一のレコード(行)は、一の勤怠管理情報に相当する。なお、勤怠情報管理表において、値が入力されていないセルは、ここでは、属性値が「Null」であるものとする。
なお、ここでは、ユーザが勤務する企業の就業開始時刻および就業終了時刻が、就業規則により「9時00分」および「18時00分」に定められているものとし、各レコードの「出勤時間」、「普通残業時間」、および「深夜残業時間」は、通常は、この就業時間と、同じレコードの「出勤時刻」および「退出時刻」の属性値を用いて算出されて、蓄積するものとする。例えば、「出勤時間」は、「退出時刻」から「出勤時刻」を減算して算出される。ただし、「出勤時刻」が、就業開始時刻である「9時00分」よりも前の場合は、「出勤時刻」の代わりに「9時00分」を用い、「退出時刻」が就業終了時刻である「18時00分」よりも後の場合は、「退出時刻」の代わりに「18時00分」を用いて「出勤時間」を算出するものとする。また、「普通残業時間」は、「退出時刻」が「就業終了時刻」よりも遅い時刻を示す場合に、「退出時刻」から「就業終了時刻」を減算して算出される。ただし、「退出時刻」が深夜残業の開始時刻である「20時00分」より後の時刻である場合、「退出時刻」の代わりに「20時00分」を用いる。また、「深夜残業時間」は、「退出時刻」が深夜残業の開始時刻である「20時00分」よりも遅い時刻を示す場合に、「退出時刻」から「20時00分」を減算して算出される。これらの算出および蓄積は受付部103が行なっても良く、図示しない蓄積部等が行なっても良い。ただし、「出勤時間」、「普通残業時間」、および「深夜残業時間」の属性値としては、受付部103が受け付けたこれらの属性に対応する勤怠情報が、受付部103等により蓄積されるようにしてもよく、更新されるようにしてもよい。
また、ここでは、一例として毎日所定の時間、例えば、0時を過ぎた時点で、上記の複数のユーザのユーザ識別子をそれぞれ「ユーザID」の属性値として有しており、「日付」として現在の日付を有している複数のレコードであって、その他の属性の属性値が「Null」であるレコードが、図3に示した勤怠情報管理表に追記されるものとする。
例えば、企業に勤務するユーザ識別子が「0010001」である社員が、勤怠管理装置1とネットワーク等を介して接続された図示しない情報処理端末に対して、予め決められた属性を有する複数の勤怠情報のうちの一以上の勤怠情報、例えば、出勤時刻等を送信する指示を与えると、情報処理端末は、出勤時刻である現在の時刻と、現在の日付と、情報処理端末に対してログイン等を行なう際に入力されたユーザ識別子「0010001」との組を、勤怠管理装置1に対して送信する。出勤時刻には、「出勤時刻」という属性名は対応付けて送信されるものとする。予め決められた属性を有する複数の勤怠情報は、例えば、勤怠管理情報を構成する複数の属性の勤怠情報である。
勤怠管理装置1の受付部103は、ユーザの情報処理端末から送信される勤怠情報である出勤時刻と、日付と、ユーザ識別子とを受信し、勤怠情報格納部101に蓄積する。具体的には、受付部103は、図3に示した勤怠情報管理表が有する各レコードのうちの、受信したユーザ識別子および日付が一致するレコードの、受信した勤怠情報と同じ属性の勤怠情報、ここでは、受信した勤怠情報に対応付けられた属性名である「出勤時刻」と同じ属性名と対応付けられた属性値として、受信した勤怠情報である出勤時刻を蓄積する。ここでの蓄積は、既に、「出勤時刻」と同じ属性名と対応付けられた属性値として蓄積されている属性値(例えば「Null」等)を、受信した勤怠情報である出勤時刻で更新することと考えてもよい。
図4は、ルール情報格納部104に格納されているルール情報を管理するルール情報管理表である。ルール情報は、例えば、「ID」と、「日時」と、「ルール」と、「出力」という属性を有している。ここでは、各レコード(行)が、一のルール情報に相当しているものとする。「ID」は、ルール情報を識別する識別子である。「日時」は、ルール情報が示すルールを用いた判断を行なう日時を指定する情報であり、ここでは日時を決定する条件を示している。「ルール」は、判断に用いられるルールである。「出力」は、ルールを満たす場合の出力を示す情報である。なお、ここでは、「日時」、「ルール」、および「出力」を、自然言語で表しているが、「日時」、「ルール」、および「出力」は、例えば、これらの自然言語に相当する一以上の関数や、メソッド名や、「if」、「then」等で示される制御構文等で構成されていてもよい。また、「日時」、「ルール」、および「出力」は、これらの自然言語に対応する判断処理等を行うためのアルゴリズム等であっても良い。
図5は、申請情報格納部102に格納されている申請情報を管理する申請情報管理表を示す図である。申請情報管理表は、「申請項目」と、「ユーザID」と、「実行日付」とを有する「申請項目」は、申請項目である。「ユーザID」は、上記の「ユーザID」と同様のユーザ識別子である。「実行日付」は、申請内容が行なわれる日付である。
ここで、現在の日時が、2015年9月30日(水曜日)の7時00分であったとすると、判断部105は、現在の日時が、図4に示したルール情報管理表の「ID」が「01」であるレコードの「日時」の属性値が示す日時、つまり、月の最後の就業日の7時00分であると判断する。このため、判断部105は、ルール情報管理表の「ID」が「01」であるレコードの「ルール」の属性値を読出し、勤怠情報格納部101に格納されている各ユーザ毎の勤怠管理情報が有する一以上の勤怠情報が、この属性値が示すルールを満たすか否かを判断する。このルール情報は、例えば、上述した出退ルール情報に相当する。
具体的には、読出した「ルール」の属性値が、「今月分の「出勤時刻」または「退出時刻」がない」というルールであるため、判断部105は、勤怠情報格納部101に対応する勤怠情報が格納されているユーザ識別子のそれぞれについて、このユーザ識別子と「ユーザID」との値が一致し、かつ「日付」が現在の日付の月である「9月」の日付であるレコードであって、「出勤時刻」または「退出時刻」の値がないレコードを検出する処理を行なう。ただし、予め指定された休日に対応する「日付」を有するレコードは、検出の対象から除くものとする。ここで検出したレコードが、ルール情報管理表の「ID」が「01」であるレコードのルール情報が示すルールを満たす勤怠情報を有するレコードである。「出勤時刻」または「退出時刻」の値がないレコードとは、「出勤時刻」または「退出時刻」の値が「Null」であるレコードと考えてもよい。なお、「出勤時刻」または「退出時刻」の値がないレコードを検出する処理は、「出勤時刻」がないレコードを検出する処理と、「退出時刻」がないレコードを検出する処理との組合わせであってもよい。そして、ユーザ識別子毎に、「出勤時刻」の値がないレコードの「日付」の属性値と、「退出時刻」の値がないレコードの「日付」の属性値とを取得する。
例えば、図3に示した勤怠情報管理表において、判断部105は、「ユーザID」が「0010001」であるユーザについて、「出勤時刻」がないレコードの日付として、「2015/9/29」を取得し、「退出時刻」がないレコードの日付として、「2015/9/22」および「2015/6/24」を取得する。
ここで、更に、このルール情報については、例えば、対応する申請項目が「休み」、「遅刻」、または「午前半休」であれば、実際には「出勤時刻」がないレコードも、条件を満たすレコードとして検出しないことと、対応する申請項目が「休み」、「早退」、または「午後半休」であれば、実際には「退出時刻」がないレコードも、条件を満たすレコードとして検出しないことが予め決められていたとする。判断部105は、申請情報格納部102に格納されている申請情報から、上記で検出したレコードに対応する申請情報を検出する。具体的には、上記で取得した「出勤時刻」がないレコードの「日付」と、この「日付」に対応する「ユーザID」との組に一致する「実行日付」と「ユーザID」とを有するレコードを、図5に示した申請情報管理表において検索する。そしてレコードが検出された場合、検出したレコードの「申請項目」が「休み」、「遅刻」、および「午前半休」のいずれかと一致するか否かを判断し、一致する場合、上記で取得した「出勤時刻」がないレコードの「日付」を削除し、一致しない場合は削除しない。また、申請情報管理表においてレコードが検出されない場合も、上記で取得した「出勤時刻」がないレコードの「日付」を削除しない。
例えば、判断部105は、「ユーザID」が「0010001」であって、「実行日付」が「2015/9/29」であるレコードを申請情報管理表において検出するが、一致するレコードがないため、上記で取得した「出勤時刻」がないレコードの日付「2015/9/29」は削除しない。
同様に、判断部105は、上記で取得した「退出時刻」がないレコードの「日付」と、この日付に対応する「ユーザID」との組に一致する「実行日付」と「ユーザID」とを有するレコードを、図5に示した申請情報管理表において検索する。そしてレコードが検出された場合、検出したレコードの「申請項目」が「休み」、「早退」、および「午後半休」のいずれかと一致するか否かを判断し、一致する場合、上記で取得した「退出時刻」がないレコードの「日付」を削除し、一致しない場合は、削除しない。また、申請情報管理表においてレコードが検出されない場合も、上記で取得した「退出時刻」がないレコードの「日付」を削除しない。
例えば、判断部105は、「ユーザID」が「0010001」であって、「実行日付」が「2015/9/22」であるレコードと、「ユーザID」が「0010001」であって、「実行日付」が「2015/9/24」であるレコードとをそれぞれ申請情報管理表において検索し、「ユーザID」が「0010001」であって、「実行日付」が「2015/9/22」であるレコードだけが検出されたとすると、判断部105は、このレコードの「申請項目」の属性値が「休み」、「早退」、または「午前半休」と一致するか否かを判断する。ここでは、「早退」と一致するため、上記で取得した「退出時刻」がないレコードの日付「2015/9/22」を削除する。また、一致するレコードがないと判断された上記で取得した「退出時刻」がないレコードの「日付」である「2015/9/24」は削除しない。
出力部106は、ルール情報管理表の「ID」が「01」であるレコードの「出力」の属性値『「出勤時刻」または「退出時刻」がないセルを強調したユーザ毎の勤怠情報の一覧表を出力する。』を取得し、この属性値に応じて、判断部105が行なった判断の結果に応じた出力を行なう。この出力は、例えば、上記で削除されずに残った「出勤時刻」がないレコードの「日付」と、この日付に対応するユーザの「ユーザID」との組と、「退出時刻」がないレコードの「日付」と、この日付に対応するユーザの「ユーザID」との組と、を示す情報の出力である。
ここでは、出力部106は、図3に示した勤怠情報管理表のうちの、「日付」が9月の日付であるレコードの「日付」、「出勤時刻」、「退出時刻」、「出勤時間」、「普通残業時間」、および「深夜残業時間」の属性値を、「ユーザID」毎に配置した一覧表であって、上記で判断部105が各「ユーザID」について取得した「出勤時刻」がないレコードの「日付」と、「退出時刻」がないレコードの「日付」とに対応する部分を、強調して示した一覧表を作成し、作成した一覧表のデータを、図示しない格納部等に蓄積する。この一覧表は、ユーザ毎の各月の勤務情報の一覧表と考えてもよく、勤怠実績表と考えてもよい。この一覧表は、例えば、図示しない格納部等に格納されているテンプレート等を用いて作成される。
例えば、一の「ユーザID」について取得した「出勤時刻」がないレコードの「日付」に対応する部分とは、この一の「ユーザID」と同じ「ユーザID」についての「日付」、「出勤時刻」、「退出時刻」、「出勤時間」、「普通残業時間」、および「深夜残業時間」の属性値を配置した一覧表の、「出勤時刻」がないレコードの「日付」と同じ「日付」を有するレコード(例えば、行)の属性名が「出勤時刻」であるセルである。例えば、一の「ユーザID」について取得した「退出時刻」がないレコードの「日付」に対応する部分とは、この一の「ユーザID」と同じ「ユーザID」についての「日付」、「出勤時刻」、「退出時刻」、「出勤時間」、「普通残業時間」、および「深夜残業時間」の属性値を配置した一覧表の、「退出時刻」がないレコードの「日付」と同じ「日付」を有するレコード(例えば、行)の属性名が「退出時刻」であるセルである。出力部106は、これらのセルの背景色を他のセルとは異なる色に設定した一覧表を作成する。
そして、受付部103等が、例えば、勤怠情報格納部101に格納されている勤怠情報に対応する一以上のユーザの上司等から、この一覧表を表示する指示を受け付けた場合に、出力部106は、上記で作成した一覧表を図示しないモニタに表示する。なお、上記で作成した一覧表のデータを、出力部106が、他の情報処理端末(図示せず)に送信して、この情報処理端末で一覧表を表示させるようにしてもよい。なお、「ユーザID」が異なるユーザの一覧表を適宜切り替えて表示できるようにしてもよいことはいうまでもない。
図6は、出力部106が判断部105の判断結果に応じて作成して出力した勤怠情報の一覧表を示す図である。図においては、「ユーザID」が「0010001」に対応する勤怠情報の一覧表を示しており、上記で取得され削除されずに残った「出勤時刻」がないレコードの「日付」である「2015/9/29」と「日付」が一致するレコード(行)の属性名が「出勤時刻」であるセル61と、上記で取得され削除されずに残った「退出時刻」がないレコードの「日付」である「2015/9/24」と「日付」が一致するレコード(行)の属性名が「出勤時刻」であるセル62と、が強調表示されるよう、他のセルとは異なる背景色となっている。
なお、図6においては、一例として、勤怠情報格納部101に格納されていない他の情報等が配置された表を示しているが、これらの情報は表示しないようにしてもよい。また、ここでは、「ユーザID」に対応する社員の名前を、図示しない格納部に格納されている「ユーザID」と社員の名前とを有する一以上の情報から検索等により取得して配置している例を示している。
これにより、例えば、勤怠情報である出勤時刻または退出時刻の入力がない部分を示すことができ、入力を促したり、確認を促したりすることができる。
また、現在の日時が、2015年9月30日(水曜日)の7時00分であるため、判断部105は、現在の日時が、図4に示したルール情報管理表の「ID」が「02」であるレコードの「日時」の属性値が示す日時、つまり、3月、6月、9月、および12月のいずれかの最後の就業日の7時00分であると判断する。このため、判断部105は、ルール情報管理表の「ID」が「02」であるレコードの「ルール」の属性値を読出し、勤怠情報格納部101に格納されている各ユーザ毎の勤怠情報が、この属性値が示すルールを満たすか否かを判断する。このルール情報は、例えば、上述した残業ルール情報に相当する。
具体的には、読出した属性値が、「直前の2ヶ月と今月の「普通残業時間」と「深夜残業時間」との合計が第一の範囲(120時間以上の期間)または第二の範囲(110時間以上120時間以下)の値である」というルールであるため、判断部105は、勤怠情報格納部101に対応する勤怠情報が格納されているユーザ識別子のそれぞれについて、このユーザ識別子と「ユーザID」との値が一致し、かつ「日付」が現在の月の二ヶ月前の最初の就業日から、現在の日付までであるレコードを検出し、検出したレコードの「普通残業時間」の属性値と、「深夜残業時間」の属性値とを累積、つまり加算していく。そして、判断部105は、「普通残業時間」の属性値と、「深夜残業時間」の属性値とを累積した値(以下、残業時間を累積した値と称す)が、上記の第一の範囲の値であるか否かを判断し、第一の範囲の値である場合、第一の範囲の値であることを示す情報と、残業時間を累積した値と、ユーザ識別子とを取得する。また、第一の範囲の値でない場合、判断部105は、残業時間を累積した値が第二の範囲の値であるか否かを判断する。第二の範囲の値である場合、第二の値であることを示す情報と、残業時間を累積した値累積した値と、ユーザ識別子とを取得する。また、第二の値でない場合には、上記のような情報を取得しない。
また、このルール情報については、申請情報を利用することが指定されておらず、申請情報管理表の申請情報は利用しないものとする。
図7は、ユーザのユーザ識別子と、このユーザの上司のメールアドレスとを対応付けて管理するアドレス管理表である。アドレス管理表は、「ユーザID」と、「メールアドレス」という属性を有している。「ユーザID」は上記の「ユーザID」に相当する。「メールアドレス」は、対応する「ユーザID」が示すユーザの上司のメールアドレスである。一のレコード(行)が有する「アドレス」の属性値は、同じレコードの「ユーザID」が示すユーザの上司のメールアドレスであるとする。
出力部106は、ルール情報管理表の「ID」が「02」であるレコードの「出力」の属性値「第一の範囲の場合、第一のメッセージを上司にメール送信する。第二の範囲の場合、第二のメッセージを上司にメール送信する」を取得し、この属性値に応じて、判断部105が行なった判断の結果に応じた出力を行なう。
具体的には、出力部106は、上記で判断部105が取得した第一の範囲の値であることを示す情報と、「残業時間」を累積した値と、ユーザ識別子とを有する組毎に、この組が有するユーザ識別子の上司のメールアドレスを、図7のアドレス管理表から取得する。具体的には、第一の範囲の値であることを示す情報と対応付けられたユーザ識別子と「ユーザID」の属性値が一致するレコードを、図6のアドレス管理表から検索し、検出したレコードの「アドレス」の属性値である上司のメールアドレスを取得する。また、出力部106は、図示しない格納部等に予め格納されている第一のメッセージを読み出す。この第一のメッセージには、例えば、第一の範囲の値であることを示す情報と対応付けられた残業時間を累積した値と、ユーザ識別子とを配置する位置が予め決められているものとする。出力部106は、上記の組毎に取得した上司のメールアドレスに、同じ組の残業時間を累積した値と、ユーザ識別子とを配置した第一のメッセージを配置したメールを送信する。
また、出力部106は、同様に、上記で判断部105が取得した第二の範囲の値であることを示す情報と、「残業時間」を累積した値と、ユーザ識別子とを有する組毎に、この組が有するユーザ識別子の上司のメールアドレスを取得する。また、出力部106は、図示しない格納部等に予め格納されている第二のメッセージを読み出す。この第二のメッセージには、例えば、第二の範囲の値であることを示す情報と対応付けられた残業時間を累積した値と、ユーザ識別子とを配置する位置が予め決められているものとする。出力部106は、上記の組毎に取得した上司のメールアドレスに、同じ組の残業時間を累積した値と、ユーザ識別子とを配置した第二のメッセージを有するメールを送信する。
図8は、第一のメッセージを配置したメールの表示例を示す図(図8(a))、および第二のメッセージを配置したメールの表示例を示す図(図8(b))である。図において領域71および領域72が、第一のメッセージ70の「ユーザID」が配置される領域および残業時間を累積した値が配置される領域であり、領域74および領域75が、第二のメッセージ73の「ユーザID」が配置される領域および残業時間を累積した値が配置される領域である。
これらのメールを、ユーザの上司に送信することで、上司に、残業時間に関して確認すべき点や、注意すべき点等を通知することができる。
また、現在の日時が、2015年9月30日(水曜日)の9時00分となったとすると、判断部105は、図4に示したルール情報管理表の「ID」が「03」であるレコードの「日時」の属性値が示す日時であると判断する。このため、判断部105は、ルール情報管理表の「ID」が「03」であるレコードの「ルール」の属性値を読出し、勤怠情報格納部101に格納されている各ユーザ毎の勤怠情報が、この属性値が示すルールを満たすか否かを判断する。具体的には、読出した属性値が、「今日の「出勤時刻」がない」というルールであるため、判断部105は、図3に示した勤怠情報管理表において、「日付」が現在の日付である「2015年9月30日」であって、「出勤時刻」がないレコードを検出し、検出したレコードの「ユーザID」を取得する。そして、上記の「ID」が「01」であるルール情報を用いた場合と同様に、図5に示した申請情報において、取得した各「ユーザID」と「ユーザID」の値が一致するレコードであって、「申請項目」が「遅刻」、「午前半休」または「休み」であるレコードがあるか否かを判断し、このようなレコードが検出された「ユーザID」を、上記で取得した「ユーザID」から削除する。
そして、出力部106は、図4に示したルール情報管理表の「ID」が「03」であるレコードの「出力」の属性値「上司に第三のメッセージをメール送信する」を取得して、この属性値に応じて、上記で取得した「ユーザID」であって、上記で削除されずに残った「ユーザID」をそれぞれ配置した第三のメッセージを有するメールを、この「ユーザID」が示すユーザの上司にメール送信する。上司のメールアドレスを取得する処理等は上記と同様であるため、ここでは省略する。なお、第三のメッセージは、例えば、図示しない格納部等から読み出すようにしてもよい。かかることは、第四のメッセージについても同様である。
また、現在の日時が、2015年9月30日(水曜日)の22時00分となったとすると、判断部105は、図4に示したルール情報管理表の「ID」が「04」であるレコードの「日時」の属性値が示す日時であると判断する。このため、判断部105は、ルール情報管理表の「ID」が「04」であるレコードの「ルール」の属性値を読出し、勤怠情報格納部101に格納されている各ユーザ毎の勤怠情報が、この属性値が示すルールを満たすか否かを判断する。具体的には、読出した属性値が、「今日の「退出時刻」がない」というルールであるため、判断部105は、図3に示した勤怠情報管理表において、「日付」が現在の日付である「2015年9月30日」であって、「退出時刻」がないレコードを検出し、検出したレコードの「ユーザID」を取得する。そして、上記の「ID」が「01」であるルール情報を用いた場合と同様に、図5に示した申請情報において、取得した各「ユーザID」と「ユーザID」の値が一致するレコードであって、「申請項目」が「早退」、「午後半休」または「休み」であるレコードがあるか否かを判断し、このようなレコードが検出された「ユーザID」を、上記で取得した「ユーザID」から削除する。
そして、出力部106は、図4に示したルール情報管理表の「ID」が「04」であるレコードの「出力」の属性値「上司に第四のメッセージをメール送信する」を取得して、この属性値に応じて、上記で取得した「ユーザID」であって、上記で削除されずに残った「ユーザID」をそれぞれ配置した第四のメッセージを有するメールを、この「ユーザID」が示すユーザの上司にメール送信する。上司のメールアドレスを取得する処理等は上記と同様であるため、ここでは省略する。
図9は、第三のメッセージを有するメールの表示例を示す図(図9(a))、および第四のメッセージを有するメールの表示例を示す図(図9(b))である。図において領域81が、第三のメッセージ80の「ユーザID」が配置される領域であり、領域83が、第四のメッセージ82の「ユーザID」が配置される領域および残業時間を累積した値が配置される領域である。
これらのメールを、ユーザの上司に送信することで、上司に、社員の出勤状況や退出状況を通知することができる。
以上、本実施の形態によれば、勤怠に関するルールを満たすか否かの判断結果に応じた情報を出力することができ、適切な勤怠に関する情報が格納されているか否かを判断することができる。
なお、上記各実施の形態において、各処理(各機能)は、単一の装置(システム)によって集中処理されることによって実現されてもよく、あるいは、複数の装置によって分散処理されることによって実現されてもよい。
なお、上記各実施の形態における勤怠管理装置を実現するソフトウェアは、以下のようなプログラムである。つまり、このプログラムは、ユーザ識別子と、ユーザ識別子が示すユーザの勤怠に関する時間の情報である勤怠情報が格納される勤怠情報格納部と、勤怠情報に関するルールを示す情報である一以上のルール情報が格納されるルール情報格納部と、にアクセス可能なコンピュータを、ルール情報が示すルールを、勤怠情報が満たすか否かを判断する判断部と、判断部の判断結果に応じた情報を出力する出力部として機能させるためのプログラムである。
なお、上記プログラムにおいて、上記プログラムが実現する機能には、ハードウェアでしか実現できない機能は含まれない。例えば、情報を取得する取得部や、情報を出力する出力部などにおけるモデムやインターフェースカードなどのハードウェアでしか実現できない機能は、上記プログラムが実現する機能には含まれない。
また、このプログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
図10は、上記プログラムを実行して、上記実施の形態による勤怠管理装置を実現するコンピュータの外観の一例を示す模式図である。上記実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムによって実現されうる。
図10において、コンピュータシステム900は、CD−ROM(Compact Disk Read Only Memory)ドライブ905を含むコンピュータ901と、キーボード902と、マウス903と、モニタ904とを備える。
図11は、コンピュータシステム900の内部構成を示す図である。図11において、コンピュータ901は、CD−ROMドライブ905に加えて、MPU(Micro Processing Unit)911と、ブートアッププログラム等のプログラムを記憶するためのROM912と、MPU911に接続され、アプリケーションプログラムの命令を一時的に記憶すると共に、一時記憶空間を提供するRAM(Random Access Memory)913と、アプリケーションプログラム、システムプログラム、及びデータを記憶するハードディスク914と、MPU911、ROM912等を相互に接続するバス915とを備える。なお、コンピュータ901は、LANへの接続を提供する図示しないネットワークカードを含んでいてもよい。
コンピュータシステム900に、上記実施の形態による勤怠管理装置等の機能を実行させるプログラムは、CD−ROM921に記憶されて、CD−ROMドライブ905に挿入され、ハードディスク914に転送されてもよい。これに代えて、そのプログラムは、図示しないネットワークを介してコンピュータ901に送信され、ハードディスク914に記憶されてもよい。プログラムは実行の際にRAM913にロードされる。なお、プログラムは、CD−ROM921、またはネットワークから直接、ロードされてもよい。
プログラムは、コンピュータ901に、上記実施の形態による勤怠管理装置の機能を実行させるオペレーティングシステム(OS)、またはサードパーティプログラム等を必ずしも含んでいなくてもよい。プログラムは、制御された態様で適切な機能(モジュール)を呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいてもよい。コンピュータシステム900がどのように動作するのかについては周知であり、詳細な説明は省略する。
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。