全角文字
固定幅フォントで半角文字の 2 倍の幅を占める文字。日本語のひらがな、カタカナ、漢字が該当する。
全角文字とは、固定幅フォントにおいて半角文字の 2 倍の表示幅を持つ文字です。日本語のひらがな、カタカナ、漢字、および全角英数字・記号が全角文字に分類されます。この概念は、日本語のコンピュータ処理の黎明期に、1 バイトの ASCII 文字 (半角) と 2 バイトの日本語文字 (全角) を区別するために生まれました。
Unicode では、各文字に East Asian Width というプロパティが定義されています。このプロパティは Fullwidth (F)、Wide (W)、Halfwidth (H)、Narrow (Na)、Ambiguous (A)、Neutral (N) の 6 種類に分類されます。日本語の漢字やひらがなは Wide (W)、ASCII 文字は Narrow (Na) に該当します。Ambiguous (A) に分類される文字 (ギリシャ文字やキリル文字の一部など) は、環境によって全角・半角のどちらで表示されるかが異なるため、レイアウト崩れの原因になることがあります。日本語組版の書籍では、全角・半角の使い分けが詳しく解説されています。
文字数カウントにおいて、全角と半角の扱いはプラットフォームによって大きく異なります。X (Twitter) では全角も半角も 1 文字としてカウントされますが、SMS では全角 1 文字を 2 文字分として計算します。Google 広告の見出しは全角 15 文字・半角 30 文字が上限であり、全角を半角 2 文字分として扱います。このように、同じ「文字数制限」でも全角・半角の換算ルールが異なるため、正確なカウントには対象プラットフォームのルールを把握する必要があります。
データベース設計では、全角文字のバイト数がエンコーディングによって異なる点に注意が必要です。UTF-8 では全角文字は 3 バイト、UTF-16 では 2 バイトを消費します。VARCHAR(255) の列に UTF-8 で全角文字だけを格納すると、バイト数ベースの制限では最大 85 文字しか入りません。一方、文字数ベースの制限 (MySQL の場合) では 255 文字まで格納可能です。この違いを理解していないと、データの切り詰めやエラーの原因になります。
Web フォームの入力バリデーションでは、全角・半角の変換処理が頻繁に必要になります。電話番号や郵便番号の入力で全角数字が使われるケースは多く、JavaScript の String.prototype.normalize('NFKC') を使えば、全角英数字を半角に正規化できます。逆に、カタカナを全角に統一する処理も、住所入力などで求められます。Web フロントエンドの書籍でも入力値の正規化は重要なトピックです。
文字数カウントツールを使う際には、全角・半角の区別がカウント結果にどう影響するかを意識することが大切です。「全角 1 文字 = 半角 2 文字」として換算するシステムでは、同じ内容でも全角を多用すると文字数が増えます。文字数制限のある場面では、全角カタカナを半角に変換したり、全角スペースを半角スペースに置き換えたりすることで、制限内に収める工夫が可能です。