プログラミングの難しいところは名前をたくさん付けなければいけないところである

という140字で済む話を長く書きます。筆者の立場は非エンジニア/非プログラマーです。

けっこう前の話だけどこれ

nomolk.hatenablog.com

をやったときに、慣れないフレームワーク使っていろんな概念があやふやだったので、変数名をつけるのに苦労した。あとフレームワーク無関係に、クラス名とかメソッド名とかもプログラム書きなれてないと正解が分からないのでけっこう気を遣う。それで苦労しつつもこの時はまあそれなりに形になって、じゃあGitHubにアップしてみるか、って思ったときにまたリポジトリ名決めなきゃいけないことが分かって、また名前つけるの!!と思ったのだ。

プログラミングの難しいところは名前をたくさん付けなければいけないところである。

難しい理由

この文章の目的は現代のプログラミングが悪いとか、未熟であるとかそういうことを言いたいわけではない。単純に非エンジニア/非プログラマーにとって「名前を付ける」という行為がけっこうハードルの高いものである、というのをエンジニアの人たちは知らないかもしれないので周知したいというのが狙いである。
プロフェッショナルにとっても「良い名前を付ける」ことのむずかしさが存在するのは知っているけど、そういうクオリティの良し悪しの話じゃなくて、初心者には名前を付けること自体がちょっと難しい。

このハードルの高さには理由が二つあると思っていて、

  • 非エンジニアは名前を付け慣れていない
  • プログラミングの入門時に名前を付ける方法が説明されない

順に説明していきたい。

非エンジニアは名前を付け慣れていない

普通に生きていて名前を付ける機会というのは意外と少ない。
プログラミングだと、たとえばクラス名とそのサブクラスのクラス名と、それを実際にインスタンス化するときに入れる変数名は全部違うものをつけないといけない。
でも実生活では、たとえば広義のアイスクリームは「アイス」だし、そのサブクラスのラクトアイスも「アイス」だし、家の冷蔵庫に入ってる特定の一個のアイスも「アイス」である。特別に呼び分けるとしても「乳脂肪分の少ないアイス」とか「昨日買ったアイス」等と、形容詞+ざっくりした名前、くらいで呼べるので、いちいち厳密に名前を付け分ける必要はない。「ラクトアイス」という言葉は覚えておいた方が楽な気はするけど、それでも少なくとも命名を回避して「乳脂肪分の少ないアイス」と呼び続けることも可能なのである。
そういう運用が困難になったときに初めて名前を付けるのが日常的な「命名」という行為であって、プログラミング中みたいに息をするように名前を付けまくるという状況はあまりない。
ビジネスだと日常生活よりは命名機会が多い気がするけど、それでもプログラミングほどすべてのものにいちいち名前を付けたりはしない。

プログラミングの入門時に名前を付ける方法が説明されない

これは自分の経験上の話なのでたまたまかもしれないけど、プログラミング言語のチュートリアルとか入門書とかで、命名のやり方についてあまり説明されないように思う。登場するコードの中には、自明であるかのようにそれっぽい名前が用意されて進んでいく。それが終わって、じゃあ自分で書いてみよう、ってなったときに急にオリジナルの名前を考えないといけなくなって、途方に暮れるのである。
エンジニア向けに命名の方法やその重要さを説く文書がたくさんあるのは知っているけど、初心者の時のガイドがないように思う。
エンジニアやプログラマになる人用の教育ではそういうのがあるのだろうけど、自分のように趣味で始めた人にとっては、それこそ「他人のコードを見て盗む」みたいな非効率なルートしかない。熟練者がさらに熟達するためには「他人のコードを見て盗む」が必要かもしれないけど、初心者が必要としているようなレベルの低い技術は「他人のコードを見て盗む」みたいな非効率な形で習得したくない。
(これは自分が知らないだけでもしいい資料があるのであれば教えてください)

母語の話

とはいえこの問題は非英語話者特有のものという気もする。
ライブラリのコードとかを見てみると、英語話者のつけた変数名には「昨日買ったアイス」みたいなノリの、それこそ「icecreamIBoughtYesterday」みたいな変数名が結構ある気がする。
彼らは英語が達者なので、「〇〇のやつ」みたいな命名がスムーズにできる。ちょっと複雑なニュアンスを短い変数名に込めたりもできる。
日本人が英語で名前を付けないというのが、ハードルをより高いものにしているかもしれない。

以上です。結論は特にありません。

おたんじょうきろく 命名紙セット

おたんじょうきろく 命名紙セット