ほげー、今日はクラメソの創立記念日だって。foo!

2018.07.07

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。ラノベタイトルなJOINブログを書いたら社内をざわつかせてしまったしろたです。

入社して早1週間が過ぎました。 私としてはかなり濃厚な1週間で、こんなに時間が過ぎるのが遅く感じたのは久々でした。 肌で久々に感じた相対性理論。

さて。入社して早々、クラスメソッドの創立記念日を迎える事となりました。おめでとうございます! IT技術のみならず、様々な方面で物事が大きく、素早く進歩していっていると感じます。 それと同じくらい、いや時には追い越そうと言う勢いで日々技術を磨き最新のトレンドに乗って行く クラスメソッドのこれからがとても楽しみでなりません。 勿論、私もその一人となって頑張っていかねばな、と凄い皆さんに囲まれて日々過ごしながら 考えさせられております。

ポエムおしまい!後は、技術ブログにてまたお会い致しましょう……と言いたいところですが。

そう。気付いて頂けただろうか。「ほげー」「foo」……

ひよっこエンジニアあるある:ググったコマンドの例文に使われている「hoge」「foo」が気になる

気になるんですよ。特に、インフラ屋から入った私はこの 「タマ」「ポチ」「Uncle Sam」みたいな単語が気になって仕方がありませんでした。 そこで、今回はこの「hoge」や「foo」って何者?と言う小噺をさせて頂こうと思います。

「hoge」や「foo」の正式名称

まずは、ネット上の大辞典、Wikipediaで調べてみました。

メタ構文変数(メタこうぶんへんすう、metasyntactic variable)はプログラミング言語の記述で使われる識別子の一種。サンプルプログラムなどで意味のない名前が必要な場合に利用される、「意味のない名前」であることが広く知られた識別子のことである。

なるほど。メタ構文変数と呼ばれる、識別子の一種だそうです。 識別子は、簡単に説明するとある集合体の中から特定のものを指し示す時に使う文字や文字列の事です。 私がよくこのメタ構文変数を見かけていたのは、任意のユーザを指定する例や任意のファイルを指定する例などででした。hoge@10.0.0.1〜とか、foo.txt bar.txtとか。 まさに、上に記述してある通りの「意味のない名前」として、です。 確かに、誰もが「これは適当な名前だから、使う時は適宜自身のやりたい事に合わせて変更する」と 見ただけで分かると言う意味で、このメタ構文変数は便利なものです。 きっと全世界どこでも使われているのでは、そう思い、ふと気付きました。

「hogeって、思いっきりローマ字読みじゃない?外国でも通じるのこれ?」

メタ構文変数の系統(ファミリー)

そう、hoge(ほげ)は主に日本で使用されるメタ構文変数として知られています。 他にも、hogehoge(ほげほげ)やfuga(ふが)、piyo(ぴよ)なども日本で使用されるメタ構文変数なんだとか。 ただ、hoge→hogehogeといった名前を重ね合わせて使用する事はあるらしいですが、 hoge→hogepiyoなどと言った、別系統のメタ構文変数の名前の重ね合わせはあまりしないらしいです。 特に明確なルールは無いのに、何だか面白いですね。 また、hoge以外にもfugaやpiyoなんて、擬音っぽい表現が多いのも面白いです。 ふがふがとかほげほげとか、確かに明確に物を指すのをボカす際に使う擬音って感じのイメージです。 このページを見ると、hogeに関してはもっと知識が身に付くかもしれません。

さて、主に日本で使用されるメタ構文変数があるなら、勿論主に外国で使用されるメタ構文変数があると 言う事になるでしょう。その通りです。

冒頭で説明した「foo」、これは英語圏由来のメタ構文変数です。 英語圏由来は他にも「bar」や「foobar」があります。 面白いのは、日本と真逆で、こちらは「foofoo」「barbar」と言った重ね合わせ名は あまり見られないのだそうです。 同じ人間が考えたものなのに、こうも真逆の傾向が出るのは中々に興味深くないですか? このように、日本ではhoge・英語圏ではfooと言った、どこでは何がよく使われると言った 系統(ファミリー)と言うのが存在します。

国名
メタ構文変数
由来
フランス
toto
男性人名アントワーヌAntoineの愛称がトト。

かつて顔文字は「トトの顔」と呼ばれていた
イタリア
pippo
プルート(冥王星)の愛称
ドイツ
bla,blub
ブラブラ、と言うヨーロッパの言語で通常おしゃべりを表すシノニム

ヨーロッパではこんなメタ構文変数もあるそうです。文化が違うとピンと来ないものも多いですよね。

他にも、Apacheの設定ファイルに例として載っている

ServerName www.example.com:80 ↑これ。これも、ソフトウェアドキュメンテーションで例示の為に使う、 ドメインやURLのサンプルとして用いるメタ構文変数です。hogehoge.comと言った感じですね。

まとめ

普段何気無く見ていたものも、改めて調べてみると意外な事実が出てくるもんだな、と思いました。 理由無く存在するものなんて無いのではないでしょうか。

意味を知ったからどうなる、と言ったものでは無いですが知っておくと心の何かが満足する知識。 こう言った知識も大切に出来る人間になりたいです。 と、言う訳で時間ギリギリになってしまいましたが、クラスメソッドの創立記念日のお祝いも兼ねて、 この記事を投稿させて頂こうと思います。

foo!