君はそれに名前を付けれるかい?と問う

自分はシステム開発を生業としているのだけど、作ったある機能に対して名前をつける。

というか、プログラムというのは機能を名前で識別するように作られている。*1いちいち名前を付けて、その名前で機能を呼び分ける必要があるので、名付けと言うのはごく日常的な出来事なのだ。

まだ経験の浅いプログラマに設計をやらせると、大抵、機能のまとめ方が拙くて、
「これはどういう機能?名前をつけてごらん」
と言うと、深く思考に落ち込んでしまうのだ。


適切に名付けを行うには、そもそもその機能の目的感がはっきりしていないといけない。掃除機は掃除をする道具、洗濯機は洗濯をする道具。名前と機能が明確に結びついている。こういう機械は命名が楽だし、どういう代物なのかというのがすぐに相手に伝わる。名は体を表しているわけだ。

困るのは多目的な海の物とも山の物ともつかない、パソコンのような機械だろう。あるいは、つぎはぎだらけの半端に機能が組み合わさった総体としてはどう使っていいのか分らないような機能。そういうものに名前をつけよと問うと、みんな困ってしまう。

名前をつけるという価値

プログラムをある程度まで学んだ人間はデザインパターンというものに巡り合うだろう。これは、オブジェクト指向を用いたプログラムの設計手法のカタログのようなもので、特にGoF*2が23のデザインパターンを書籍「オブジェクト指向における再利用のためのデザインパターン」でまとめたものが有名だ。


GoFデザインパターンは設計技法という抽象的なモノに共通の呼び名を与えた。


このことは、重要な意味を持つ。ある概念に名前をつけることで、始めてその概念は概念として認知されるのだ。その概念は新しいものではないかもしれない。すでに誰かが着想を得ていたかもしれない。ある人の頭の中でだけなら確立している概念かもしれない。それを言語化して命名することで初めて共有できるようになるのだ。*3

GoFデザインパターンは第1章にはこのように書かれている。

本書で示すデザインパターンの中には、新しいものや有用性が未確認であるものは1つもない。我々がいろいろなシステムで複数回適用したデザインパターンのみを掲載している。だが、そのほとんどは今まで文書化されていないものだ。オブジェクト指向コミュニティにおいてよく知られているものや、うまくいったオブジェクト指向システムの要素となっているものである。いずれも初心者が容易に得られるものではない。したがって本書中のデザインパターンは新しいものではないが、我々はこれらのデザインパターンを、一貫した形式を持つカタログとして利用しやすいような形にまとめてみた。

つまり、新しくて革新的なモノを発表するよ!という本ではなく、いつのころからかプログラマ間で使われていた使い古しの設計手法を名付け、カタログ化した本だということなのだ。

論じたいからじゃないの

はてなの住民ってなんとか論法って名付けるの好きね。

はてなブックマーク - まさかそのオチはないとは思うが - プログラマーの脳みそ

まぁ、議論が好きなんだろう。*4こういうことってあるよね、という議題を持ち出すときに、名前がないと不便でしょうがない。もちろん、定着するかどうかなんてのはわからないし、大抵の概念は名前も存在も忘れ去られてしまうだろう。かといってそれを止めてしまうと何も生み出せなくなる。

同じ概念をみんながいろいろな言葉で表現している中で、これだ、というモノが名前を得て市民権を得ていくというものである。例えばジャイアニズムあたりなんかはある程度普及したんじゃないかな、と思うのだけどどうだろう。

*1:内部的には他の扱われ方をしている場合もあるが、大方プログラム言語上ではXXをする、と命令しようとした場合、その機能に名前が付いていなければならない

*2:Gang of Fourの略。エーリヒ・ガンマ、リチャード・ヘルム、ラルフ・ジョンソン、ジョン・ブリシディースの四人組のことを指す

*3:師弟関係などにおいて、言語化されず伝えられているものも多分にあると思うが、言語化されないものは可視化されずその存在が埋もれてしまう。議論の俎上に載せるにはまず名付けが必要だろう

*4:中には議論とマウンティングを取り違えている人もいるが