LoginSignup
12
4

More than 3 years have passed since last update.

プログラマーと仕事をしていく中で、いろいろと不思議なことはあるもので。

現職で耳にした記憶はないものの、突如「ほげーーー」と叫ぶプログラマーが身近におりました。
個人の口癖かと思ったら、サンプルプログラムにも度々「hoge」が出てくるではないですか。

…プログラマー社会には馴染みの言葉だということはわかった。

しかし。

唐突に「ほげ」と言われましても、デザイナーにはわかりませんがな。
「金赤1しっとるけ?」…と同様の業界用語ですか?

hoge(ほげ)はメタ構文変数

wikiを見れば答えが出る。ここで記事終了:laughing:

サンプルプログラムの関数や変数が「hoge」なのは、「ここに適切な関数名(または変数名)を入れてね」ということ。
「hoge」自体に意味はない。…意味ないって、早く言ってよ:kissing:

「横浜太郎」のような、役所にあるサンプル氏名と同じ扱いなので、そのまま使わず、適切な名前を考える必要がある。

他にもあるでよ。メタ構文変数

せっかくなので、どんなものがあるか調べてみる。

英語圏

  1. foo
  2. bar
  3. baz
  4. qux
  5. quux
  6. corge
  7. grault
  8. garply
  9. waldo
  10. fred
  11. plugh
  12. xyzzy
  13. thud

使い方は「foo」 から始まり、「bar」「baz」…と続いていく。
foobar」という掛け合わせはあるが、**foofooやbarbarという重ね合わせ名はないらしい。

イギリス圏では、上記の他に「wibble」「wobble」「wubble」「flob」というのもあるとか。

Python

モンティ・パイソンにちなんで名付けられてるので、メタ構文変数もそれに則っているらしい。

  • spam
  • ham
  • eggs

日本

  1. hoge(ほげ)
  2. fuga(ふが)
  3. piyo(ぴよ)
  4. hogera(ほげら)

…「ほげ」以外、見たことないよ。

英語圏と同じお作法で、上から順番にメタ構文変数として使用される。
hoge」を吹っ飛ばして「fuga」を使うことはないそう。
hogera」まで使用した場合、次は「hogehoge」「piyopiyo」とバリエーションを増やす(ここは英語圏とちょっと違う)。

日本人ってオノマトペ大好きだよねw

人名

ここはちょっと脱線。
英語名の場合、それぞれ役割があるのが面白い。

名前 役割
Alice & Bob 大抵は、AliceがBobにメッセージを送る
Carol, Charlie 通信における第三当事者
Dave, Ellen, Frank 第四当事者
Eve 盗聴者。AliceとBobのメッセージを立ち聞きするが改ざんはしない
Isaac IPS
Ivan 発行者
Justin 司法体系
Mallory, Marvin, Mallet 邪悪な攻撃者。Eveと異なり、メッセージを改ざんしたり、攻撃したりする
Matilda 商人。電子取引・金融関係で使われる
Oscar 敵対者。Malloryと同様
Pat, Peggy 証明者
Victor 検証者
Plod(Officer Plod) 法執行官吏
Steve 電子透かしで参照される
Trent 信頼された調停者。中立の第三者
Trudy 侵入者。Malloryの代わりに使う
Walter 見張り番
Zoe 暗号プロトコルの最後の当事者

日本語だと「太郎」「花子」くらいしか思いつかないけど、英語はなかなかバラエティに富んでいる。
Johon Doe(ジョン・ドゥ)」や「John Smith(ジョン・スミス)」も、メタ構文変数と言える。

Johon Doe」は、女性だと「Jane(ジェーン)」に置き換わる。
日本語では「名無しの権兵衛」に相当するが、身元不明者に使われるので、登場場面の印象はあまり良くない…。

John Smith」は「あしながおじさん」の冒頭で登場する、姿の見えない支援者の仮名でもある。
主人公のジュディは、独創性がないとかなんとか言って、偶然見かけた彼らしき人影から「あしながおじさん」と名前を付け替える。

そうか…ジュディは正しい関数名を付けた2んだなw

だがしかし。最近はメタ構文変数が通じない(らしい)

