明日から役立つ?プログラマーの考え方講座 その1
「名前をつけてみよう」

はじめまして、鳥井雪です。
ヒューマンアカデミー こどもプログラミング教室の教材監修をしています。
このコラムでは、現役職業プログラマーとして、実際にプログラマーが毎日どんなことを考えてプログラミングしているかを、わかりやすく紹介していけたらと思っています。

第一回は、「名前をつける」ということについて

プログラミングで、「名前をつける」というのはとても重要な作業です。 そのものずばり「名前重要」、「適切な名前をつけることができたら、(プログラミングの)設計は8割できたようなもの」なんて言葉があったりします。プログラミング言語Rubyをつくったまつもとゆきひろさんの言葉ですね。みなさんも、待望のわが子や、お迎えしたペット、自分の作品や、子供のころにはお気に入りの人形なんかに、一所懸命名前を考えた経験がおありかと思います。

プログラマーは、毎日いろんなものに名前をつけています。 変数の名前、関数の名前、ファイルの名前、ライブラリ(ある機能をもったプログラムを、いろんなプログラムの中で使えるようにまとめたもの)の名前…。そしてその名前に悩みます。 「適切な名前が思いつかずに半日悩んでいる」とか、大きな機能だと「3年間決まらなかった名前がとつぜんひらめいて」なんて話も聞くくらいです。

プログラミングでの命名が、わが子やペットの名付けとちがうのは、わかりやすさを一番大事にするということです。
たとえば変数名だったら「それが何か」、関数名だったら「それが何をするものか」が、一目で分かる名前を考えるんですね。どうして名前をそんなに大事にするんでしょうか?
一番には、あとから読んで苦労しないためです。

そのプログラムが何をやりたいかを考えて名前をつけよう

こんな状況を考えてみましょう。
プログラムを書いていて、ある変数を用意したくなったとします。変数というのは、プログラムの中で「なにかそういう値がある」ことにして名前を用意し、 そこに実際の値(1とか10とか、"Hello"とか)を入れたり、入れ替えたりして使うものです。 たとえば「そのプログラムが使われる国」という意味で「using_country」という名前の変数を用意して、そこに"Japan"という実際の値を入れます。
そうすると、

print using_country

という「名前」を呼び出すことで

Japan

という結果を得られます。
これだけだったら

print "Japan"

と書くのと同じです。でもusing_country は、そのプログラムが使われる国ごとに違うので、"Japan"だけが欲しい結果だとは限りません。その国(実際の値)が"China"でも"Germany"でも、同じプログラムで「そのプログラムが使われている国の名前を表示する」という目的が達成されるわけです。

さてその変数ですが、もしこれが「using_country」ではなくて「name」だったらどうでしょう? 国の名前ですからnameでも間違いではなさそうです。
でも、このプログラムを後で別の人が読んだ時に、

print using_country

と書いてあるのと、

print name

と書いてあるのでは、「そのプログラムが何をやりたいか」の"わかりやすさ"はどちらが上ででしょうか?
「using_country」だと思います。わかりやすい、読みやすい、ということで、まず理解のコストが下がります。 それから、後でそのプログラムを書き換えて機能を追加したいときに、誤解からのバグの危険性がすくなくなるのです。
「name」という変数名をみて「なるほどきっとここには使う人の名前が表示されるんだな。
じゃあもっと丁寧に、

print "あなたのお名前は #{name}です"

に変えてあげよう」と手を入れて、

あなたのお名前は Japanです

と表示される、なんてミスが防げるわけです!

三日後の自分は別の人間だと思ってコードを書こう

「名前重要」というのは、なにもプログラミングの世界だけの話ではありません。
たとえば夏に向けた衣替えで、衣装ケースに今は使わない洋服をしまって、ラベルを貼るとします。 しまったすぐ後はどこに何が入っているかわかっているので、すぐ取り出せます。でもひと夏が終わって、さてそろそろ肌寒くなってきた頃。単に「衣類」というラベルが貼ってあるのと、「秋物スカート」「長袖シャツ」と書いてあるのでは、ありがたさがまったく違いますよね。

プログラマーは、日々たくさんのプログラムを書くので、あまり自分の書いたコード(プログラム)をいちいち覚えていたりしません(人によっては覚えていることもあるらしいですが)。「三日後の自分は別の人間だと思ってコードを書け」という教えがあるくらいです。ひと夏どころではないですね。

というわけで、プログラマーは日々、「ここで本当にやりたいことを表せる名前はなんだろう?」「いい名前がつけられているかな?」と頭を悩ませているわけです。 自分だけが使うプログラムや、日常生活でも、すこし「名前」や「ラベル」を気にしてみるのが、プログラミングが上達する手がかりかもしれませんね。具体的に、「いい名前をつける」ためのポイントについては、また次回。

一覧ページへ戻る