基本情報技術者 2018年 春期 午前(科目A) 問24
問題文
次のような注文データが入力されたとき、注文日が入力日以前の営業日かどうかを検査するチェックはどれか。

選択肢
ア:シーケンスチェック
イ:重複チェック
ウ:フォーマットチェック
エ:論理チェック(正解)
🔒 解説は解答すると表示されます
入力データの論理チェック【午前解説】
正解の理由
正解: エ
注文日が「入力日以前の営業日であること」を検査するためには、単に文字列や数値の形式を確認するだけでは不十分です。具体的には次を確認する必要があります。
- 注文日が入力日より前または同日である(大小関係のチェック)。
- 注文日が平日であるか、かつ祝日や会社独自の休業日に該当しない(営業日判定)。 これらは業務ルール(論理)に基づく判定であり、論理チェックに該当します。
解法ステップ
- 設問文で求められている検査対象を明確にする:「注文日が入力日以前の営業日か」を確認すること。
- 必要な判定要素を抽出する:日付の大小関係(<=)と営業日判定(祝日・休日を除く)。
- 各選択肢の役割を照合する:形式、重複、連番、業務ルールのどれに該当するかを比較する。
- 業務ルールの確認が含まれる選択肢(論理チェック)を正答とする。
選択肢別の誤答解説
- ア: シーケンスチェック
→ シーケンスチェックは伝票番号などの連番の抜けや順序性を確認するもので、日付の営業日判定には関係ありません。 - イ: 重複チェック
→ 重複チェックは同一伝票番号やレコードの重複検出に使う検査で、「入力日以前の営業日か」を判定する目的には合致しません。 - ウ: フォーマットチェック
→ フォーマットチェックは日付が正しい形式か(例:YYYY-MM-DD)を確認するだけで、営業日かどうかや入力日との大小比較は行いません。 - エ: 論理チェック
→ 業務上のルール(営業日判定+日付の大小関係)を検査するもので、本設問の要件に合致します(正解)。
よくある誤解
- フォーマットが通ればOKだと思い込み、"YYYY/MM/DD"の形式確認だけで合格としてしまう誤り。形式は満たしても業務ルール違反の可能性があります。
- 「営業日=平日」と安易にみなして祝日や会社休日を無視する失敗。営業日判定は休日カレンダーの参照が必要です。
- シーケンスや重複チェックと混同し、日付の比較や営業日の判定という「業務ロジック」を見落とすミス。
補足コラム
実装上の注意点やサンプルコードを示します。営業日判定は祝日や会社独自の休業日を参照する必要があるため、通常は休日テーブルや外部カレンダーAPIを用います。
例:SQLでの簡易チェック(休日テーブル holidays を想定)
-- order_date <= input_date かつ order_date が holidays に存在しない
SELECT *
FROM orders o
LEFT JOIN holidays h ON o.order_date = h.holiday_date
WHERE o.order_date <= :input_date
AND h.holiday_date IS NULL;
例:Python(workalendar ライブラリを利用した営業日判定の概念)
from workalendar.asia import Japan
cal = Japan()
def is_business_day(date):
return cal.is_working_day(date)
# チェック例
if order_date <= input_date and is_business_day(order_date):
# 合格
else:
# エラー(営業日でない、または入力日より後)
設計上のポイント:
- 休日データの更新管理(法定祝日や会社休日)を容易にする。
- タイムゾーンや時刻を扱う場合、日付比較の基準を明確にする(サーバ時間 vs 入力者地域時間)。
- 境界条件(「以前」に同日を含めるか除外するか)を仕様書で明確にする。
FAQ
Q1: 「営業日」の定義が曖昧な場合はどう判断するべきですか?
A1: 仕様書や業務担当者に確認し、祝日・週末・会社休日を含めた明確なルールを定義してから実装します。
A1: 仕様書や業務担当者に確認し、祝日・週末・会社休日を含めた明確なルールを定義してから実装します。
Q2: 時刻まで含むタイムスタンプの場合の比較は?
A2: 日付単位で判定するのか時刻まで含めるのか仕様で決めます。一般的には「注文日」が日付のみなら日付で比較し、時刻は無視します。
A2: 日付単位で判定するのか時刻まで含めるのか仕様で決めます。一般的には「注文日」が日付のみなら日付で比較し、時刻は無視します。
Q3: 祝日データが外部APIに依存する場合の対策は?
A3: 連携の信頼性確保とキャッシュ(更新スケジュール)の仕組みを用意し、API障害時のフォールバックを検討します。
A3: 連携の信頼性確保とキャッシュ(更新スケジュール)の仕組みを用意し、API障害時のフォールバックを検討します。
関連キーワード: データ検査、入力チェック、バリデーション、論理整合性、営業日判定、カレンダーAPI、フォーマットチェック、重複チェック、シーケンスチェック

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

