🙅

その変数名だけはやめろ:頼むから analysis を anal と略さないでください

2024/11/06に公開

汚れつちまつた悲しみに
   —— 『山羊の歌』 中原 中也 ——

下ネタ系

使用者の意図 変数名 脳内解釈 読み方
temporary, temperature, template tmp timpo チンポ
cumulative cum cum カム(英: 精子)
count, client cnt cunt カント(英: 女性器)
assign, assembly ass ass アス(英: ケツ)
change cng chinge ちんげ
client clit clit クリトリス(英: 陰核)
title tit tit ティット(英: 乳首)
analyze, analysis anal anal アナル(英: 肛門の)
manage, manager mng mange まんげ
unknown unk unko ウンコ

Linux には /tmp という一時ファイル用のディレクトリがあるので tmp は許容範囲である。というか日本語読みなので英語圏にこのネタは通じない。cng, mng, unk も同様である。cnt は英語圏でも普通に使われる変数名のようで、assanal ほどの忌避感はないようである。

最悪な変数名は anal_checkanal_insert である。from anal import * も芸術点が高い[1]

叩いた回数の累積などを cumshot(「射精」のスラング)にするのも割と最悪みがあるようだが、日本人にはあまり伝わらないという意味でそこまででもない。

以下、改善案。

変数名 改善案 理由
tmp temp, tmpl だいぶチンポみが薄れる
cum cumul 精子臭さは取れた
cnt c, t, count どうせ略すならこうしろ/いまどき数文字くらい略すな
ass asn, asm, assign, assembly 同上
cng ch, chg, change 同上
clit client いまどき数文字くらい略すな
tit title 同上
anal analyze, analysis 同上
mng manage, manager 同上
unk unknown 同上

https://www.quora.com/As-a-software-developer-what-is-the-most-inappropriate-variable-name-youve-ever-seen

そこまで気にしなくていいと思う単語

使用者の意図 変数名 意味
sexuality sex 性別

医学的または生物学的なコンテキストで「性別」を指す語であり、たとえば問診票のデータベースなど、この用法で用いる限りは他の語で代替することが難しいので用いてもよい。

ただし、変数 sex の周りでバグが起きると職場や客先で「セックス」と連呼することになる。

化粧品のアンケートなど、より社会的なコンテキストでは gender という語が適している。LGBT への配慮から gender_typegender_identity などが選択される場面もあるらしい。

確率の低い下ネタ

いままで遭遇したことがないが、ごく低い確率で生じるかもしれない下ネタ。4文字程度のタグを自動生成する際に確率的に発生してしまうこともあるらしい。

以下の表で、[x] は先頭が x で始まる単語を指す。

変数名 脳内解釈 意味 発生状況
sperm sperm 精子 [s] + permutation / [s] + permission
boob boob おっぱい byte + [o] + object
porn porn ポルノ "positive or negative"
bich, bitch bitch ビッチ bit + check / bit + change

おっぱいはシモじゃねぇ、上だろというご意見は慎んで受け流します。

案外ダメな下ネタ

変数名 意味
xxx ドエロいコンテンツ

X に「キス」や「X-指定(ポルノコンテンツのレーティング)」の意味があり、それを3つ重ねた XXXドエロいコンテンツを指すようになった[2]

ダミーの IP アドレスとして XXX.XXX.XXX.XXX と書く人がいるが、これもいけない。トップレベルドメイン .xxx は正式に認可されたドメインで、ポルノサイトを区別するために使われていたりする。実際に https://XXX.XXX にアクセスすると以下のようなポルノサイトのハブサイトに繋がる。(職場でクリックしちゃダメ!!)


すべてのポルノサイトをすぐに見つけられます!

例示やテストに用いるダミーの IP アドレスは、RFC 5737 において Documentation Address Blocks として以下の3つのアドレスブロックが割り当てられているので、こちらを使うこと。

名称 アドレスブロック
TEST-NET-1 192.0.2.0/24
TEST-NET-2 198.51.100.0/24
TEST-NET-3 203.0.113.0/24

