メタ構文変数

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

## 概要
プログラミング言語では識別子（変数や関数などの名前のこと）を自由に定義できる。しかし、サンプルプログラムなどでまったく意味の無い変数に付ける適当な名前がないために困ってしまうことがある。適当にどんな名前でも構わないからといって、例えば「wikipe」などとつけると、そのプログラムを見た他の人はその変数に何の意味があるのかと悩むことになる（例の場合ではwikipediaに関連があると連想したり、wikipeと言う特別な変数があると勘違いする）。そのようなときに、「abcd」や、「**hoge**」（**ほげ**、日本で使われる）をはじめとするメタ構文変数を利用する。メタ構文変数はプログラマの間で意味を持たないサンプル用の変数名であると認知されているので、無用な混乱が避けられるほか、書く側も苦労して名前をひねりだす必要がなくなる。

厳密には変数名ではない識別子（特定言語におけるクラス名やモジュール名など）についてhoge等が使われた場合でも「メタ構文変数」と呼ぶ。また整数リテラルや一般文書の人名記載例等、明らかに識別子でないものや、プログラミングに限定されない分野で用いられる類似概念も含めて「メタ構文変数」と呼ばれることもある。

## メタ構文変数の例
### 識別子
狭義のメタ構文変数。

メタ構文変数には系統（ファミリー）があり、ひとつの文脈ではひとつのファミリーの変数群を利用することが多い。メタ構文文法の系統は、特定言語圏や特定分野などの一部の文化圏に限定される場合も多い。したがって、各国語が独自のメタ構文変数を導入していることも多い（英語版を参照）。

#### fooとbar

英語圏由来として、ひろく使用されているものに、foo、bar の系統がある。これは「**foo**」「**bar**」「**baz**」「**qux**」「**quux**」「**[[foobar]]**」などを使うもので、まずfooを使い、ふたつめ以降、bar、baz…、と使う。foobarといった掛け合わせ名は作るが、foofoo、barbarなどの重ね合わせ名は見られない。

なお（2001年4月1日、ジョークRFC）では「foo」「bar」「foobar」「baz」「qux」「quux」「corge」「grault」「garply」「waldo」「fred」「plugh」「xyzzy」「thud」が挙げられており、イギリス圏では加えて「wibble」「wobble」「wubble」「flob」等も用いられる。

#### spamとham
プログラミング言語Pythonでは、メタ構文変数に spam, ham, eggs などを使う。これは Python という名前自体が、モンティ・パイソンにちなんで名付けられたことにちなむ。

#### hogeとpiyo
日本のみで使用されるメタ構文変数として「**hoge**（**ほげ**）」「**fuga**（ふが）」「**piyo**（ぴよ）」「**hogera**（ほげら）」「**hogehoge**（**ほげほげ**）」などがある。

この系統のメタ構文変数は、まずhogeを使い、fugaはhogeを使用したあとの2つ目のメタ構文変数として使われる。hogeを使用せずにfugaだけ使用されることはまずない。
同様に変数のバリエーションを増やすため、piyoやhogeraと発展していく。

メタ構文変数はしばしば名前を重ねたり、2つのメタ構文変数名を繋げたりして名称のバリエーションを作るが、hoge系統では hogehoge、piyopiyoなどの重ね合わせ名のバリエーションがほとんどであり、hogepiyoといった掛け合わせ名はあまり見られない。これはfoo、bar系統とは対照的である。

hogeは時期としては1970年代終わりから遅くとも1980年代の前半ごろには、複数の人間が独立して使用を始めていたという証言がある。

#### ヨーロッパ
フランスではtotoが多く使われる。顔文字もかつて「トトの顔」と呼ばれた（iPhoneで絵文字が普及した2010年代以降はemoji, emoticonの呼び方が一般的である）。もともと男性人名アントワーヌAntoineの愛称がトトであり（イタリアの俳優トトなどがいる。これはイタリア人名アントニオの愛称である）、「トトの冗談」という架空の人名の冗談小噺（吉四六話などに相当）に使われている。メタ構文変数としてはまずtotoを使い、次にtete, titi, tutu, tataなどが用いられる。テテもまた愛称であり、セネガル出身の歌手テテなどがいる。

イタリアではpippoが使われる。これも男性名の愛称である（フィリッポ・インザーギなど）。

ドイツではbla, blubが使われる。2度目以降はblablaなどと繰り返す。ブラブラとは通常おしゃべりを表すシノニムとして、ヨーロッパの多くの言語で用いられる。

### 数字
サンプルプログラムに使われる無意味な整数リテラルにも同様の概念が存在し、「23」や「42」、「0xDEADBEEF」などが用いられる。「42」は生命、宇宙、そして万物についての究極の疑問の答えに由来する。

### 人名
プログラミングに限定されず広く利用されるメタ構文変数的な概念に人名がある。

日本語圏では「○○**[[太郎]]**」「○○**[[花子 (人名)|花子]]**」などが使われる。○○の部分には、記入を促す団体名をもじった名字や「**[[日本]]**」「**[[山田]]**」（日本太郎、山田太郎等）等が用いられることが多い。

英語圏ではアリスとボブがあり、日本語でも「**アリス**」や「**ボブ**」として使われることがある。物理学や通信工学あるいは暗号学で、プロトコル等を解説するときにエンティティの名前として使われる。コンピュータ分野、特にハッカー文化においては、「**J. Random Hacker**」、「**[[フレッド|Fred]]**」（原始家族フリントストーンの主人公の名で、J. Random Hackerのいとこであるとされる）、「**[[バーニー|Barney]]**」（これも原始家族フリントストーンの主人公の名）が好んで用いられる。

### 企業・ブランド名
#### ACME
ルーニー・テューンズの「ロードランナー」で架空の企業名、ブランド名としてACME（アクメ・コーポレーション、アクメ印）が使われた。以降のアニメでも「アクメ」が架空の企業名、ブランド名として使われている。マイクロソフトのデータベース製品のサンプルデータとしてもACMEが使われていた。ただし、国家や共同体で架空の企業名として予約はされていないため、確実に架空であることは保証されない。

### ドメイン
**[[example.com]]** および **example.net**, **example.org**は、 の 3 章で予約されているセカンドレベルドメイン名である。 これらはソフトウェアドキュメンテーション（ソフトウェア文書）における例示のために使われるもので、実際に登録することはできない。ドメインやURLのサンプルなどで用いる。

また、国際化ドメイン名のうち日本語ドメインの場合は「ドメイン名例.JP」が例示用に予約されている。

## メタ構文変数由来の固有名詞
メタ構文変数名が固有名詞となることがある。

### xyzzy
xyzzy（エックス・ワイ・ズィズィーまたはズィズィー）は、もともと英語圏のメタ構文変数だが、テキストエディタXyzzy（読みかた不定）として固有名詞としても使われている。

### foobar2000
foobar2000の名前も同じく英語圏のメタ構文変数であるfoobarに由来する。

## 脚注

## 関連項目
* テストパターン / テストパターン (放送)
* レナ
* Lorem ipsum
* 名無しの権兵衛
* John Doe
* Placeholder name
* 暗号理論

## 外部リンク
* ほげを考えるページ（消滅したページの転載）
* 「hoge」の起源を求めて
* 
* RFC3092（日本語訳）