基本情報技術者 2010年 秋期 午前(科目A) 問57
問題文
ニューメリックチェックの説明として、適切なものはどれか。
選択肢
ア:一定の規則に従ってデータから検査文字を算出し、付加されている検査文字と比較することによって、入力データに誤りがないかどうかをチェックする。
イ:数値として扱う必要のあるデータに、数値として扱えない文字のようなものが含まれていないかどうかをチェックする。(正解)
ウ:販売数と在庫数と仕入数の関係など、関連のある項目の値に矛盾がないかどうかをチェックする。
エ:マスタファイル作成時の入力データ中に、キーの値が同じレコードが複数件含まれていないかどうかをチェックする。
##: ニューメリックチェックの説明【午前2 解説】
要点まとめ
- 結論:ニューメリックチェックは「数値として扱うために、数値文字以外が含まれていないかを確認する」チェックです。
- 根拠:文字の構成(数字・符号・小数点など)を検査し、数値変換や計算が可能かどうかを判定する点が本質です。
- 差がつくポイント:チェックサムや論理的一貫性、重複キーの検査と役割が明確に異なる点を瞬時に区別できること。
正解の理由
正解: イ
ニューメリックチェックは入力値が「数値として扱える文字列か」を確認する検査です。具体的には桁が数字のみであるか、必要に応じて符号(+/-)や小数点が許されるか、桁区切りや全角数字が混入していないかなどを検出します。
他の選択肢は目的が異なり、アはチェックディジット(チェックサム)による誤り検出、ウは複数項目間の論理整合性検査、エはキーの重複検査(ユニークネス)に該当します。よってイが適切です。
ニューメリックチェックは入力値が「数値として扱える文字列か」を確認する検査です。具体的には桁が数字のみであるか、必要に応じて符号(+/-)や小数点が許されるか、桁区切りや全角数字が混入していないかなどを検出します。
他の選択肢は目的が異なり、アはチェックディジット(チェックサム)による誤り検出、ウは複数項目間の論理整合性検査、エはキーの重複検査(ユニークネス)に該当します。よってイが適切です。
よくある誤解
- 「数値チェック=チェックサム」:チェックサムは誤り検出の別手法で、入力が数値であるかの判定とは目的が異なります。
- 「ニューメリックチェックは範囲チェックも含む」:範囲(負荷・上限下限)の判定は別のバリデーション項目であり、文字構成の検査とは区別されます。
- 「isdecimal/isnumericで十分」:言語処理によって全角数字や漢数字、Unicode数字が含まれる場合の挙動に注意が必要です。
解法ステップ
- 問題文のキーワード「ニューメリック(numeric)」が「数値に関する」チェックを示すと把握する。
- 各選択肢の目的語(検査対象)を短く要約する(文字構成、検査文字、項目間の関係、重複)。
- 「数値として扱えない文字が含まれているか」の意味と一致する選択肢を選ぶ。
- 残りの選択肢が別の検査(チェックディジット、一貫性、重複)であることを理由に除外する。
選択肢別の誤答解説
- ア: 「一定の規則に従って検査文字を算出して…比較する」はチェックディジット(チェックサム)検査の説明であり、ニューメリックチェックとは異なります。
- イ: 正解。数値取り扱いに支障がないか、文字構成を確認する検査の定義に一致します。
- ウ: 複数項目間(販売数・在庫数・仕入数)の整合性を確認するのは論理的整合性チェック(ビジネスルール検証)でありニューメリックチェックではありません。
- エ: マスタ作成時のキー重複検査はユニークネスチェックで、データの一意性を確保する目的の検査です。
補足コラム
ニューメリックチェックは実務では「形式チェック」の一部として実装されます。実装例としては正規表現や言語組み込みの数値判定関数を用いることが多いですが、細部に注意が必要です。例えば小数点や符号、桁区切り(カンマ)、全角数字や空白の扱い、ロケールによる小数点文字(「.」か「,」)の違いを仕様で明確に定義してから実装してください。
コード例(Python):
import re
# 整数(符号可)
is_int = lambda s: bool(re.fullmatch(r'[+-]?\d+', s))
# 小数(符号・小数点可)
is_float = lambda s: bool(re.fullmatch(r'[+-]?(\d+(\.\d*)?|\.\d+)', s))
# 使用例
for s in ["123", "-45", "3.14", "123", "12,345"]:
print(s, is_int(s), is_float(s))
FAQ
Q1: ニューメリックチェックは小数点や符号を許容しますか?
A1: 許容するかは仕様次第です。許容する場合はフォーマット(例:先頭の+/-、小数点の位置)を明確に定めます。
A1: 許容するかは仕様次第です。許容する場合はフォーマット(例:先頭の+/-、小数点の位置)を明確に定めます。
Q2: チェックディジット(チェックサム)はニューメリックチェックの一種ですか?
A2: 異なります。チェックディジットは伝送・入力エラーの検出を目的とする計算による照合で、文字構成の判定(ニューメリック)とは別です。
A2: 異なります。チェックディジットは伝送・入力エラーの検出を目的とする計算による照合で、文字構成の判定(ニューメリック)とは別です。
Q3: isdigit()やisnumeric()で十分ですか?
A3: 簡易チェックには使えますが、Unicodeの影響や小数点・符号への対応、桁区切りの扱いに注意が必要です。
A3: 簡易チェックには使えますが、Unicodeの影響や小数点・符号への対応、桁区切りの扱いに注意が必要です。
関連キーワード: ニューメリックチェック、入力検証、形式チェック、バリデーション、正規表現、チェックディジット、ユニークネスチェック、データ整合性

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

