漢字
中国で生まれた表意文字。日本語では常用漢字 2,136 字が日常的に使用される。
漢字は中国で生まれた表意文字で、日本語と中国語では現在も日常的に使われ、韓国語やベトナム語でも歴史的に用いられてきました (この文化圏をまとめて CJK と呼びます)。日本では 2010 年 11 月に告示された現行の常用漢字表で 2,136 字が定められており、新聞、公文書、教育の場で使用される漢字の基準となっています。中国大陸では簡体字、台湾・香港では繁体字が使われ、同じ漢字でも地域によって字形が異なります。
漢字の最大の特徴は情報密度の高さです。1 文字で独立した意味を持つため、少ない文字数で多くの情報を伝えられます。たとえば「文字数制限」という 5 文字の漢字語は、英語では "character limit" (15 文字) に相当します。ただし「情報密度が高いから文字数制限の環境では有利」と単純に考えると足元をすくわれます。X (旧 Twitter) は文字ごとに重みを与える方式を採っており、漢字・かなを含む CJK の文字は重み 2 で数えられます。上限 280 に対して実質 140 字しか入らないため、英語と同じ 280 字の枠が使える前提で残り字数を実装すると、日本語入力で必ず食い違いが出ます。
漢字には音読み (中国語由来の読み) と訓読み (日本語固有の読み) があり、同じ漢字でも文脈によって読み方が変わります。「生」という漢字だけでも「せい」「しょう」「い(きる)」「う(まれる)」「なま」など多数の読みがあり、日本語学習者にとって大きな壁となっています。漢字の読みの多様性は、テキスト読み上げ (TTS) や形態素解析の精度にも影響を与えます。
Unicode では CJK 統合漢字として U+4E00〜U+9FFF に 20,992 字が収録されており、このブロックはすでに全域が埋まっています。CJK 統合漢字拡張 A〜J を含めると 10 万字を超え、サロゲートや私用領域を除いた割り当て済み文字のうち 6 割超を漢字が占めます。CJK 統合漢字は、日本・中国・韓国・ベトナムで使われる同一起源の漢字を統合 (ユニフィケーション) したもので、字形の微妙な違いがあっても同じコードポイントが割り当てられている場合があります。
よくある誤解として、漢字は数千年間変化していないという認識がありますが、実際には時代とともに字形や用法が変遷しています。日本では 1946 年の当用漢字表、2010 年の常用漢字表改定など、公的な漢字政策が繰り返し行われてきました。中国でも 1950 年代の簡体字改革により、多くの漢字が簡略化されています。
文字数カウントの観点では、漢字は 1 文字としてカウントされますが、エンコーディングによってバイト数が異なります。UTF-8 では 1 文字あたり 3 バイト、UTF-16 では 2 バイト (BMP 内の場合)、Shift_JIS では 2 バイトを消費します。CJK 拡張 B 以降 (BMP 外) の漢字は UTF-16 でサロゲートペア (4 バイト) が必要になるため (拡張 A は BMP 内で 2 バイトのまま)、バイト数ベースの文字数制限を設ける際にはエンコーディングの違いを考慮する必要があります。
「常用漢字なら安全」という思い込みも危険です。2010 年の改定で追加された 196 字のうち「𠮟」(しかる) は U+20B9F にあり、基本多言語面 (BMP) の外に位置します。この 1 字は Shift_JIS では表現できず、UTF-8 では 4 バイト、UTF-16 では 2 単位を消費します。JavaScript の "𠮟".length は 2 を返すため、素朴な文字数チェックでは 1 字が 2 字と数えられます。同じ理由で、氏名に人名用漢字の異体字を含む入力は、古い Shift_JIS 前提のシステムやバイト数上限のカラムで落ちることがあります。日本語を扱うフォームでは、格納は UTF-8、数え方はコードポイントか書記素で統一し、常用漢字の範囲を根拠に安全側と判断しないことが実務上の指針になります。