メタ構文変数 【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

英語圏では1970年前後から広まったとされる「foo」(フー)というメタ構文変数が有名で、2つ目は「bar」(バー)、3つ目は「baz」(バズ)となる。「foo」と「bar」はもともと「foobar」という一つの単語で、コンピュータの発明以前から例示用の無意味な単語として1930年代頃から使われていたとされている。

さらに必要な場合は、4つ目を「qux」(クァックス)、5つ目を「quux」(クークス)とすることが多い。その後は、6つ目から順に「corge」(コージ)、「grault」(グラウト)、「garply」(ガープリー)、「waldo」(ウォルドー)、「fred」(フレッド)、「plugh」(プルーフ)、「xyzzy」(ズィズィー)、「thud」(サッド)と続ける場合と、順序は特に気にせず「quuz」(クーズ)や「quuux」(クークス)、「foobar」(フーバー)などを用いる場合がある。

なお、「quux」の後に「quuux」と続ける場合は、さらに「quuuux」「quuuuux」と「u」の数を増やして命名していくこともある。しかし、「u」の連続があまりに長いとプログラム上で判別しにくいことや、それほど多くの変数が同時に登場する状況では数字や意味論的な要素を取り入れた方が分かりやすいことなどから、実用上は「quuuuuux」(fooから数えて9番目)のような長大な変数名が用いられることは稀である。

(2025.5.28更新)

プログラミングの用語一覧