「プログラマの抱いている名前についての誤謬」に関する誤謬

プログラマの抱いている名前についての誤謬

こういうよく知られた翻訳エントリがあって、主張しているのはだいたい次のようなことです。

  • 名前とはその人のアイデンティティの中核をなすものだから、システムは「その人が主張する名前」を尊重するべきである
  • 「名前」を入力するべきシステムの開発者は、名前に関して暗黙の仮定を置いてしまうことが多い
    • たとえば「名前はファースト・ネームとラスト・ネームに分かれている。」というような
  • しかし、それらの仮定は基本的に全て間違っている

これに関して「この要求を満たすシステムを実装するのは不可能ではないか」という反応が散見されます。

しかしそれは、この「プログラマの抱いている名前についての誤謬」に関する誤謬ではないでしょうか。

このエントリには直接書いてないのですが、このエントリでは要するに 名前について仮定を置くな と言っているのです。言い換えれば、 名前を入力するフィールドを「姓と名」に分けたり、長さとか文字の種類についてバリデーションするべきでない ということを主張しているのです。

とはいえ、実際にシステムを作るときには、次に3点だけは制約としてあっていい、と 個人的には 思っています。件のブログによるとこの仮定すら本当は間違っているのですが、流石にシステムを設計するときには、この3つの仮定くらいは設けないと、先に進めませんからね*1

  1. 人の名前は Unicode 16.0 で表現できる。
  2. 人には1文字以上からなる名前がある。
  3. 人の名前は255文字以下である(あるいは100文字以下、ないし50文字以下。正確な値はシステムの要件に合わせて決めてください)

*1:最初は1番目がなくて「2つの仮定」としていましたが、Unicodeも仮定しないとシステム設計できないですね…。なお、Unicodeのバージョンは議論の余地があるかもしれません。