1. 概要(Purpose / Scope)

本ページでは、時間計算における主な時間差計算機能の計算仕様検証方法を公開します。現在のホームページの主要ツールは、開始時刻終了時刻休憩時間をもとに、経過時間を求める電卓です。

このページの目的は、計算結果がどのようなロジックで導かれるか、どのような入力を受け付けるか、どのような条件でエラーになるか、どのように検証しているかを利用者に明示し、透明性と信頼性を高めることにあります。

なお、残業電卓、勤務時間電卓、丸め電卓、タイムシート電卓などの個別ツールでは、ページごとに追加ルールや個別設定が適用される場合があります。本ページでは、特にホームページ上の時間差計算ツールを中心に説明します。

2. 対象機能(Target Functionality)

3. 入力仕様(Input Specification)

実際の入力UIはページやデバイスによって異なる場合がありますが、計算ロジック上は、開始時刻と終了時刻を比較可能な時刻データとして受け取り、休憩時間を差し引く構造になっています。

4. 計算ロジック(Calculation Logic)

内部演算は、時刻や時間を比較しやすい単位に変換して行います。基本的な考え方は次のとおりです。

// 擬似コード:経過時間の算出
function calculateElapsed(start, end, breakDuration):
  startValue = convertTimeToSeconds(start)
  endValue = convertTimeToSeconds(end)
  breakValue = convertDurationToSeconds(breakDuration || 0)

  if endValue < startValue:
    endValue = endValue + 24 * 60 * 60

  elapsed = endValue - startValue - breakValue

  return elapsed

基本式は 経過時間 = 終了時刻 - 開始時刻 - 休憩時間 です。必要に応じて翌日またぎを考慮し、その後に結果を表示用の形式へ変換します。

注:ホームページの主要ツールは、旧来の「時間の足し算・引き算の履歴計算」を中心とした構造ではなく、時刻差の算出を中心とした設計です。

5. 翌日またぎの扱い(Overnight Handling)

終了時刻が開始時刻より早い場合、同日の逆転入力ではなく、翌日にまたがる計算として扱います。これは、夜勤や深夜勤務、日付をまたぐ作業時間を自然に計算できるようにするためです。

この処理により、終了時刻が単純に開始時刻より小さい場合でも、利用者が意図する「日付をまたいだ勤務・作業」の計算結果を得やすくしています。

6. 休憩時間の扱い(Break Handling)

休憩時間が経過時間を上回る場合の扱いは、UI上の制約やエラー処理方針に従います。一般的には、入力ミスを防ぐために警告またはエラー表示を優先します。

7. 表示形式と出力(Output)

出力形式の切替は、計算結果そのものを変更するものではなく、同じ内部結果を異なる表示単位に変換して見せる機能です。内部値の整合性を保つため、まず計算結果を確定し、その後に表示形式へ変換します。

8. エラーハンドリング

エラー時には曖昧な失敗ではなく、入力内容のどこに問題があるかをなるべく明確に示すことを重視しています。

9. 性能・安全性

内部処理は過度に複雑なアルゴリズムではなく、時刻差の計算と表示変換を中心とした構成です。これにより、説明可能性と処理の安定性を両立しやすくしています。

10. データ保存とプライバシー

履歴機能や旧来の加減算リストを前提とした保存仕様は、現在のホームページの主要ツールでは中心機能ではありません。詳細は プライバシー を参照してください。

11. 品質保証(Testing Methodology)

代表テストケース(例)

ID入力設定期待出力
T-001開始 09:00 / 終了 17:00 / 休憩 1:00通常計算7:00
T-002開始 22:30 / 終了 06:00 / 休憩 0:30翌日またぎ7:00
T-003開始 09:15 / 終了 09:15 / 休憩 0:00同時刻0:00
T-004開始 未入力 / 終了 18:00必須入力不足エラー表示
T-005開始 08:00 / 終了 12:00 / 休憩 5:00休憩過大警告またはエラー

12. 既知の制約・限界

13. 再現手順(Reproducibility)

本ページで示したロジックは、同じ入力条件を与えることで再現可能です。たとえば、開始時刻、終了時刻、休憩時間を固定すれば、同じ経過時間が得られることを前提としています。

// 簡易サンプル:翌日またぎ
start = "22:00"
end = "06:00"
breakDuration = "1:00"

result = calculateElapsed(start, end, breakDuration)
// expected: 7:00

今後、公開テストケースやCSV形式の入力例・期待出力例を整備する場合があります。

14. 変更履歴

15. 参考資料