2011.01.25
名前は「グローバル」「わかりやすい」「ユニーク」の3つを同時に満たすことはできない
昨日の「サーバの命名法」を書いていて、「Zookoの三角形」のことを思い出した。基本的にはITのセキュリティに関する話なのだが、一般の人でも理解できるし、面白い話だと思うので紹介したい。

PetName Markup Language - Zooko's Triangle
http://www.erights.org/elib/capability/pnml.html



「Zookoの三角形(Zooko's Triangle)」は、名前に関する制約を表現したもので、

1. グローバルでコンテクストがない(Globally Context-free)
2. 人間にわかりやすい(Human Meaningful)
3. 安全で衝突がない(Securely Collision-free)

の3つを同時に満たす名前(IDなども含む)は不可能だ、というもの。もともとのZookoの記事では、「Names: Decentralized, Secure, Human-Meaningful: Choose Two」(大意:名前をつける場合は、「分散的」「安全」「わかりやすい」のうちから2つ選べ)というタイトルになっている。

この制約を大ざっぱに表現すると、名前というものは

1)グローバル(大域的)
2)わかりやすい
3)ユニーク(同じ名前がない)

の3つを同時に満たすことはできない、となる。

例えば、ある小学校に4年2組というクラスがあるとする。ここに「鈴木」という苗字の人が1人しかいない場合、このクラスで「鈴木」と言えば、特定の人間のことを指す。

このとき、「鈴木」という名前は、人間にとってわかりやすいし(「xE8hYe2K」といった名前に比べて)、かつ4年2組の中ではユニーク(誰を指すかを特定可能)である。しかし、ここで考えているのは4年2組というクラスだけなので、グローバル(大域的)とはいえない。

もしここで、考える範囲を日本全体にひろげれば、グローバル(大域的)と言ってもいい。しかし、日本全体には「鈴木」という苗字の人が山ほどいるので、こんどはユニーク(特定可能)でなくなる。異なる対象が同じ名前を持ってしまうことを、ITの世界ではしばしば「名前の衝突」と呼ぶ。広い範囲に対して、「鈴木」のようにかんたんな名前をふっていくと、「名前の衝突」が起きやすい。

では、日本全体というグローバル(大域的)な範囲で、かつユニーク(特定可能)な名前というのは、どんなものだろうか。国民背番号のようなIDや、郵便で使われる住所などは、一応それを満たしている名前と言えるだろう。しかしこの種のものは、「鈴木」のようにかんたんで、覚えやすく、使いやすいものではない。つまりそれは、「わかりやすい」名前ではない。

このように、「グローバル(大域的)」、「わかりやすい」、「ユニーク(同じ名前がない)」という3つを同時に満たす名前というのはありえず、少なくともどれか1つを犠牲にしなければならないのだ。

人間が使う名前の場合、「xE8hYe2K」のような名前では不便なので、「鈴木」とか「ジョン」といったわかりやすい名前になるのが普通だろう。

しかし、名前というものの最大の役割は、それがどの対象を指すかという「識別」である。よって、複数の対象に対して同じ名前がつく「名前の衝突」が起きると都合が悪い。この場合は、「鈴木(弘)」「鈴木(彰)」のように名前の一部を組みあわせたり、「鍛冶屋のジョン」「肉屋のジョン」のように職業を入れたりして、名前がユニーク(対象を特定可能)になるように、名前を変更したりする。

4年2組だけを考えている場合は「鈴木」で特定可能でも、その学校に「鈴木」がたくさんいる場合は、「4年2組の鈴木」「2年3組の鈴木」といったように、クラスをつけないと識別できない。4年2組という狭いコンテクスト(文脈)の場合は、「鈴木」という短い名前だけでユニークだったのが、その学校全体というコンテクストになると、「4年2組の鈴木」「2年3組の鈴木」のように、より長い名前でないとユニークにならない。

学校全体よりもさらにコンテクストをひろげていくと、「○○小学校の4年2組の鈴木」「○○県○○市○○小学校の4年2組の鈴木」といったように、対象を特定するためには、より長い名前が必要になる。つまり、コンテクストを「グローバル(大域的)」にしていった場合、名前がユニークであることを保持しようと思えば、名前はより長く、わかりにくいものにならざるをえない。


関連エントリ:
さまざまなID
http://mojix.org/2008/08/28/identifiers
なまえとタイトル
http://mojix.org/2005/12/17/224625