https://datatracker.ietf.org/doc/html/rfc5737

日本語をそのまま変数名にするとき

変数名 意味
unko 運行

もろうんこである。unkoh にしてはどうかとも思ったが「うんこエッチ」でもっと最悪だった。unkou がギリか。

もし見かけたら分かっていても使用せざるを得なかったエンジニアの葛藤を想像するだけで飯が三杯いける。

ランク外

変数名 意味
member ペニス(スラング)

オブジェクト指向ではクラス内部の変数や関数のことをメンバ(member)と呼ぶが、Python などではこれを属性(attribute)と読んでおり、意図的に member という語を避けていそうな節はある。

X(旧 Twitter)で指摘を受けて、確かにあったなぁそんなの、と思って追記したのだが、事前リサーチに引っかからない程度であり「Is "member" a inappropriate variable name?」などと検索してもヒットしない。同じ質問を ChatGPT や Google AI に投げても明確に "No" と答えるか下ネタには言及せず、念のため「I mean, “member” can mean "penis."」と追及したときの返答は以下であった。

Yes, "member" can indeed mean "penis" in English, though it’s a somewhat old-fashioned or less common usage.

仮にそういう用途で用いても古臭い用法のようで、team_membergroup_member などとすればペニスとしての意味は完全に消失するようである。

念のためネイティブの友人にも確認してみた。

念のためネイティブの友人[3]に確認したが、以下のような返答だった。私が勝手に都合のいい解釈をしないよう原文ママで返答を引用する。

"Member" does have some sexual connotations to it like meaning "penis", but I think it's heavily reliant on context. If I'm thinking about code, often times I think of "member" as a "member function" or "member variable" of a given class. Broadly speaking it's probably more correct to say that we often use "member" as a "something belonging to a larger whole", i.e. members in a group, member in an array, etc.

つまり単に「一部」という意味の単語で、日本語で言うところの「アレ」や「息子」に近い、文脈依存ではそういう意味にもなりうる単語のような印象を受ける。プログラミングの文脈で "member" という単語を使用して「ペニス」の意味に解釈することはまずなく、物語、フィクション、官能作品くらいでしか見られない用法であり、これはそういう意味かと尋ねても「"huh, didn't think of it that way"」みたいなリアクションになるだろうとのこと。

なぜ "member" が「ペニス」を指すようになったか

どうもこれは解剖学の分野において、成人男性のペニスのラテン語名が "membrum virile"(メンブルム・ヴィリーレ: 成人男性の器官)である[4]ことに由来するらしく、18世紀〜19世紀から現代にかけては単に member で「ペニス」の意味として用いられているようである。

https://qr.ae/p2mczF

上記の事情を総合し、記載はするもののランク外とした。

Fワード系

fuckfaggot。その他、shit のような単に汚い言葉を集めると無限にあるので紹介はしない。

黒歴史系

日本人が思ってるより英語圏ではセンシティブなワードたち。

変数名 意味 発生状況
nazi ナチス 自動生成の4文字タグ
kkk クー・クラックス・クラン ループ変数など
commie コミー(共産主義者の侮蔑用語) "commit" の typo
nigger 黒人の差別用語 万が一にも発生してはダメ[5]
slave 奴隷 ノードの役割
master[6] 奴隷の主人 ノードの役割、ブランチ名、原本
genocide 虐殺 コンテナやプロセスをすべてキルする

nigger には派生系が多く、Nワードと呼ばれているので注意する。

また、以下は言葉の由来は黒歴史と関係ないが、人種差別の文脈に結び付けられかねないために避けたほうがよい単語である。

変数名 改善案 意味
whitelist allowlist 許可リスト
blacklist blocklist 拒否リスト

宗教系

変数名 意味 発生状況
voodoo ブードゥー 日本語の「黒魔術」を翻訳するとき

