「目に見えない文字対応」とは?
なんかの入力処理とかで、目に見えない文字列だった場合は不正な入力と見なすみたいな感じのやつ。
よくこんな風に書く。
function isReadableText(text) {
return text.trim() !== "";
}
trimで取り除けない不可視な文字の存在
基本時にはtrimして空文字かを判定すれば事足りるのだが、残念なことにそれをすり抜ける文字が存在する。
例えば、これ→ㅤ
←これ
(ハングルジュンソンフィラーというらしい。)
これだけでなく、不可視な文字はいくつかあるようだ。
で、「目に見えない文字対応」はこれら全てを対応するべきなのか?
要件による。
で終わるとつまらないので私の考えを書く。
うっかりミスによるヒューマンエラーを防ぐ目的で「目に見えない文字対応」をする場合は、JSのtrimで取り除ける文字だけを対応すればよい。
何故か?
それは、ハングルジュンソンフィラーのような不可視な文字のみの入力は意図的に入力しない限り、ほとんどあり得ないからであり、
また逆にスペース、タグ、改行のみの入力はうっかり入力してまう可能性が現実的な確率であり得るからだ。
(例えば、アプリが遅いなーとイライラしながら適当にキーを連打したら、あるかもしれない。)
うっかりハングルジュンソンフィラーだけの文字入力をすることは、天文学的な確率だと思われるため、ヒューマンエラーとしての対応に含む必要はないだろう。
またハングルジュンソンフィラーなどを弾く必要があるのは、例えば、対戦ゲームで相手の名前が見えないと不利になるなど、目に見えない文字がサービスに害をもたらす場合などが考えられる。