プログラマが知るべき97のこと/名前重要

ネイティブ・アメリカンの信仰に「すべての人物・事物には真の名前があり、その名前を知るものはそれを支配することができる」というものがあるのだそうです。ですから、彼らは自分の真の名前を秘密にして、家族など本当に信頼できる人にしか打ち明けないのだそうです。そして、対外的にはあだ名を用意してそちらを使うということです。そういえばアニメ化もされたA.K.ル・グインの『ゲド戦記』でも同じ設定が用いられていましたね。「ゲド」というのは主人公の真の名前なので物語中にほとんど登場せず、物語の中では彼は一貫して「ハイタカ」と呼ばれていました。

さて、プログラミングの世界において、この信仰はある程度真実ではないかと感じることがたびたびあります。つまり、事物の名前には、理屈では説明しきれない不思議なパワーがあるような気がするのです。

たとえば、私が開発しているRubyも、名前のパワーを体現しているように思えます。1993年にRubyの開発を始めた時、Perlにあやかって宝石の名前を選んでRubyと命名しました。あまり深刻に考えず、宝石の名前の中から、短く、覚えやすく、美しい名前としてRubyを選んだだけでしたが、後にRubyが、6月の誕生石である真珠(パール)に続く、7月の誕生石であることに気がついた時、まさに適切な名前であると感じました。また、活字もそれぞれの大きさに応じて宝石の名前が付けられているのですが、パールは5ポイント、ルビーは5.5ポイントで並んでいます。このルビーがふりがなの「ルビ」の語源になったのはまた別の話。

今、振り返って思うのは、もし私がRubyという名前を選ばなかったらきっと、現在のRubyの普及を見ることはなかっただろうということです。このRubyという名前にパワーがあったからこそ、Rubyの魅力が増加したのではないかと感じるのです。ただ単にRubyがプログラミング言語として優れているだけでなく、この名前の持つパワーによって、愛される存在となっているのではないかと感じるのです。この名前があればこそ、これまでの長い間Rubyを開発し続けるモチベーションが維持できたし、また多くのユーザーがRubyという言語に関心をもってくださったのではないかと感じています。

そんなこともあって、私の設計上の座右の銘は「名前重要」です。あらゆる機能をデザインする時に、私はその名前にもっともこだわります。プログラマとしてのキャリアの中で、適切な名前をつけることができた機能は成功し、そうでない機能については後で後悔することが多かったように思うからです。

実際、Rubyに対する機能追加の要求に対しても、しばしば「要求は分かった。あれば便利なのも理解できる。でも、名前が気に入らない。良い名前が決まったら採用する」として拒否したものも数限りなくあります。しかし、名前が気に入らなかったもので、取り入れなかったことを後で後悔したことはほとんどありません。

これはつまりこういうことなのではないかと思います。適切な名前をつけられると言うことは、その機能が正しく理解されて、設計されているということで、逆にふさわしい名前がつけられないということは、その機能が果たすべき役割を設計者自身も十分理解できていないということなのではないでしょうか。個人的には適切な名前をつけることができた機能については、その設計の8割が完成したと考えても言い過ぎでないことが多いように思います。

ソフトウェアの設計のアプローチとして、「まず名前から入る」というのは、あまり語られていない秘訣としてもっと広く知られてもよいように思います。