プログラマのための文字コード技術入門 の第1章に「文字コードはなぜ複雑になるのか」という節があります。そこには「過去の経験の積み重ね」「文字そのものの難しさ」の2つが挙げられています。もちろんその通りなのですが、私が常々感じている「もうひとつの文字コードの複雑さ」があるのでメモしておきます。
ここに2種類のAとBいう特殊な考え方があるとします。この2つには以下の性質があります。
・Aを理解するには、前もって別の特殊な考え方Bを知っていなければいけない。
・Bを理解するには、前もって別の特殊な考え方Aを知っていなければいけない。
文字コードは人間が考えた特殊な考え方の集まりです。しかしそれは整然とした重層的な体系ではなく、このように各々の考え方がお互いにその前提になっていたりします。(1 (2
相互に依存したAとBを同時に知ることはできません。はじめは「なんとなくAのようなもの」に触れるしかないのですが、いくらAだけに触れても「のようなもの」でしかないので、いつまでも曖昧ですっきりしない。(3
文字コードの複雑さ(分かりにくさ)は、このような「特殊な考え方の同時的相互依存性」にあると感じています。(4
- 実際にはAとBだけではなく、C、D、E…といくつも依存しあっています。 [↩]
- Unicode正規化はとくにこれが顕著です。分解マッピング、結合文字列、合成済み文字…等々。 [↩]
- 基礎的な「符号化文字集合」「文字符号化方式」からしてそうですよね。 [↩]
- 文字コードは人間が作った世界ですから、その複雑さもきわめて人間的です。 [↩]