こういうよく知られた翻訳エントリがあって、主張しているのはだいたい次のようなことです。
- 名前とはその人のアイデンティティの中核をなすものだから、システムは「その人が主張する名前」を尊重するべきである
- 「名前」を入力するべきシステムの開発者は、名前に関して暗黙の仮定を置いてしまうことが多い
- たとえば「名前はファースト・ネームとラスト・ネームに分かれている。」というような
- しかし、それらの仮定は基本的に全て間違っている
これに関して「この要求を満たすシステムを実装するのは不可能ではないか」という反応が散見されます。
しかしそれは、この「プログラマの抱いている名前についての誤謬」に関する誤謬ではないでしょうか。
このエントリには直接書いてないのですが、このエントリでは要するに 名前について仮定を置くな と言っているのです。言い換えれば、 名前を入力するフィールドを「姓と名」に分けたり、長さとか文字の種類についてバリデーションするべきでない ということを主張しているのです。
とはいえ、実際にシステムを作るときには、次に3点だけは制約としてあっていい、と 個人的には 思っています。件のブログによるとこの仮定すら本当は間違っているのですが、流石にシステムを設計するときには、この3つの仮定くらいは設けないと、先に進めませんからね*1。
- 人の名前は Unicode 16.0 で表現できる。
- 人には1文字以上からなる名前がある。
- 人の名前は255文字以下である(あるいは100文字以下、ないし50文字以下。正確な値はシステムの要件に合わせて決めてください)
*1:最初は1番目がなくて「2つの仮定」としていましたが、Unicodeも仮定しないとシステム設計できないですね…。なお、Unicodeのバージョンは議論の余地があるかもしれません。