ReadoutKit

テキストのツール

文字を数え、整え、形を変える。

以下のツールはすべてブラウザ内で動作します。アップロードは行いません。

「この文章は何文字か」には、正しい答えが複数ある

文字数・単語数カウントが道具として要るのは、 この問いが見た目ほど決着していないからです。文字数は「何を1文字と見なすか」で変わり、 システムによって本当に食い違います。同じ段落を応募フォーム、ワープロ、SNS に貼ると 3つの違う数字が出て、しかもそれぞれの定義では全部正しい、ということが起こります。

1文字の数え方は3通りある

Unicode には、少なくとも3つの妥当な単位があります。コードポイントは テキスト中の抽象的な文字を数えます。UTF-16 コードユニットは格納枠を数えるもので、 多くのプログラミング言語が既定で返すのがこれです。元の Unicode の範囲外にある文字 —— 絵文字の多くや、一部の漢字 —— は枠を2つ使うため、2文字として数えられます。書記素クラスタは、読み手が1文字と呼ぶものを数えます。 文字とその濁点・アクセントで1つ、国旗の絵文字で1つ、複数の人物を繋げた家族の絵文字も1つです。

家族の絵文字1つで、この3つの方法は 1、7、11 といった値を返します。 「明らかに短いのに長すぎると弾かれる」というよくある苛立ちの正体がこれです。 サービスは格納枠を数え、あなたは見えているものを数えている。上限が問題になるときは、 相手側がどの単位で数えているかを確かめてください。

単語数は「語の間に空白がある」ことを前提にしている

単語を数えるとは、空白で区切られた文字の連なりを数えることです。語の間に空白を置く言語では機能し、 置かない言語では完全に破綻します。日本語・中国語・タイ語は分かち書きをしないため、 単語数は 1 に近い値を返すか、ツールごとに実装の違う言語別の分割処理を必要とします。 これらの言語では文字数のほうが意味のある尺度で、日本の出版慣行が単語ではなく文字数と 原稿用紙の枚数で数えるのは、理にかなっています。

空白で区切る言語の内部でも、境界は曖昧です。ハイフンで繋いだ複合語は1語か2語か、 数字は1語に数えるか、前後に空白のないダッシュは語を分けるか —— これらは事実ではなく慣習で、 2つのカウンタが1%ほど食い違っても、どちらも間違いではありません。

改行と、見えない文字

PDF や整形済みの文書から貼り付けたテキストには、目に見えないのに数に入る文字がよく混ざります。 ノーブレークスペース、ゼロ幅接合子、ソフトハイフン、行末の空白などです。 これらは文字数を押し上げ、上限ぎりぎりのときには差のすべてになり得ます。改行の扱いも異なり、 1文字として保存する系と2文字として保存する系があるため、長い文書では行数のぶんだけ数字がずれます。

数えるのは手元で

このカウンタは完全にブラウザ内で動きます。貼り付けた内容はどこにも送信されません。 公開前の原稿、応募書類、契約条項など、どこの誰とも知れないサーバーに貼りたくない文章では、 これが効いてきます。約束ではなく自動テストで検証していて、 ページからデータを持ち出す通信が1件でもあればビルドが落ちます。