プログラマーと仕事をしていく中で、いろいろと不思議なことはあるもので。
現職で耳にした記憶はないものの、突如「ほげーーー」と叫ぶプログラマーが身近におりました。
個人の口癖かと思ったら、サンプルプログラムにも度々「hoge」が出てくるではないですか。
…プログラマー社会には馴染みの言葉だということはわかった。
しかし。
唐突に「ほげ」と言われましても、デザイナーにはわかりませんがな。
「金赤1しっとるけ?」…と同様の業界用語ですか?
hoge(ほげ)はメタ構文変数
wikiを見れば答えが出る。ここで記事終了
サンプルプログラムの関数や変数が「hoge」なのは、「ここに適切な関数名(または変数名)を入れてね」ということ。
「hoge」自体に意味はない。…意味ないって、早く言ってよ
「横浜太郎」のような、役所にあるサンプル氏名と同じ扱いなので、そのまま使わず、適切な名前を考える必要がある。
他にもあるでよ。メタ構文変数
せっかくなので、どんなものがあるか調べてみる。
英語圏
- foo
- bar
- baz
- qux
- quux
- corge
- grault
- garply
- waldo
- fred
- plugh
- xyzzy
- thud
使い方は「foo」 から始まり、「bar」「baz」…と続いていく。
「foobar」という掛け合わせはあるが、**foofooやbarbarという重ね合わせ名はないらしい。
イギリス圏では、上記の他に「wibble」「wobble」「wubble」「flob」というのもあるとか。
Python
モンティ・パイソンにちなんで名付けられてるので、メタ構文変数もそれに則っているらしい。
- spam
- ham
- eggs
##日本
- hoge(ほげ)
- fuga(ふが)
- piyo(ぴよ)
- 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
だがしかし。最近はメタ構文変数が通じない(らしい)
ここにも世代の壁が!「何いってんのこの人?」とか言われてるよ
hogeしてるサンプルコードあるけど、hogeをどういう風に読み解いてるのだろうか。
けれど「hoge」がいらないということではない
最近は本当にありがたいもので、ちょっとググるとサンプルコードがいっぱい出てくる。
コピペで動かす事ができるのは簡単なものの、「考える」部分が少ないと「覚える・応用する」が難しくなるような気もする。
よく言われる「適切」な命名とは、プログラミング能力残したまま、器用に記憶喪失になった自分でも、途中アサインした他人が見ても、そのプログラムが何に使われているか推測できる名前にしろということ。
だから、その場限りの発明をするとコードレビューでシメられる。
命名規則を考えて作るためには、教えてもらう他に「経験する」ことが重要だと考える。
基本的な命名規則はあるけれど、状況によってはそのまま利用できず、環境に合わせた内容が必要になってくるからだ。
考えもせず、まるごとコピペするとその訓練ができない。
ただ、「hoge」「foo」などのメタ構文変数は、初心者に優しくないと否定的に見る話もある。
そこで代替案として出されていたのは、「a」「b」「x」「y」なので、これが初心者に優しいのかと言われると、うーん…。
あったらいいな。やさしいメタ構文変数
アドベントカレンダー向け記事にしたので、展開が苦しすぎるwww
他人様が考えた代替案が賛成できないなら、他の案を考えろ…ということで、根本的な話。
「適切」なメタ構文変数とはなんぞや?
書き換えを強烈に促すほどの力強さを持つ言葉。…オノマトペの中でも、万人が恥ずかしくて、書き換えの欲望を抑えられない響きを持つ言葉…そこまで行き着くと、ネタものしか思い浮かばない無教養なワタクシ。
しかし、その言葉が「メタ構文変数」として周知されていなければ、ウィットに富んだ言葉を使っても、まったく意味をなさない。
細か過ぎて伝わらないネタ構文変数は、奇妙な性癖持ちと誤解される可能性もある。…そんな誤解されるのイヤだ。
そうして、結局「hoge」に立ち返る。
世の中に周知されているということは、それだけでも偉大だ。
あったらいいな!というよりも、すでにあるんやでー…ということで、やさしいメタ構文変数「hoge」。異論は認める。
そもそも自分は、**キーボードで叩きやすいから「hoge」**だという理由を聞いてたんだけど。
…愛が生まれるかは状況による
#参考サイト
- メタ構文変数
- アリスとボブ
- 名無しの権兵衛
- 「hogehoge(ほげほげ)」とは?意味や使い方をご紹介
- 「hoge」の起源を求めて
- 【プログラミング】hogeはNG! メタ構文変数はわかりやすく!
- ほげを考えるページ
- Etymology of "Foo" | RFC(Request for Comments) 3092
-
「金赤」をM:100% Y:100%と説明することもあるが、それはちょっと間違い。プロセスカラー(CMYK)ではなく、調色済みインクを使用する。この調色済みインクのことを「特色」と呼ぶ。蛍光色なんかも「特色」。指定は「DIC」や「PANTONE」などの色見本を使用するが、DICの場合は「DIC156」「DIC565」あたりが金赤として使用されることが多いようだ。CMYKで近似色を指定するとすれば、やや黄色味が強いM:90%(もしくは80%) Y:100%と言ったところ。「金赤」は、人によって想像する色が若干変わるという、なんとも面倒な色でもある(正確にイメージを伝えたいなら色見本は必須)。そもそも、日本人は色の名称には微妙な感覚を持っていて、厳密には「緑」色の信号を「青」と言ったりする。これは昔の日本人が「青」も「緑」も「青」と言っていたことによるらしい。 ↩
-
「あしながおじさん(Daddy-Long-Legs)」は1912年に発表されたJean Websterの小説。世界名作劇場の作品にもなったので、知っている人も多い。主人公ジルーシャ・アボット(ジュディ)は孤児院育ち。男の子ばかり援助していた紳士が、彼女の書いた「ゆううつな水曜日」という作文を気に入り、女子大への進学を援助することになった。援助の見返りとして、毎月学業の報告を義務付けられており、その手紙で呼びかける名前が「John Smith」。メタ構文変数な名前が気に入らなかったジュディは、いろいろな名前を考える。曰く「女の子嫌いさん」「お金持ちさん」などなど。最終的に、偶然見かけた紳士の影の手足が「ガガンボ」のように長かったので、「生涯変わらない特性」という事で「あしながおじさん」と命名したのだった。 ↩