ブードゥー教は実際に存在する宗教で、アメリカ人のステレオタイプにより実際の宗教とは関係のない「黒魔術」としての意味で用いられる。日本語のプログラミングにおける「黒魔術」の意味合いで "voodoo" という単語が用いられることがあり、ブードゥー教に対して大変失礼なので使ってはならない。

その他

上記の錚々たるメンツと比べれば、その他は圧倒的にどうとでもしてくれていい。

文字が紛らわしい系

パッと見よく分からない文字や省略は比較的嫌われる。以下の文字で1文字変数を作ると簡単に同僚から嫌われることができる。

  • o, O, 0
  • l, I, 1

最悪の使用例は以下。

意図 変数名
first 1st
last lst

通常、変数名を数字で始めることはできないので item_1st, item_lst のような接尾辞として用いる。

lstlist の省略形としても書きがち[7]

SmallIllustration などもかなり最悪みがある。

https://www.reddit.com/r/programming/comments/sg2w5/the_worlds_two_worst_variable_names/

名前が紛らわしい系

圧倒的に頻出かつ紛らわしいのはぶっちぎりで id である。id という変数名は識別情報(ID: identification)とインデックス(index)に使われることがあり、これらはループの中で同時に出現することもある。

個人的には id は識別情報(ID: identification)にのみ用いるべきだと思う。なぜならば本来 I.D. と略すところを ID と書くほうが自然になるほど定着した identification の省略形だからである。

index に対しては i, idx, index などを状況に応じて使えばよいと思う。

ちなみに index の複数形は indicesindexes両方のケースがあるindex_list とでもしておけばケンカにはならない。

頼んだぞ。

別にいいんじゃないのと思う変数名

x, y, z, i, j, k などの1文字変数。言語ごとの文化に依存する話ではあると思いつつも、一般論として。

処理対象のデータ型が具体的に決まっていない汎用的な関数であるならば、その引数や引数の処理結果に対して xy のような抽象的な変数名をつけることには問題がないと思う。その複数形である xsys についても普通に便利だと思う。100行も200行もある関数でやられると困るが、3行の汎用関数であれば別に気にしない。

ループ変数の i, j, k なども、下手に長くして要素指定が異常に見にくくなるよりは 100% マシである。私は地獄のような数値演算を自前で書いたときにそう思った。

行列を X, Y、ベクトルを v で表すなど、数学的な文脈でも他に名付けようがない場合があるので許されるべきだと思う。

推奨される命名

10,000 Like 超えの圧倒的鉄板記事があるのだから、それを見ればよいんじゃないかな。

https://qiita.com/Ted-HM/items/7dde25dcffae4cdc7923

おしまい

本記事の対象読者は小学生である。

Acknowledgement

本記事は X(旧Twitter)の皆様の豊富な想像力にインスパイアされて勝手に執筆いたしました。

皆様
脚注
  1. この「汚物」という言葉以外に名状し難い冒涜的なコードは、あろうことか私がもっとも尊敬する先輩のひとりの、上のお口から捻り出された。「追記してください」と誇らしげに促す彼はもはや正気とは思えず、私は彼を狂気へと駆り立てた存在にただ恐怖しながら、彼の背後に潜む影が囁くのを聞いた。「コンプライアンス・ホットライン」と。 ↩︎

  2. 旧 Twitter の名称が「X」に変更になったのは、ググラビリティ以上にこの観点からだいぶ最悪寄りの最悪であると言える。 ↩︎

  3. 私の X アカウントのヘッダ画像で "I'm powerless against oppai" と言っている人。 ↩︎

  4. ちなみに少年のペニスは "membrum puerile"(メンブルム・ピュエリーレ)らしい。 ↩︎

  5. 国名ニジェール(Niger)は紙一重である。 ↩︎

  6. 原義や現在の意味を考えても、これを黒歴史化するのはさすがに言葉狩りだろうと個人的には思う。 ↩︎

  7. Python では list が予約語なので lst にせざるを得ない部分もある。私は若干 Haskell 文化から影響を受けているので、そこまで無情報なリストであれば xs を使う。 ↩︎

Discussion