ITパスポート 2019年 春期 問90
問題文
入力画面で数値を入力すべきところに誤って英字を入力したらエラーメッセージが表示され、再入力を求められた。このような工夫をしておく設計思想を表す用語として、適切なものはどれか。
選択肢
ア:フールプルーフ(正解)
イ:フェールソフト
ウ:フォールトトレランス
エ:ロールバック
🔒 解説は解答すると表示されます
入力誤りを防ぐ設計思想【ITパスポート 解説】
正解の理由
入力画面で「数値の欄に英字を入れたらエラーを出して再入力を促す」設計は、利用者の誤操作をそもそも起こさせない・または誤操作の影響を最小にすることを目指す考え方です。この考え方は「フールプルーフ(fool-proof:使う人の誤操作を防ぐ設計)」にあたります。したがって選択肢の中では ア が正しいです。
ポイントを簡単にまとめると:
- 入力段階で不正な値を受け付けないようにする仕組み(入力チェック=バリデーション)を置く。
- 誤った操作をしたときに早めに気付かせ、被害を広げないようにする。 これがフールプルーフの典型例です。
解法ステップ
- 問題文を読み、設計の目的を把握する
- 「誤って英字を入力したらエラー表示して再入力を求める」→ 誤操作を防ぐ(または影響を小さくする)設計。
- 各選択肢の意味を思い出す(短く)
- フールプルーフ:誤操作を防ぐ設計。
- フェールソフト:故障時に機能を落としても安全・最小限の機能で動かす設計。
- フォールトトレランス:故障が起きても動作を続ける(冗長化など)。
- ロールバック:処理を取り消して元に戻す(主にトランザクション)。
- 目的と各用語を照らし合わせ、不一致を除外する
- 今回は「入力時点で誤りを検出して再入力させる」→ フールプルーフ(ア)に合致。
選択肢別の誤答解説
-
ア フールプルーフ(正答)
誤操作を防ぐ設計思想。入力制限やわかりやすいUIでミスを起こさせない。入力欄に数字しか入れられないようにする、入力フォーマットのヒントや即時エラーメッセージを出すのが代表例です。 -
イ フェールソフト(fail-soft)
故障や不具合が起きたとき、本来の機能を全部は提供できなくても、安全に最低限の機能で動かす設計です。たとえば、ネットワークの一部が落ちたときに一部機能を停止してサービス全体を守る、といった場面で使います。入力時の即時エラー表示とは目的が違います。 -
ウ フォールトトレランス(fault tolerance:障害耐性)
ハードウェアやソフトウェアの故障があっても処理を継続するための冗長化などの仕組みです。サーバを二重化して片方が壊れてもサービスを継続する、というイメージで、ユーザー入力の段階での「誤入力検出」とは別の層の設計です。 -
エ ロールバック(rollback:処理の取り消し)
データベースなどで一連の処理を途中で取り消して元の状態に戻す操作・概念です。既に行った処理を取り消すため、入力時点で「入力を受け付けない」仕組みとは性質が異なります。
よくある誤解
-
「エラーを出す=フェール(失敗)という意味でフェールソフトが正解」と考える
フェールソフトはシステムが故障したときの挙動に関する考え方で、ユーザーの誤入力を未然に防ぐ設計とは別です。問題は「入力を受け付けるかどうか」の話です。 -
「入力チェックはロールバックの一部だ」と思う
入力チェックは入力を受け付けない段階で止める仕組みで、ロールバックは既に適用された処理を取り消す仕組みです。段階が違うため混同しやすい点に注意してください。
補足コラム:入力バリデーションとユーザビリティ
- 入力バリデーション(validation:検証)とは、入力された値が期待される形式・範囲かを確認することです。例:「電話番号は数字のみ」「年齢は0以上の整数」など。
- バリデーションはフールプルーフの実現手段の一つです。画面上で即時に警告を出す(クライアント側検証)と、サーバ側でも再チェックする(サーバ側検証)という二重の仕組みが望ましいです。理由は、クライアント側はユーザー体験を良くするため、サーバ側は悪意ある入力や改ざんから守るためです。
- 実装の簡単な例(HTML + JavaScriptで数値チェック):
<input id="age" type="text" placeholder="年齢を入力">
<button onclick="check()">送信</button>
<script>
function check(){
const v = document.getElementById('age').value;
if(!/^\d+$/.test(v)){
alert('年齢は数字で入力してください');
return;
}
// ここで送信処理
alert('送信します: ' + v);
}
</script>
上の例は、数字以外の入力で即時に注意を出し再入力を促すフールプルーフの一例です。
FAQ
Q1. フールプルーフとフェールセーフ(fail-safe)は同じですか?
A1. 異なります。フールプルーフは「人の誤りを防ぐ」設計、フェールセーフは「故障しても安全な状態にする」設計です。目的が違います。
A1. 異なります。フールプルーフは「人の誤りを防ぐ」設計、フェールセーフは「故障しても安全な状態にする」設計です。目的が違います。
Q2. フールプルーフはセキュリティにも役立ちますか?
A2. ある程度は役立ちます。入力を制限することで意図しない入力(たとえば文字列を期待する場所への特殊文字など)を防げますが、セキュリティ対策としてはサーバ側の検証やサニタイズ(無害化)も必須です。
A2. ある程度は役立ちます。入力を制限することで意図しない入力(たとえば文字列を期待する場所への特殊文字など)を防げますが、セキュリティ対策としてはサーバ側の検証やサニタイズ(無害化)も必須です。
Q3. フールプルーフはどの段階で行うべきですか?
A3. UI設計段階と実装段階の両方です。ユーザーにとってわかりやすい入力方法(プレースホルダ、選択肢、入力フォーマット)を考え、実装でバリデーションを入れます。
A3. UI設計段階と実装段階の両方です。ユーザーにとってわかりやすい入力方法(プレースホルダ、選択肢、入力フォーマット)を考え、実装でバリデーションを入れます。
関連キーワード: 入力バリデーション、フールプルーフ、ユーザビリティ、フェールソフト、フォールトトレランス、ロールバック、クライアント検証、サーバ検証

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

