『親を殺す前に子供は全員殺しておかなきゃいけないんだよ!! そんな当たり前の事も知らないのか!?』
これはソフトウェアエンジニアにとっては日常で発生し得る会話だが、ソフトウェアエンジニアリングに詳しくない人にはとても恐ろしい話に聞こえるらしい。
というわけでプログラマーの為の識別子構成法、親子関係の単語編である。
ツリー構造の中のブツは親族呼称で表現する事が多い
ディレクトリ(フォルダ)とファイルのようにツリー構造になっている物は、root, trunk, branch, leaf みたいに樹木で例える事もあるが、親族呼称で表現する事の方が多いと思う。
いや tree 構造なのにツリーの用語じゃなくて親族呼称で言うのはよく考えると違和感あるが、それが伝統であり慣例なのだ。仕方がない。
整理すると以下のような感じになるはずだ。
singular | plural | adjective | 俺的日本語表現 |
---|---|---|---|
parent | parents | 親 | |
child | children | 子 1 | |
sibling | siblings | 兄弟姉妹 | |
ancestor | ancestors | 祖先 | |
descendant | descendants | descendant (稀に descendent) | 子孫 |
自分は正直、sibling というのは DOM 用語で初めて知った。男女の区別をしない兄弟姉妹という単語が英語にはあったのだ。
現代英語は文法性を持たないので、brother か sister かの二択で一意に決めらるルールがないのだと思う。そういう意味では日本語も伝統的な単語としては兄弟と姉妹しかなく、構成要素に女性が含まれている場合でも兄弟に丸められてきたし、現在でも発音上は「きょうだい」が普通だろう。キョウマイとかシテイでは通じまい。後者なんか文脈的にも子弟に間違われるはずだ。
親族呼称を使わないケース
ツリー構造のようになる場合でも親族呼称を使わないケースもあるが、どういう時に使わないか一般化は難しいかもしれない。
何かわかったら追加修正するが一旦ケーススタディでお願いしたい。
オブジェクト指向のクラス継承階層の場合
日本語の、特に口語だと親クラス/子クラスと表現する事が多いと思うが、日本語でも文語の場合や英語の場合は別の用語になる。
english | 訳語 | 俺的日本語 | 注釈 |
---|---|---|---|
base class | 基底クラス | 親クラス | 普通 base/derived でペア |
super class | スーパークラス | 親クラス | 普通 super/sub でペア |
derived class | 基底クラス | 子クラス | 普通 base/derived でペア |
sub class | サブクラス | 子クラス | 普通 super/sub でペア |
同じのが複数セットあると使い分けに困ると思うが、だいたいはプログラミング言語毎にどっちの用語を使う事になっているか決まってるものだと思う。
あと base class の訳語として長く基底クラスが使われてきたが、最近は underlying type という別の概念が出てきていて、これを日本語に訳すと基底型となってしまい、かなりややこしいが全然別の用語なので気をつけないといけない。
もしこの未来がわかってたら base class の訳語は基礎クラスとかにしておくべきだったと思う。
これに関して自分は今まで parent class とか child class という英語表現は見聞きした覚えがないし、継承階層の話は基本的に static な文脈であり、dynamic な文脈とは用語が違うのだと考えると辻褄が合うような気がする(後付けで辻褄を合わせた感はある)。
終わりに
まだ他にも表現方法があるような気がするので思いついたら追記するかもしれません。
-
直接の子供を表すために direct children のように表現されるのを見た事がある気がするが、それよりも子孫を表す descendant でなければ直接の子供であると定義した方がすっきりするはず。 ↩