空白文字
スペース、タブ、改行などの不可視文字。テキスト処理やレイアウトで重要な役割を果たす。
空白文字 (ホワイトスペース) とは、画面上に目に見える形で表示されない文字の総称です。半角スペース (U+0020)、タブ (U+0009)、改行 (LF: U+000A, CR: U+000D)、全角スペース (U+3000) などが含まれます。テキストの整形、コードのインデント、データの区切りなど、あらゆるテキスト処理で重要な役割を果たしています。
Unicode には多種多様な空白文字が定義されています。一般的な半角スペースのほかに、ノーブレークスペース (U+00A0) は改行を防ぐ目的で使われ、HTML の に対応します。全角スペース (U+3000) は日本語の組版で段落の字下げに使われます。ゼロ幅スペース (U+200B) は表示幅がゼロで改行位置のヒントとして機能します。そのほかにも、em スペース (U+2003)、en スペース (U+2002)、thin スペース (U+2009) など、タイポグラフィ用途の空白文字が多数存在します。CSS レイアウト実践の書籍で空白の制御方法を学べます。
CSS の white-space プロパティは HTML における空白文字の表示方法を制御します。normal では連続する空白が 1 つに縮約され自動改行されます。pre ではソースコードの空白がそのまま保持されます。nowrap では改行が抑制されます。pre-wrap は空白を保持しつつ自動改行も行う設定で、コードブロックの表示に適しています。
プログラミングでは空白文字の扱いが言語によって大きく異なります。Python ではインデントに空白 (スペースまたはタブ) を使い、インデントの不一致はシンタックスエラーになります。YAML もインデントベースの構文で、タブ文字は使用できません。JSON では空白文字はフォーマットの見やすさのためだけに使われ、minify (空白除去) するとファイルサイズを大幅に削減できます。正規表現の \s は空白文字にマッチしますが、対象となる文字の範囲は言語やエンジンによって異なります。
よくある注意点として、見た目では区別できない空白文字の混在があります。半角スペースと全角スペース、通常のスペースとノーブレークスペースは見た目が同じですが、プログラムでは異なる文字として扱われます。コピー&ペーストで意図しない空白文字が混入し、文字列比較が失敗する、CSV のパースがエラーになるといったトラブルは実務で頻繁に発生します。テキスト処理プログラミングの書籍で空白文字の正確な処理方法が解説されています。
文字数カウントとの関連では、空白文字を文字数に含めるかどうかが重要な判断ポイントです。一般的な文字数カウントでは空白を含みますが、「空白を除いた文字数」を求められる場面も多くあります。原稿料の計算では空白を除くのが一般的で、SNS の投稿では空白も文字数にカウントされます。文字数カウントツールでは「空白を含む」「空白を除く」の両方の文字数を表示することが、ユーザーの多様なニーズに応えるうえで重要です。