ここにも世代の壁が!「何いってんのこの人?」とか言われてるよ:joy:
hogeしてるサンプルコードあるけど、hogeをどういう風に読み解いてるのだろうか。

けれど「hoge」がいらないということではない

最近は本当にありがたいもので、ちょっとググるとサンプルコードがいっぱい出てくる。
コピペで動かす事ができるのは簡単なものの、「考える」部分が少ないと「覚える・応用する」が難しくなるような気もする。

よく言われる「適切」な命名とは、プログラミング能力残したまま、器用に記憶喪失になった自分でも、途中アサインした他人が見ても、そのプログラムが何に使われているか推測できる名前にしろということ。
だから、その場限りの発明をするとコードレビューでシメられる。

命名規則を考えて作るためには、教えてもらう他に「経験する」ことが重要だと考える。
基本的な命名規則はあるけれど、状況によってはそのまま利用できず、環境に合わせた内容が必要になってくるからだ。
考えもせず、まるごとコピペするとその訓練ができない。

ただ、「hoge」「foo」などのメタ構文変数は、初心者に優しくないと否定的に見る話もある。
そこで代替案として出されていたのは、「a」「b」「x」「y」なので、これが初心者に優しいのかと言われると、うーん…。

あったらいいな。やさしいメタ構文変数

アドベントカレンダー向け記事にしたので、展開が苦しすぎるwww

他人様が考えた代替案が賛成できないなら、他の案を考えろ…ということで、根本的な話。

「適切」なメタ構文変数とはなんぞや?

書き換えを強烈に促すほどの力強さを持つ言葉。…オノマトペの中でも、万人が恥ずかしくて、書き換えの欲望を抑えられない響きを持つ言葉…そこまで行き着くと、ネタものしか思い浮かばない無教養なワタクシ。

しかし、その言葉が「メタ構文変数」として周知されていなければ、ウィットに富んだ言葉を使っても、まったく意味をなさない
細か過ぎて伝わらないネタ構文変数は、奇妙な性癖持ちと誤解される可能性もある。…そんな誤解されるのイヤだ。

そうして、結局「hoge」に立ち返る。
世の中に周知されているということは、それだけでも偉大だ。

あったらいいな!というよりも、すでにあるんやでー…ということで、やさしいメタ構文変数「hoge」。異論は認める。

そもそも自分は、キーボードで叩きやすいから「hoge」だという理由を聞いてたんだけど。
…愛が生まれるかは状況による:frowning2:

参考サイト


  1. 「金赤」をM:100% Y:100%と説明することもあるが、それはちょっと間違い。プロセスカラー(CMYK)ではなく、調色済みインクを使用する。この調色済みインクのことを「特色」と呼ぶ。蛍光色なんかも「特色」。指定は「DIC」や「PANTONE」などの色見本を使用するが、DICの場合は「DIC156」「DIC565」あたりが金赤として使用されることが多いようだ。CMYKで近似色を指定するとすれば、やや黄色味が強いM:90%(もしくは80%) Y:100%と言ったところ。「金赤」は、人によって想像する色が若干変わるという、なんとも面倒な色でもある(正確にイメージを伝えたいなら色見本は必須)。そもそも、日本人は色の名称には微妙な感覚を持っていて、厳密には「緑」色の信号を「青」と言ったりする。これは昔の日本人が「青」も「緑」も「青」と言っていたことによるらしい。 

  2. あしながおじさん(Daddy-Long-Legs)」は1912年に発表されたJean Websterの小説。世界名作劇場の作品にもなったので、知っている人も多い。主人公ジルーシャ・アボット(ジュディ)は孤児院育ち。男の子ばかり援助していた紳士が、彼女の書いた「ゆううつな水曜日」という作文を気に入り、女子大への進学を援助することになった。援助の見返りとして、毎月学業の報告を義務付けられており、その手紙で呼びかける名前が「John Smith」。メタ構文変数な名前が気に入らなかったジュディは、いろいろな名前を考える。曰く「女の子嫌いさん」「お金持ちさん」などなど。最終的に、偶然見かけた紳士の影の手足が「ガガンボ」のように長かったので、「生涯変わらない特性」という事で「あしながおじさん」と命名したのだった。 

12
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
4