この表題だと、いわゆる"LGBT"が出てくるものですが、今回はそれとは若干離れて* 1関連はする。、「性別が世の中にいくつ存在するのか」というものを改めて考えてみましょう。
「性別がいくつあるのか」が問題になるシチュエーション
これが問題になるのは、データベースが絡んだ場合というのが筆頭でしょう。
これは、性別はコードで保持することが当然ともいえる以上当然の帰結で、たとえば、
- 「男・女」であれば2つ必要。
- 「女・男・法人」であれば3つ必要。
このように、いくつかのパターンが考えうるからです。
ISO 5218
結論から言うとなのですが、ISOには ISO 5218 という性別コードに関する規定が設けられています。
国際規格かつ、以下のように合理的な答えでもあるので、少なくとも、ソフトウェア設計上は性別は「4つ」を基本と考えた方がよいのではないかと思います。
- 0 = not known(不明)
- 1 = male(男性)
- 2 = female(女性)
- 9 = not applicable(適用不能)
たとえば、あるアンケートにおいて
- 0: 私が性別を答えなかった。
- 1: 私が「男」と答えた場合。
- 2: 私が「女」と答えた場合。
- 9: そもそも私が法人として答えた場合。
こうなります。合理的でしょう?
これは、偶然か意図したのか、はたまた必然か、RDBMSの生みの親ともいうべき エドガー・F・コッド の提唱した「四値論理」と同じ考え方なんですよね。
(参考及び引用:130値論理(http://mickindex.sakura.ne.jp/database/db_130.html))
私の体重は、読者の皆さんには分かりません。私は人間ですから「体重」という属性を持つことは間違いありませんが、しかしそれは現時点では不明です。一方、テレビや自動車などの「性別」や「虫歯の本数」という属性も、同様に NULL ですが、しかしそれは、値が分からないからではありません。無生物について性別云々することが意味をなさないからです ―― このようなコッドの議論は、非常に明晰で説得的です。
余談
かつての私の派遣先で、「法人は常に男性とし、法人格が付いているかをチェックする」という運用を行っていた企業がありました。
当然ながら、性別を二値かつ必須として設計してしまった故の惨事です。性別を二値で設計するのはやめましょう。
さらなる余談
性別が二値というのは、もう一つ問題があります。
トランスジェンダーやXジェンダーの方、あるいは性別を提供すること自体にリスクを感じる方* 2これは決して素っ頓狂な話ではなく、特に女性・トランスジェンダーにとっては、性別を提供すること自体が大きなリスクたりうる。など、「性別を提供したくない」と考える人は少なからずいるわけです。
特に意味がないのに性別を二値かつ必須にしてしまうのは、そういった方を予め拒んでいるに等しいものです。
性別は変更可能とすべきか否や?
性別にまつわるもう一つの問題は、この表記上の課題でしょう。
――結論から言えば、日本では、また諸外国でも性別は変わりえます。よって、性別は変更可能とすべきというのが答えです。
まぁそれ以上にもっと単純な例として、「性別を間違えた」場合がありますからね。注意力がすっ飛んでる場合は結構間違えます。
四値論理はこの場合にも、一応の避難口* 3恒久的な避難口ではありえない。を提供してくれる意味でも好都合かもしれません。
注釈