\ Amazonのセール、完全に理解した! /

“Null / 空文字 / 空白 / スペース / ブランク”の違いとは

ブログのアイキャッチ “Null/空文字/空白/スペース/ブランク”の違いとは

Null空文字 は同じ意味(解釈)ではありません。

システムの設計や開発、保守、運用など様々なシーンで使用される用語ですが、
意外と間違えて使用されているようです。

Null・空文字以外にも「空白スペースブランク」といった用語があり、
それらすべての違いを解説します。

 

この記事はこんな方にオススメ!

  • Nullや空文字、空白、スペース、ブランクについて
    • イメージをつかみたい方
    • 再確認したい方
2023.08.05 追記

改めて、この記事の内容を調べてみた結果、「ブランク」は言語やDBにより、
取り扱いが違うことがわかりました。
間違えていた内容・表現を差し替えています。

目次

“Null と 空文字” 実際の使用例

私の体感で特に勘違いされていているのは、Null(ヌル)と空文字です。
この2つ以外にも該当する概念ですが、ざっくりと違いを表現するとデータの種類の違い

プログラムにおける判定やデータベースのデータ取得などの実例をあげます。

これらの例は置いておいて、すぐに違いを把握したい場合は後述に “違いがわかる表” を掲載しているので、
そちらをご参考ください。

空文字の使用例:プログラム C#

下記はテキストボックスtextbox_jyushoが空文字(””)の場合、エラーのメッセージを表示するというプログラムの一部分です。

// テキストボックス「textbox_jyusho」に何も入力していない場合
// メッセージボックスで通知する
if textbox_jyusho.Text == "" {
	MessageBox.Show("住所が未入力です。",
					"必須入力エラー",
					MessageBoxButtons.OK,
					MessageBoxIcon.Error);
}
しらたま

なるほど。
textbox_jyusho.Text == ""で空文字か判定しているっピね

Nullの使用例:データベース SQL Server

データベースの商品テーブル(TBL_SHOHIN)でWHERE NAME IS NOT NULLの条件により
項目の商品名(NAME)がNull以外の商品データを取得するSQLコマンドです。

-- データベースのテーブル「TBL_SHOHIN」より項目「NAME」がNull以外のデータを取得
SELECT NAME, VALUE FROM TBL_SHOHIN WHERE NAME IS NOT NULL
しらたま

DBではWHERE NAME IS NOT NULLで、
名前がNullデータ以外のデータを取得という条件式っピね。

それぞれの違いを詳しく解説

5つをグループ分けすると…

同じ意味となる用語でグループ分けすると下記3種類に分類されます。

  • Null” グループ
     
  • 空文字” グループ
    ※ 利用している環境によりブランクが仲間に入る
     
  • 空白・スペース” グループ
    ※利用している環境によりブランクが仲間に入る

ブランクは利用している環境によって扱われ方が異なります

違いがわかる表

それぞれの5つの相違点をあらわした表です。

akiGAMEBOY

繰り返しになりますが、ブランクは利用環境によって扱いが変わる用語です。
その為、表でも具体的な表現はしていません。後述で解説しますね。

スクロールできます
名前Null空文字
空白スペースブランク
読み方ヌル、もしくはナルカラモジ、もしくはクウモジクウハク
英語で表現“Null”
or
“Null string”
“Empty”
or
“Empty string”
“Whitespace”“Space”
[半角スペース]
“Half-width Space”
or
“Single-byte Space”
[全角スペース]

“Full-width Space”
or
“Multi-byte Space”
“Blank”
プログラム表記例null""
or
''
" "
or
' '
" "
or
' '
※ 利用環境により変化
わかりやすいイラスト(イメージ図)※ 利用環境により変化
イラストの状態

[書道用品で表現]
・下敷き
 プログラムの言語など環境がある土台を表す。
・半紙
 土台にある文字入力できる器として表現。
下敷き:あり
半紙 :なし
文字 :-
下敷き:あり
半紙 :あり
文字 :なし

※ 青い点線は、文字数がない事を表現
下敷き:あり
半紙 :あり
文字 :あり

※ 文字の内容は空白(スペース)
下敷き:あり
半紙 :あり
文字 :あり

※ 文字の内容は空白(スペース)
※ 利用環境により変化
イラストの解説
プログラムの変数やデータベースのテーブルなど利用している環境の土台(下敷き)はあるが、文字入力できる器(半紙)がない状態。土台(下敷き)や文字入力できる器(半紙)がある状態だが、文字が書かれていない状態。土台(下敷き)や文字入力できる器(半紙)がある状態で、かつ文字で”空白”が記載された状態。

