質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

Q&A

解決済

5回答

2228閲覧

入力値制限、入力値検証どちらにすべきか

mikupedia

総合スコア159

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

2グッド

3クリップ

投稿2017/01/23 07:16

テキストボックスの入力テキストを数値に変換して使用する場合に
あらかじめテキストボックスに入力制限(数字以外入力不可)を設けるか、
全ての入力を許容して入力テキストを入力毎または任意タイミングで検証して
エラーにするかのパターンが考えられます。

これは好みの問題なのかもしれませんが
自分の中で判断基準が不透明であるためどちらを採用すべきなのか迷っています。

一般的にはどちらを採用すべきなのでしょうか?
両方採用すべきなのかもしれませんが、そこまで必要か疑問にも思えます。

もし、ガイドライン的なものがあれば教えていただけますでしょうか?

プログラミング言語は問いません。
(当方はWPFでアプリケーションの開発しております。)

Y.H., KSwordOfHaste👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

ベストアンサー

入力値検証と入力値制限は目的が異なると思います。

  • 入力値検証はシステム(プログラム)を正常に動作させるために必須です。

※システムによっては入力制限を行うことで入力値検証を省略(入力値制限で代用)可能な場合もあると思います。
が、この場合でも「入力値検証を省略(入力値制限で代用)する」ことはあくまで例外であることを認識したうえで、要件・予算・納期(開発期間)などの条件により省略の是非を判断すればいいでしょう。

  • 入力制限はユーザビリティ向上を目的としており、入力値検証で行っている制限のもとで利用者に使いやすいI/Fを提供するために実施すればいいです。

※ リストボックスからの選択、チェックボックスやラジオボタンで選択なども広い意味では入力制限にあたると思います。入力値検証を通る入力をユーザーに負担にならないように如何に入力させるかが入力制限(UI)の胆ですね。

投稿2017/01/24 00:49

編集2017/01/24 01:16
Y.H.

総合スコア7914

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

重くなっているPCや反応の悪いタッチパネルなど、ユーザーに「キー入力が通ったか」わからない状況というのがあります。
こういう状況で入力制限、つまりキー入力が弾かれることがあるとユーザーにとっては拒否されたのかまだ通っていないだけなのかわからず不安なUIになります。

もし入力制限にするのなら、拒否すると同時にバルーポップアップで制限の詳細を指摘する必要があります。

また、別の観点としてIMEの未変換文字列をどうしますか? 電話番号入力欄で数字のみしか受け付けないとしても、ユーザーの中には「でんわ」で変換して入力したい人もいます。それを邪魔しないように制限できるでしょうか。

投稿2017/01/23 23:38

yuba

総合スコア5568

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mikupedia

2017/01/26 10:30

>ユーザーの中には「でんわ」で変換して入力したい人もいます。 なるほど、これは頭にありませんでした。 このようなパターンだと入力制限を設けてしまうとユーザに負担をかけてしまいますね。
guest

0

いろんなパターンがあるのは好みの問題でなく想定ユーザーの層と数、セキュリティ等の問題と思います。
消費者向けなどの多くの人に使ってもらう事が重要であればより優しく。
ビジネス上の影響の大きいシステムだったら工数をかけて。
想定ユーザーが社内の数人だったら工数を少なく。
不正な入力を完全に防げる仕組みになるかどうか。
のあたりを考慮して、どのようなものにすべきかを検討すべきと思います。

投稿2017/01/24 00:05

takeshi

総合スコア264

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mikupedia

2017/01/26 10:28

ご指摘の通り、ユーザ次第になってしまいますよね。 社内アプリかエンドユーザー向けアプリによっても仕様で逃げられるときとそうでないときもありますし。 理想と現実の線引きでいつも苦労します。
guest

0

入力値の検証はプロセスとしては必要なものですから、省略できたとしても建前上は「空の検証プロセスがある」として欲しいところです。

その上で誤解を恐れずに断言します。
入力前に制限できるものは、全て制限すべきであると考えております。

そのためには、テキスト入力は極力避ける必要があります。
1.数字の入力にはテキストボックスを使うのではなく、数字入力専用のコントロールを使う。
2.選択肢が有限の物は、テキストボックスで入力させるのではなく選択させる。
などです。
これは入出力の水際作戦とか言われています。

特に、デスクトップアプリケーションで登録ボタンを押した後に検証エラーをだすのはとてもカッコ悪いと思います。
Webアプリケーションならば、ある程度は仕方がありませんがユーザー側に立った場合ガッカリしますよね?

投稿2017/01/23 09:45

hihijiji

総合スコア4150

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mikupedia

2017/01/23 10:18 編集

>「空の検証プロセスがある」として欲しいところ >入力前に制限できるものは、全て制限すべき 制限、検証の両方が必要という考えですね。 >テキストボックスで入力させるのではなく選択させる 確かにある程度、入力パターンが決まっていればコンボボックスなりで選択させるほうが 利用者側にとっては使いやすいですね。なるほど。 >登録ボタンを押した後に検証エラーを出す 確かにこれは、利用者にとって不親切ですし、無駄なオペレーションになりますね。 WPFではMVVMパターンを意識したときに、View側のTextBox入力毎に変更通知を行えるので ViewModel側ではリアルタイムに検証を行うことができますね。 なので、常に検証を行い、リアルタイムにエラー表示することができるのでこれについては問題なさそうですね。
guest

0

どっちでもいいんじゃないでしょうか?
ただ年配の方は入力ができないとパニックになることがあるので、不適切な入力にはわかりやすいエラーメッセージを出すのがいいと思います。
そうであれば、検証の方が作りやすいかもしれません。

投稿2017/01/23 09:11

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問