【10】名前重要
ネイティブ・アメリカンの信仰に「すべての人物・事物には真の名前があり、その名前を知るものはそれを支配することができる」というものがあるのだそうです。ですから、彼らは自分の真の名前を秘密にして、家族など本当に信頼できる人にしか打ち明けないのだそうです。そして、対外的にはあだ名を用意してそちらを使うということです。そういえばアニメ化もされた U・K・ル=グウィンの『ゲド戦記』でも同じ設定が用いられていましたね。「ゲド」というのは主人公の真の名前なので物語中にほとんど登場せず、物語の中では彼は一貫して「ハイタカ」と呼ばれていました。
さて、プログラミングの世界において、この信仰はある程度真実ではないかと感じることがたびたびあります。つまり、事物の名前には、理屈では説明しきれない不思議なパワーがあるような気がするのです。
たとえば、私が開発している Ruby も、名前のパワーを体現しているように思えます。 1993 年に Ruby の開発を始めた時、Perl にあやかって宝石の名前を選んで Ruby と命名しました。あまり深刻に考えず、宝石の名前の中から、短く、覚えやすく、美しい名前として Ruby を選んだだけでしたが、後に Ruby が、6 月の誕生石である真珠(パール)に続く、7 月の誕生石であることに気がついた時、まさに適切な名前であると感じました。また、活字もそれぞれの大きさに応じて宝石の名前が付けられているのですが、パールは 5 ポイント、ルビーは 5.5 ポイントで並んでいます。このルビーがふりがなの「ルビ」の語源になったのはまた別の話。
今、振り返って思うのは、もし私が Ruby という名前を選ばなかったらきっと、現在の Ruby の普及を見ることはなかっただろうということです。この Ruby という名前にパワーがあったからこそ、Ruby の魅力が増加したのではないかと感じるのです。ただ単に Ruby がプログラミング言語として優れているだけでなく、この名前の持つパワーによって、愛される存在となっているのではないかと感じるのです。この名前があればこそ、これまでの長い間 Ruby を開発し続けるモチベーションが維持できたし、また多くのユーザが Ruby という言語に関心をもってくださったのではないかと感じています。
そんなこともあって、私の設計上の座右の銘は「名前重要」です。あらゆる機能をデザインする時に、私はその名前にもっともこだわります。プログラマとしてのキャリアの中で、適切な名前をつけることができた機能は成功し、そうでない機能については後で後悔することが多かったように思うからです。
実際、Ruby に対する機能追加の要求に対しても、しばしば「要求は分かった。あれば便利なのも理解できる。でも、名前が気に入らない。良い名前が決まったら採用する」として拒否したものも数限りなくあります。しかし、名前が気に入らなかったもので、取り入れなかったことを後で後悔したことはほとんどありません。
これはつまりこういうことなのではないかと思います。適切な名前をつけられると言うことは、その機能が正しく理解されて、設計されているということで、逆にふさわしい名前がつけられないということは、その機能が果たすべき役割を設計者自身も十分理解できていないということなのではないでしょうか。個人的には適切な名前をつけることができた機能については、その設計の 8 割が完成したと考えても言い過ぎでないことが多いように思います。
ソフトウェアの設計のアプローチとして、「まず名前から入る」というのは、あまり語られていない秘訣としてもっと広く知られてもよいように思います。