要約:"文字数を数える"ことは聞こえるほど文字通りではありません — 絵文字は1つの見た目の文字であっても複数のコードポイントになり得ますし、"単語"としてカウントされるものはスペースを使わない言語では変わります。間違ったカウンターを選ぶと、プラットフォームが実際に適用している数字と一致しない数字が得られます。このガイドはWord FrequencyRemove Extra SpacesAI Hidden CharactersText Differenceと組み合わせて使ってください。

Character Counterと単語数カウンターは異なる問題を解決し、プラットフォームは異なる制限を課します。ツイートは文字数で測られ、エッセイの単語数は単語で測られ、どちらの数字ももう一方を確実に予測することはできません。

背景:Unicodeテキストセグメンテーションレポート(UAX #29)は、テキストが人が1文字として認識する"書記素クラスタ"にどう分割されるかを定義し、Intl.SegmenterのMDNリファレンスは、それを正しく実装するブラウザAPIを扱います。

絵文字が単純な文字数カウントを壊す理由

家族の絵文字(👨‍👩‍👧‍👦)は1文字のように見えますが、実際には見えないゼロ幅接合子(ZWJ)文字で結合された4つの別々の人物絵文字です — JavaScriptで.lengthを使う単純なカウンターは、人が1つのグリフとして見るものに対して11以上を報告します。なぜなら.lengthは見える文字ではなくUTF-16のコード単位を数えるからです。

Intl.Segmenterを基盤にした書記素クラスタを認識するカウンターは、人が数えるであろうものを数えます — 同じ絵文字を1つの見かけ上の文字として数えます。これが、プラットフォームの実際の制限に一致する文字数カウントと、絵文字、アクセント付き文字、または組み合わせ記号を含むあらゆるテキストで静かに過大または過小カウントするカウントとの違いです。

単語数カウントが言語に依存する理由

スペースで区切る単語カウンターは英語、スペイン語、フランス語ではうまく機能します — しかし中国語、日本語、タイ語はまったくスペースで単語を区切らないため、スペースベースのカウンターは段落全体を1つの"単語"として返してしまいます。これらの言語で意味のある単語数を得るには、単純な分割ではなく、辞書や統計に基づく実際のセグメンテーションが必要です。

スペースで区切られる言語でも、境界のケースは積み重なります。ハイフンでつながれた複合語は1語なのか2語なのか? ツールによって判断が異なるため、同じ段落でも信頼するカウンターによって異なる単語数が報告されることがあります。

カウンターを実際の制限に合わせる

  • ソーシャルメディア投稿の制限(X/Twitter、SMS)→ 文字数カウント、テキストに絵文字がある場合は書記素を意識したもの。
  • メタディスクリプション、タイトルタグ → 文字数カウント、検索エンジンは単語ではなく文字数・ピクセル幅で切り詰めるため。
  • エッセイ、記事、コンテンツブリーフの最低単語数 → 単語数カウント。
  • 中国語、日本語、タイ語のコンテンツ→ スペース区切りなしでは"単語"がうまく定義されないため、文字数カウントが通常は意味のある指標。

簡単な常識チェック

プラットフォームの制限が文字数で適用される場合は、公開前に正確な最終テキストをCharacter Counterに貼り付けてください — 推定ではなく、絵文字や特殊な句読点を含む実際の文字列そのものです。なぜなら、まさにそこで単純なカウントツールは実際に適用されるものから乖離するからです。単語数の目標に向けて編集している場合は、単語カウンターにかけ、プラットフォーム(メタディスクリプションなど)が両方を適用する場合は文字数を別途再確認してください。

カウントも歪めてしまう隠れた書式の問題があるテキスト — 余分なスペース、見えないUnicodeマーク — については、まずRemove Extra SpacesAI Hidden Charactersでクリーンアップしてから、クリーンな版を数えてください。