※ 空白(スペース)は、スペースキーで入力した際、画面上には見えないのでイメージが掴みにくいと思うが、空白(スペース)にも文字コードがしっかりと割り振られており、視認できない文字として表示される。
※ 空白と同様。※ 利用環境により変化
グループNull空文字
※ 環境によりブランクも入る
空白 = スペース
※ 環境によりブランクも入る
空白 = スペース
※ 環境によりブランクも入る
※ 利用環境により変化
表:Null/空文字/空白/スペース/ブランクの違い
akiGAMEBOY

ここまで4つの用語「Null・空文字・空白・スペース」に関して解説・説明しました。

表のとおり「空白とスペース」は同じ意味で使われていますね。

しらたま

えっ、でも仕事の現場や会話する人によって空白と呼んだり、スペースと呼んだりして、
呼び方が変わるのは、なぜっピ 🤔

akiGAMEBOY

それはIT用語全般に言える事なんだけど、同じような意味を持つ用語がたくさんあるんだよね。

わたし個人的な意見だけど、その仕事現場で伝わりやすさを重視するのであれば、
環境に合わせた用語で呼称した方が良いと思うよ。

しらたま

たしかに仕事現場に合わせて用語を使った方が会話するもの同士、頭で変換が必要なくなるっピね。

akiGAMEBOY

それぞれの概念がどのように扱われるか履き違えている場合、認識を合わせる必要があることは忘れないでね。

しらたま

わかったっピ。

これでドキュメントや会話、メールなど伝達する際もスムーズになるっピヨ♪

環境により意味・取り扱いが変わる「ブランク」とは

IT分野における「ブランク」という言葉は、意味・プログラムやDBでの取り扱われ方が統一されていません。使用するプログラムやデータベースの違いによって大きく変わる事があります。

そのような環境に依存する背景があるためか、仕事の現場環境により認識にばらつきがあります。

具体的な例としてプログラムにおけるブランクの意味合い・取り扱われ方の違いを解説します。

ExcelやJava、Kotlinなどの環境によりブランクの意味合いが変わる事が表現されたイラスト
イラスト:プログラム言語によりブランクの意味合いが変わる(書道用品の下敷き色違いで表現)

例1:表計算ソフトにおけるブランクの扱い

プログラムというのは微妙な所ですが、有名どころの表計算ソフト、Microsoft Excel と Google スプレッドシートでは、ブランクを判定する「ISBLANK」という関数があります。

実際にISBLANK関数を使用した結果は下記の通り。

テストケーステスト対象の値実行結果
空文字“”TRUE
空白(スペース)” “FALSE
値あり”test-value”FALSE
表:表計算ソフトにおけるブランクの扱い

この結果から表計算ソフトでは、“空文字” のことだけを ブランク とも呼ぶ」となります。
それ以外の 空白 は違う意味合い・取り扱われ方となります。

例2:Javaにおけるブランクの扱い

Javaでも、ブランクを判定するメソッド「IsBlank」が存在します。

IsBlankメソッドの結果は下記の通り。

テストケーステスト対象の値実行結果
空文字“”true
空白(スペース)” “true
値あり“test-value”false
表:Javaにおけるブランクの扱い

Javaでは、「“空文字” または 空白” のことを ブランク とも呼ぶ」という扱いに。

例3:Kotlinにおけるブランクの扱い

テストケーステスト対象の値実行結果
空文字“”true
空白(スペース)” “true
値あり“test-value”false
表:Kotlinにおけるブランクの扱い

KotlinもJavaと同様、「空文字” または 空白” のことを ブランク とも呼ぶ」という扱いとなります。

参考情報


ここまで詳しく解説した通り、ブランクはIT分野で共通認識やルールは無く、使用している環境により意味合いが変わるということがわかりました。
海外のサイトについてもブランクの取り扱われ方について調査しましたが、同じように共通認識がないようです。

また、“Blank” という言葉自体も、“Empty” や “White space” と比較すると、極端に使用頻度が低い言葉のように見えました。

まとめるとブランクという意味合いは、そのエンジニアがJava畑で育ったのかC言語畑で育ったのか、はたまたMySQL畑で育ったのかなど環境によって認識が変わる用語。
環境依存という背景もあり所属している会社などにより異なった認識を持つ。さまざまな現場を経験していないと間違いに気づきにくい用語ということが言えると思います。

ブランクという用語の使用すると…

akiGAMEBOY

私個人の見解では、共通認識がない「ブランク」という用語の使用は、
なるべく控えたほうが良いと考えています。

しらたま

たしかに混乱の種になりそうっピね

akiGAMEBOY

ちなみに私はこの記事を作成する前は「ブランク=空文字」という関係性だと勘違いしていました!

間違いに気付けた良かった……

場合によるけど私はスペースよりも空白を意識的に使用

akiGAMEBOY

