メタ構文変数 【metasyntactic variable】 hoge / foo
概要
メタ構文変数(metasyntactic variable)とは、プログラミング言語のサンプルコードなどで、例示のために用いられる特に意味のない名前。言語仕様上のキーワードと一目で区別できるよう、慣用的に「無意味であると広く知られている」文字列を用いることが多い。「変数を宣言するには var hoge; のように記述します」といったように、説明やサンプルプログラムの中で変数名などの識別子に何か具体的な例示が必要な場合に用いられる。
その際、「var Variable;」のように当該分野に関連する何らかの意味のある単語やフレーズを用いると、どの部分が言語上の役割が与えられたキーワードであるのか不明瞭になってしまうため、いかにも意味のない単純な例示であることが伝わるような表記が好まれる。
hoge/fuga/piyo
日本では「hoge」(「ほげ」と読む)というメタ構文変数がよく用いられる。由来ははっきりしないが1980年代頃にはすでに使われていたとされる。同じコード中に複数のメタ構文変数が必要な場合、慣習的に2つ目は「fuga」(ふが)、3つ目は「piyo」(ぴよ)を使うことが多い。
これ以上同時に使う機会は少なく4つ目以降にはっきりした慣例はないが、「hogera」(ほげら)、「hogehoge」(ほげほげ)などが多いようである。それ以上は「piyopiyo」「hogehogehoge」のように3つ目までの単語を繰り返し連結して用いることが多い。
foo/bar/baz
英語圏では「foo」(フー)というメタ構文変数が有名で、2つ目は「bar」(バー)、3つ目は「baz」(バズ)となる。さらに必要な場合は「qux」(クァックス)、「quux」(クークス)と続き、その後は「quuz」や「quuux」、「foobar」などが用いられる。fooとbarはもともと「foobar」という一つの単語で、コンピュータの発明以前から例示用の無意味な単語として1930年代頃から使われていたとされている。
なお、「quux」の後に「quuux」と続ける場合は、さらに「quuuux」「quuuuux」と「u」の数を増やすことでいくらでも変数名を作り出すことができる。しかし、「u」の連続があまりに長いと一目で判別し辛いことや、それほど多くの変数が同時に登場する状況では意味論的な命名の方が適している場合が多いことなどから、実用上は「quuuuuux」(fooから数えて9番目)のような長大な変数名が用いられることは稀である。