ソフトウェアエンジニアリングにおいて大切なのは、人間のことをのぞけば名付けだと思っている。言葉がなければ世界は混沌としたままだけど、そこに名前をもたらすことがものごとを切り分け、ひとつの秩序をもった視点をつくる。この秩序は唯一絶対のものではなくて、なんらかの意志によって導かれたものである。ソフトウェアはあくまでも現実の抽象だから、問題をどういう視点で見るか、という軸があるわけだ。そういう意味では人間のことではある。
適切につけられた名前は、そのことによって他のものとの自然な境界を与えられていて、その他の名付けと一貫性を持っている。そういう名前は既存の名付けの体系になじむので、同じ言葉を使う人々のあいだに受けいられれて、共通のコンテキストに追加される。そして次第に暗黙のものになっていく。
たとえばユーザのフォローがあるSNSのようなウェブサービスをつくるときに、QueueとかBrokerみたいな存在を発見して名前をつけるのはひとつの設計のステップになる。この例を見て当然じゃん、と思えるならばそれは基盤となる語彙を持てているからで、パターンといった形で広く共有される名付けの体系もある。
ソフトウェアやライブラリに固有名詞をつけることがある。固有名詞をつけることは自分たちが作ったものへの愛情のあらわれでもある一方で、以上に書いたように、他のものと区別されるものとして、コンテキストを新たに積み上げようとすることでもある。固有名詞の射程はとても広くて、ローコンテキストな不特定多数に使われるものであることが多い。さらに名が体を現さないので、初めて接する人にとってはたいてい異物と映る。その名前に接した人が、その人の世界にその名前を受け入れてくれるかは、それが特別な名前を与えられるだけの強固な境界と価値を持っているかどうかにかかっている。
日常的に使われたり口に上るものであれば、固有名詞を持っていてもいい。そのたびにコンテキストが強化されていくからだ。ただそれが受け入れられるにはその対象が「名前負け」していないことを考えてあげないといけない。Goはやりすぎだけど、定着するだけのパワーがあった。ecspressoみたいに固有名詞でありつつ中身を示唆している名前を考えられたら楽しいですね。ghqについてはとくに反省していません。