私から発信する際、意識的に「空白」を使っています。
スペースは文字制御以外においても、よく登場する単語で混乱を招く恐れがあるという理由です。

ただ、厳密に空白の種類を表すときは「半角スペース」や「全角スペース」などのように “スペース” を使うこともありますね。

しらたま

なるほど、だっピ😊

“Null と 空文字” に関する例外

ここまでの説明で Null空文字 は別物という内容で解説しました。
実は、この概念もプログラムやデータベースにより変わるケースがあります。
(すごく、ややこしいですよね……)

Null空文字 に関して例外的な取り扱いをするプログラムやデータベースは少ないです。
少ない環境でも根幹的なデータの取り扱われ方が違うことでシステムの設計方法や対応方法に大きく関わる重要なポイントとなるでしょう。

プログラム関連で例を挙げると PHP や JavaScript でも特殊なケースが存在するようですが、
ここでは一例としてOracleデータベースを使い解説します。

Oracleデータベースにおける “Null と 空文字” の扱い

Oracleデータベースでは他のデータベースやプログラムとは異なり、Nullと空文字がほぼ同じ扱いとなっています。

つまり、Null ≒ 空文字という関係性。

「Null ≒ 空文字」とは

こちらの解説ページにあるとおり、完全に同じ扱いではありません。「≒(ニアリーコールまたは、ほぼ等しい)」と表すことができます。

前述した解説にもあるとおりOracle環境でデータを検索するSQL文を実行する場合、空文字はNullとほぼ同じ扱いで処理されます。
ただ、Oracleデータベースのテーブルの実データはNullと空文字は別けて登録することが可能です。

正直、Oracleデータベースを使ったことがないと理解するのは難しいですよね。
完全に解説ページも理解する必要はなく、重要なのが「環境によって Null と 空文字 の意味合いや取り扱われ方が異なる。」と認識できれば問題ありません。

脱線したので話を戻しますね。
実データを Null と 空文字 で別けて登録する事に関してですが、技術的にできるからといって何も考えずに登録して良いという訳ではありません。

データベースを使ったシステムで Null に特別な意味を持たせてしまうと、
ややこしいシステムができあがってしまいます。
そのようなシステムがある場合は、良い設計ができていないと思われます。

仮にそのシステムがゼロから構築したシステムであればデータ設計に問題があり。
リプレースしたシステムであれば、データ移行に問題があったと推測できるでしょう。

最初にさわったデータベースはOracle

akiGAMEBOY

ちなみに私が最初に触ったデータベースは、Oracleでした。

その後、他のデータベース(SQL Server)にふれる機会があり、
Oracleと同様に「Nullと空文字」は同じ扱いだと勘違いして深みにはまってしまったことがありました 😓

しらたま

過去のバージョンとの互換性の問題があるので、簡単にはできないと思うっピけど、
Oracleの Null空文字 に関する仕様は見直してほしいっピ💦

Nullの発明は失敗だった?

akiGAMEBOY

実はNullに関して今回、興味深い情報を見つけたよ。

Nullを発明したコンピューター科学者のアントニー・ホーア氏2009年のソフトウェアカンファレンスで、
Nullの発明は失敗だった」という謝罪があったみたいだよ。

しらたま

えっ💦 そんなことがあったっピね。

akiGAMEBOY

驚くよね。
今まで私もNullという考え方がある前提でプログラムやデータベースに触れてきたので、すごい驚きの情報だったよ。

Oracle側の意図はわからないけど、
もしかすると業界全体がNullという考え方を見直していくような方向に動くかもしれないね。

参考情報

まとめ

  • Null空文字 は違う
     
  • グループ分けすると下記の3つにわけられる
    • Null
    • 空文字(環境により追加でブランクが入る)
    • 空白スペース(環境により追加でブランクが入る)
       
  • ブランク はプログラムやデータベースの環境や現場によっても意味合い・取り扱われ方が異なる
     
  • Null空文字 についても特殊な例外ケースあり
akiGAMEBOY

以上でこの記事は終わりです。

Null空文字 をはじめとする用語の違いについて解説しました。

会話していて意外と認識が間違えている方が多いなーと肌で感じた為、記事にしてみました。

この記事で “知るきっかけ” や “振り返るきっかけ” になれば幸いです。
 
それでは、また次回お会いしましょう。さようならー

しらたま

バイバイっピー🎶

サポート募集中

この記事はお役に立てたでしょうか。現在、サポートを募集しています。
コーヒーを一杯 ☕ ご馳走いただけないでしょうか。

ブログのアイキャッチ “Null/空文字/空白/スペース/ブランク”の違いとは

この記事が気に入ったら
フォローしてね!

この記事をシェアする

コメント

コメントする

コメントは日本語で入力してください。(スパム対策)

CAPTCHA

目次