"empty?" vs "blank?"

公開:2020/12/11
更新:2020/12/11
1 min読了の目安(約1700字TECH技術記事

こちらAmetaです。

昨日に続き、本日も"ruby on rails"の似たもの同士シリーズの記事です。


英語として、"empty"と"blank"って何が違う??

素朴な疑問でした。こう思ったときには同じ疑問を問いかけてくれている先人がいるものですね。

彼の質問はUXに関する以下のような内容でした。

複数の項目を組み合わせて検索ができる機能を実装しているんだけど、ファーストネームを空(null)にした状態でも検索ができるようにしたい。その時に、"ファーストネーム:Empty"と"ファーストネーム:Blank"だったらどっちの方がしっくりくるだろう?

それに対するベストアンサーはこちら。

blankは”何も書かれていない”、emptyは”何も含んでいない”と言う意味の形容詞。この二つを比べてみると、まだemptyの方が適切な表現に近いと思う。

だけどこの場合、"Empty"と"Blank"はどちらもあまりふさわしくないかな。なぜなら、この時のnullが意味するのはファーストネームが存在しないという事だから。

"Empty"と"Blank"はそれぞれ形容詞であるがために、ファーストネームに何が入っているか?ではなく"ファーストネーム欄"の状態を示している。結論、ファーストネームには名詞の"Nothing"がユーザーにとって一番分かりやすいと思う。

と言う事でした。。確かに...!

"Empty"と"Blank"表記にするのは、ファーストネームがデータベースでカラムとして保存されていてその枠が空になっていると言う前提知識がある人の発想。つまり開発者側の目線に近いですよね。

ユーザー目線で考えれば、ファーストネーム:Nothing(無し)と言うのがしっくりくる。

勉強になります。。。

"Ruby on Rails"では?

blankの”何も書かれていない” と emptyの”何も含んでいない”

通常の英語では以上のような意味合いをもつ単語でしたが、Rubyではどうでしょうか?

.blank?

.blank?は基本的にどんな形式の要素にも使えます。(配列、ハッシュ、数値、文字列、クラス etc.)
そして、最大の特徴はスペースのみの入力を区別することができる点です。

" ".blank?
=> true

" ".blank?
=> true

アプリケーション開発する上では重要な役割を担いそうです。

.blank?メソッドはRailsのよって拡張された機能なので、rubyのみでの使用できません。

.empty?

.empty?は配列、ハッシュ、文字列などに使用することのできるメソッドです。
それらの要素に何かしらの値が入っているかどうかを判断してくれます。

"".empty?
=> true

" ".empty?
=> false

.empty?は使用できるライブラリが限られています。
例えば、EnumerableモジュールのEnumeratorに使用した場合、NoMethodErrorが表示されます。

Summary Of The Day (SOTD)

今回のUser Experienceに関する回答を読んでみて、開発に慣れるほどユーザー目線での使いやすさを直感的に実装するのは難しくなっていくのかもしれないと思いました。

つい一ヶ月前までのプログラミングに全くゆかりのなかった自分の目線を、今後も忘れずに持っておきます。今日の学びです。。