(プログラミングの話なので専門的です。)

先日、メソッドや変数の命名方法に関する勉強会に参加しました。
そこで聞いて印象的だったのは「いい名前をつけようと思ったら設計をしっかりしないといけない」という話です。例えばちゃんとクラスが分割できていないと、その内容をきちんと表す言葉で命名もできない。つまり「設計→言葉」という方向です。これはまったくその通りだと感じました。

その後しばらくして、言語学のある理論を思い出しました。100年くらい前までは言葉というのはラベルのようなものと考えられていました。例えばワンワン吠えるあの動物に対し、日本語は「犬」、英語は「dog」というラベルを付けて認識するという考え方です。
しかしソシュールという学者が登場して以後、実体(犬など)がまずあって次にラベルを付けるのではなく、ラベルがまず存在することで初めて実体を認識できるという考え方が出てきました。例えば虹の色です。日本語では虹を7色で認識しますが、もっと少ない色数で認識する言語もあります。日本語であっても、一般的な日本人なら7色かもしれませんが、多くの色名を知っているデザイナーであれば更に細かく認識するかもしれません。ボキャブラリーの豊富さが認識の精度に関わるわけです。

つまり「設計→言葉」という方向とは逆に、多様な言葉を知っているからこそうまく設計や分割ができるという方向も考えられるのではないかということです。すなわち「言葉→設計」の方向です。いわゆるデザインパターンもそれに近いのかもしれません。

もしよい設計をするために豊富なボキャブラリーが必要なのであれば、プログラミング言語能力を鍛えると同時に、自然言語の能力も鍛えなければならない。この辺りは卵か鶏かという話かもしれません。