単語数と文字数の数え方
同じテキストを2つのアプリに貼り付けると、異なるカウントが表示されることがあります。どちらかが間違っているとは限らず、数えている対象が違うのです。このガイドでは、よく使われる単位と、数値が異なる理由を説明します。
文字の4つの数え方
コンピューターはテキストを Unicode で保存しており、「文字」はいくつかのレベルで測ることができます。
- 書記素クラスターは、「é」「한」「👍🏽」のように、読み手が1文字として認識するものです。
- コードポイントは、個々の Unicode の値です。目に見える1文字が、複数のコードポイントでできていることがあります。
- UTF-16 のコード単位は、JavaScript の
lengthやほかのいくつかのプログラミング言語が数えるものです。ほとんどの絵文字を含め、基本多言語面(BMP)の外にある文字は2単位を使います。 - UTF-8 のバイトは、ファイルやデータベースの列が保存するものです。ASCII の英字は1バイト、アクセント付きのラテン文字は通常2バイト、韓国語・中国語・日本語の文字は通常3バイト、絵文字は4バイト以上になります。
| テキスト | 書記素 | コードポイント | UTF-16 単位 | UTF-8 バイト |
|---|---|---|---|---|
| a | 1 | 1 | 1 | 1 |
| é(単一のコードポイント) | 1 | 1 | 1 | 2 |
| é(e + 結合用アクセント) | 1 | 2 | 2 | 3 |
| 한(韓国語の音節) | 1 | 1 | 1 | 3 |
| 👍 | 1 | 1 | 2 | 4 |
| 👍🏽(肌の色付き) | 1 | 2 | 4 | 8 |
| 👨👩👧(家族の絵文字) | 1 | 5 | 8 | 18 |
結合用アクセントと韓国語のテキスト
文字の中には、複数の方法で保存できるものがあります。「é」は、合成済みの1つのコードポイントの場合もあれば、通常の「e」の後に結合用アクセントが続く場合もあります。見た目は同じですが、後者はコードポイントが1つ、バイトが1つ多くなります。一部のオペレーティングシステムのファイル名など、特定のシステムからコピーしたテキストは、分解された形式を使っていることがあります。
韓国語にも同じ問題があります。「한」のような音節は通常1つのコードポイントとして保存されますが、画面上で組み合わされる個別の字母(ㅎ、ㅏ、ㄴ)として書くこともできます。書記素に基づくカウンターはどちらの場合も 1 と表示しますが、コードポイントで数えると 1 または 3 になります。Unicode 正規化(NFC または NFD)によって、2つの形式を相互に変換できます。
言語による単語の数え方の違い
英語では、空白で区切ればおおむね妥当な単語数になります。ただし、ハイフンでつないだ語、短縮形、数値、URL は、ツールによって数え方が異なることがあります。
中国語、日本語、タイ語は通常、単語の間に空白を入れずに書くため、空白で区切ると文全体が1語と数えられてしまいます。より優れたカウンターは、辞書と規則に基づく単語分割機能を使います。LeedyBox のカウンターはブラウザの Intl.Segmenter を使い、多くの言語で単語の境界を判定します。これらの言語での単語分割は慣習によるところが大きいため、結果がほかのツールや人の数えた結果と異なることがあります。そのため、これらの言語の出版社の中には、単語数ではなく文字数で数えるところもあります。
アプリやウェブサイトによってカウントが異なる理由
「最大280文字」や「VARCHAR(255)」のような制限は、システムによって書記素、コードポイント、UTF-16 のコード単位、バイトのいずれかで測られます。リンクを固定の長さとして数えたり、特定の文字体系を重く数えたりするサービスもあります。制限内に収める必要がある場合は、対象のシステムがどの単位を使っているかを調べ、その数値と比較してください。LeedyBox のカウンターは書記素、UTF-16 のコード単位、UTF-8 のバイト数を並べて表示し、文字数制限のチェック機能もあるため、該当する単位で上限までどのくらい余裕があるかを確認できます。
行、段落、改行
行数は、改行がどのように保存されているかによって変わります。Windows は通常2文字(CR LF)を使い、Linux と macOS は1文字(LF)を使います。文字をそのまま数えるツールでは、Windows の改行が2文字と数えられることがあります。テキスト末尾の改行は、余分な空行として数えられる場合とそうでない場合があります。段落は通常、1行以上の空行で区切られたまとまりとして数えられるため、段落内の1つの改行では新しい段落になりません。
読む時間の目安
読む時間は、単語数を想定した読む速度で割って計算します。実際の速度は読み手、言語、テキストの専門性によって変わり、単語数自体も単語分割に左右されます。この目安は測定値ではなく、計画を立てるための大まかな参考として扱ってください。
よくある質問
アプリによって絵文字1つが2文字と数えられるのはなぜですか?
そのようなアプリは UTF-16 のコード単位で数えています。ほとんどの絵文字は2単位で保存され、肌の色を指定した絵文字や複数の人物を組み合わせた絵文字はさらに多くの単位を使います。
データベースの列の制限にはどのカウントを使うべきですか?
データベースのドキュメントを確認してください。制限が文字数の場合もバイト数の場合もあるため、比較すべきなのは UTF-8 のバイト数であることがよくあります。
カウンターはテキストをどこかに送信しますか?
LeedyBox の文字数・単語数カウンターはブラウザ内で動作するため、貼り付けたテキストはお使いの端末でカウントされます。